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 ) ||