Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -r395522dffef1348e176564925656012f529c1910 -rb777859b2667c350c6ca9fda60a668c9eb5fe02d --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision 395522dffef1348e176564925656012f529c1910) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision b777859b2667c350c6ca9fda60a668c9eb5fe02d) @@ -47,21 +47,6 @@ #define POS_C_FROM_ZERO_CNT VALVE_OFFEST_FROM_EDG_CNT ///< Position C from zero position in counts. #define POS_D_PARTIAL_CLOSE_FROM_ZERO_CNT ( POS_C_FROM_ZERO_CNT + 32 ) ///< Position D partial close from zero position in counts. -/// Valve controller states -typedef enum Valve_Control_States -{ - VALVE_STATE_WAIT_FOR_POST = 0, ///< Valve state wait for POST. - VALVE_STATE_RESET_VALVE, ///< Valve state reset valve. - VALVE_STATE_RESET_ENCODER, ///< Valve state reset encoder. - VALVE_STATE_ENABLE_VALVE, ///< Valve state enable valve. - VALVE_STATE_HOMING_NOT_STARTED, ///< Valve state homing not started. - VALVE_STATE_HOMING_FIND_ENERGIZED_EDGE, ///< Valve state homing find energized edge. - VALVE_STATE_HOMING_FIND_DEENERGIZED_EDGE, ///< Valve state homing find de-energized edge. - VALVE_STATE_IDLE, ///< Valve state idle. - VALVE_STATE_IN_TRANSITION, ///< Valve state in transition. - NUM_OF_VALVE_STATES, ///< Number of valve exec states. -} VALVE_STATE_T; - /// Valve status structure typedef struct { @@ -252,6 +237,31 @@ /*********************************************************************//** * @brief + * The getValveState function returns the current state of a given valve. + * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if given valve is invalid. + * @details \b Inputs: currentValveStates[] + * @details \b Outputs: none + * @param valve ID of valve to get current state of + * @return Current state of the given valve + *************************************************************************/ +VALVE_STATE_T getValveState( VALVE_T valve ) +{ + VALVE_STATE_T result = VALVE_STATE_HOMING_NOT_STARTED; + + if ( valve < NUM_OF_VALVES ) + { + result = currentValveStates[ valve ].controlState; + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_TD_VALVES_INVALID_VALVE2, (U32)valve ) + } + + return result; +} + +/*********************************************************************//** + * @brief * The execValvesController function executes the valves state machine. * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if a valve control state is invalid. * @details \b Inputs: currentValveStates[]