Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -r046bc2b62cf942b7e846fa5bff698b94238edf24 -r21bb6355d9aec49824b63880c23f6d7034e573d1 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision 046bc2b62cf942b7e846fa5bff698b94238edf24) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision 21bb6355d9aec49824b63880c23f6d7034e573d1) @@ -213,6 +213,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 ) || @@ -347,7 +378,8 @@ { U32 valveState = getU32OverrideValue( &valveSensedStates[ valveID ] ); - name = ( DEENERGIZED == valveState ? VALVE_STATE_CLOSED : VALVE_STATE_OPEN ); + // DEENERGIZED(0) -> VALVE_STATE_OPEN(0), ENERGIZED(1) -> VALVE_STATE_CLOSED(1) + name = ( DEENERGIZED == valveState ? VALVE_STATE_OPEN : VALVE_STATE_CLOSED ); } else {