Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -r22176ce95e49213c48454f34ddf5d29b8109f2cb -rcb4d35cc50df2d3cc9e828cd92e53cf456ca9b9d --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision 22176ce95e49213c48454f34ddf5d29b8109f2cb) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision cb4d35cc50df2d3cc9e828cd92e53cf456ca9b9d) @@ -44,7 +44,8 @@ static U32 valveStateMismatchCounter = 0; ///< Initialize valve state mismatch counter. 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. @@ -204,14 +205,14 @@ break; case VALVE_STATE_R1_C_TO_NC: - if ( ( valveID == VRD ) || ( valveID == VRF ) ) + if ( ( valveID == VRF ) ) { result = TRUE; } break; case VALVE_STATE_R2_C_TO_NO: - if ( ( valveID == VRD ) || ( valveID == VRF ) ) + if ( ( valveID == VRF ) ) { result = TRUE; } @@ -370,7 +371,7 @@ if ( valveID < NUM_OF_VALVES ) { - if ( checkValveStateName( valveID, valveStateName ) ) + if ( TRUE == checkValveStateName( valveID, valveStateName ) ) { // If a delayed state change is already pending for this valve, execute it now before setting a new delayed state change if ( pendingValveStateChangeCountDowns[ valveID ] > 0 ) @@ -397,22 +398,56 @@ * @details Inputs: valveStates[] * @details Outputs: none * @param valveID ID of valve to get state for - * @return the current valve state for given valve + * @return the current valve state for given valve in enum *************************************************************************/ -U32 getValveState( U32 valveID ) -{ - U32 valveState = DEENERGIZED; +VALVE_STATE_NAMES_T getValveState( VALVES_T valveID ) +{ + VALVE_STATE_NAMES_T name; if ( valveID < NUM_OF_VALVES ) { - valveState = getU32OverrideValue( &valveStates[ valveID ] ); + U32 valveState = getU32OverrideValue( &valveStates[ valveID ] ); + + // Convert the bit status of the valve to the valve name + switch ( valveID ) + { + case VPI: + case VBF: + case VRD1: + case VRD2: + case VSP: + name = ( DEENERGIZED == valveState ? VALVE_STATE_CLOSED : VALVE_STATE_OPEN ); + break; + + case VPD: + name = ( DEENERGIZED == valveState ? VALVE_STATE_DRAIN_C_TO_NO : VALVE_STATE_OPEN_C_TO_NC ); + break; + + case VPO: + name = ( DEENERGIZED == valveState ? VALVE_STATE_NOFILL_C_TO_NO : VALVE_STATE_FILL_C_TO_NC ); + break; + + case VDR: + case VRC: + name = ( DEENERGIZED == valveState ? VALVE_STATE_DRAIN_C_TO_NO : VALVE_STATE_RECIRC_C_TO_NC ); + break; + + case VRI: + case VRO: + name = ( DEENERGIZED == valveState ? VALVE_STATE_R1_C_TO_NO : VALVE_STATE_R2_C_TO_NC ); + break; + + case VRF: + name = ( DEENERGIZED == valveState ? VALVE_STATE_R2_C_TO_NO : VALVE_STATE_R1_C_TO_NC ); + break; + } } else { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_ID, valveID ) } - return valveState; + return name; } /*********************************************************************//** @@ -508,9 +543,9 @@ { if ( TRUE == isTestingActivated() ) { - result = TRUE; - valveStates[ valveID ].ovData = value; - valveStates[ valveID ].override = OVERRIDE_KEY; + valveStates[ valveID ].ovData = value; + valveStates[ valveID ].override = OVERRIDE_KEY; + result = TRUE; } }