Index: firmware/App/Controllers/RinsePump.c =================================================================== diff -u -r60db0506b1a90ed00b0e83159f6e7510ab6e4b7b -r29459d36699f1dd861de9a9c55bb7c3ec16e1864 --- firmware/App/Controllers/RinsePump.c (.../RinsePump.c) (revision 60db0506b1a90ed00b0e83159f6e7510ab6e4b7b) +++ firmware/App/Controllers/RinsePump.c (.../RinsePump.c) (revision 29459d36699f1dd861de9a9c55bb7c3ec16e1864) @@ -64,6 +64,7 @@ static RINSE_PUMP_STATE_T handleRinsePumpOffState( void ); static RINSE_PUMP_STATE_T handleRinsePumpOnState ( void ); +static void monitorRinsePumpSpeed( void ); static void publishRinsePumpData( void ); static void setRinsePumpPwmCount( RINSE_PUMP_ID_T pumpId, U32 pwmCount ); Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -re734f2d5dbdf3fa44a46892d1207e1f0859ed242 -r29459d36699f1dd861de9a9c55bb7c3ec16e1864 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision e734f2d5dbdf3fa44a46892d1207e1f0859ed242) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision 29459d36699f1dd861de9a9c55bb7c3ec16e1864) @@ -216,6 +216,37 @@ U08 readValveIOStates = getFPGAIOValveStates(); U08 readValveFPStates = getFPGAFPValveStates(); + // Update sensed valve states from FPGA readback (unless overridden via override mechanism) + for ( i = FIRST_HYD_VALVE; i <= LAST_HYD_VALVE; i++ ) + { + U16 mask = (U16)( 0x01u << i ); + valveSensedStates[ i ].data = ( ( readValvesStates & mask ) != 0u ? ENERGIZED : DEENERGIZED ); + } + + for ( i = FIRST_BC_VALVE; i <= LAST_BC_VALVE; i++ ) + { + U08 mask = (U08)( 0x01u << ( i - FIRST_BC_VALVE ) ); + valveSensedStates[ i ].data = ( ( readValveBCStates & mask ) != 0u ? ENERGIZED : DEENERGIZED ); + } + + for ( i = FIRST_SP_VALVE; i <= LAST_SP_VALVE; i++ ) + { + U08 mask = (U08)( 0x01u << ( i - FIRST_SP_VALVE ) ); + valveSensedStates[ i ].data = ( ( readValveSpStates & mask ) != 0u ? ENERGIZED : DEENERGIZED ); + } + + for ( i = FIRST_IO_VALVE; i <= LAST_IO_VALVE; i++ ) + { + U08 mask = (U08)( 0x01u << ( i - FIRST_IO_VALVE ) ); + valveSensedStates[ i ].data = ( ( readValveIOStates & mask ) != 0u ? ENERGIZED : DEENERGIZED ); + } + + for ( i = FIRST_FP_VALVE; i <= LAST_FP_VALVE; i++ ) + { + U08 mask = (U08)( 0x01u << ( i - FIRST_FP_VALVE ) ); + valveSensedStates[ i ].data = ( ( readValveFPStates & mask ) != 0u ? ENERGIZED : DEENERGIZED ); + } + // Verify read back FPGA valve states match last commanded valve states if ( ( readValvesStates != commandedValvesStates ) || ( readValveBCStates != commandedBCValveStates ) || Index: firmware/App/Controllers/Valves.h =================================================================== diff -u -rccdab403fc0fb315e52857ac7968ab5185aa55b7 -r29459d36699f1dd861de9a9c55bb7c3ec16e1864 --- firmware/App/Controllers/Valves.h (.../Valves.h) (revision ccdab403fc0fb315e52857ac7968ab5185aa55b7) +++ firmware/App/Controllers/Valves.h (.../Valves.h) (revision 29459d36699f1dd861de9a9c55bb7c3ec16e1864) @@ -32,8 +32,8 @@ /// Enumeration of available valve state names per valve type (from SA and DD SRS documents). typedef enum ValveStateNames { - VALVE_STATE_OPEN = 0, ///< Open valve state, - VALVE_STATE_CLOSED, ///< Closed valve state, + VALVE_STATE_CLOSED = 0, ///< Closed valve state, + VALVE_STATE_OPEN, ///< Open valve state, NUM_OF_VALVE_STATES ///< number of valve states } VALVE_STATE_NAMES_T;