Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -rcb4d35cc50df2d3cc9e828cd92e53cf456ca9b9d -r8074ecece0b11532c173ad951a98036f0c54ca52 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision cb4d35cc50df2d3cc9e828cd92e53cf456ca9b9d) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision 8074ecece0b11532c173ad951a98036f0c54ca52) @@ -45,7 +45,6 @@ static U32 pendingValveStateChanges[ NUM_OF_VALVES ]; ///< Delayed (pending) valve state changes. static U32 pendingValveStateChangeCountDowns[ NUM_OF_VALVES ]; ///< Delayed (pending) valve state change count down timers (in task intervals). -static VALVE_STATE_NAMES_T valveCurrentStateName[ NUM_OF_VALVES ]; ///< Currently valve state name. static OVERRIDE_U32_T valveStates[ NUM_OF_VALVES ]; ///< Currently commanded valves states. static OVERRIDE_U32_T valvesStatesPublishInterval = { VALVES_STATE_PUB_INTERVAL, VALVES_STATE_PUB_INTERVAL, 0, 0 }; ///< Interval (in ms/task interval) at which to publish valves state to CAN bus. @@ -54,7 +53,8 @@ static BOOL checkValveStateName( VALVES_T valve, VALVE_STATE_NAMES_T valveStateName ); static U32 convertValveStateNameToValveState(VALVE_STATE_NAMES_T valveStateName); static U16 fromU32ArrayToU16( void ); -static void publishValvesStates( void ); +static void publishValvesStates( void ); +static U32 getValveState( U32 valveID ); /*********************************************************************//** * @brief @@ -247,7 +247,7 @@ U32 i; // flag valves that are currently commanded to be energized - for ( i = 0; i < NUM_OF_VALVES; i++) + for ( i = 0; i < NUM_OF_VALVES; i++ ) { result |= ( getValveState( i ) == ENERGIZED ? 0x0001 << i : 0 ); } @@ -394,13 +394,13 @@ /*********************************************************************//** * @brief - * The getValveState function gets the current valve state for given valve. + * The getValveStateName function gets the current valve state enum for given valve. * @details Inputs: valveStates[] * @details Outputs: none * @param valveID ID of valve to get state for * @return the current valve state for given valve in enum *************************************************************************/ -VALVE_STATE_NAMES_T getValveState( VALVES_T valveID ) +VALVE_STATE_NAMES_T getValveStateName( VALVES_T valveID ) { VALVE_STATE_NAMES_T name; @@ -470,6 +470,30 @@ valvesStatesPublicationTimerCounter = 0; } +} + +/*********************************************************************//** + * @brief + * The getValveState function gets the current valve state for given valve. + * @details Inputs: valveStates[] + * @details Outputs: none + * @param valveID ID of valve to get state for + * @return the current valve state for given valve + *************************************************************************/ +static U32 getValveState( U32 valveID ) +{ + U32 valveState = DEENERGIZED; + + if ( valveID < NUM_OF_VALVES ) + { + valveState = getU32OverrideValue( &valveStates[ valveID ] ); + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_ID, valveID ) + } + + return valveState; }