Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -r711ff90b0aab45c4acde333f4c9f11be9b62f383 -r729fd5d3a3a2d38f4fd4eff8068925941731bfc0 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision 711ff90b0aab45c4acde333f4c9f11be9b62f383) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision 729fd5d3a3a2d38f4fd4eff8068925941731bfc0) @@ -52,6 +52,7 @@ static U32 fpValveStatesPublicationTimerCounter; ///< Timer counter used to schedule IOFP valve state publication to CAN bus. static U16 commandedValvesStates; ///< Initialize commanded valves states bit field. static U08 commandedBCValveStates; ///< Initialize balancing chamber commanded valves states bit field. +static U08 commandedSpareValveStates; ///< Initialize commanded spare valves states bit field. static U16 commandedIOFPValveStates; ///< Initialize commanded IOFP valves states bit field. static U32 valveStateMismatchTimerCounter; ///< Initialize valve state mismatch timer. static U32 pendingValveStateChanges[ DD_NUM_OF_VALVES ]; ///< Delayed (pending) valve state changes. @@ -109,6 +110,7 @@ // Initialize the commanded valve states commandedValvesStates = ALL_VALVES_DEENERGIZED; commandedBCValveStates = ALL_VALVES_DEENERGIZED; + commandedSpareValveStates = ALL_VALVES_DEENERGIZED; commandedIOFPValveStates = ALL_VALVES_DEENERGIZED; valveStateMismatchTimerCounter = 0; valvesStatesPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; // reset valves states publication timer @@ -117,6 +119,7 @@ // initially set all valves to de-energized state via FPGA setFPGADDValveStates( commandedValvesStates ); setFPGABCValveStates( commandedBCValveStates ); + setFPGASpareValveStates( commandedSpareValveStates ); setFPGAIOFPValveStates( commandedIOFPValveStates ); } @@ -137,11 +140,13 @@ U32 i; U16 readValvesStates = getFPGADDValveStates(); U08 readValveBCStates = getFPGAValveBCStates(); + U08 readValveSpStates = getFPGAValveSpStates(); U16 readValveIOFPStates = getFPGAIOFPValveStates(); // Verify read back FPGA valve states match last commanded valve states if ( ( readValvesStates != commandedValvesStates ) || ( readValveBCStates != commandedBCValveStates ) || + ( readValveSpStates != commandedSpareValveStates ) || ( readValveIOFPStates != commandedIOFPValveStates ) ) { valveStateMismatchTimerCounter++; // increment valve state mismatch counter by 1 @@ -173,6 +178,7 @@ readCommandedValveStates(); setFPGADDValveStates( commandedValvesStates ); setFPGABCValveStates( commandedBCValveStates ); + setFPGASpareValveStates( commandedSpareValveStates ); setFPGAIOFPValveStates( commandedIOFPValveStates ); // Publish valve states on interval @@ -193,9 +199,10 @@ U32 i; // Initiliaze before updating commanded states - commandedValvesStates = ALL_VALVES_DEENERGIZED; - commandedBCValveStates = ALL_VALVES_DEENERGIZED; - commandedIOFPValveStates = ALL_VALVES_DEENERGIZED; + commandedValvesStates = ALL_VALVES_DEENERGIZED; + commandedBCValveStates = ALL_VALVES_DEENERGIZED; + commandedSpareValveStates = ALL_VALVES_DEENERGIZED; + commandedIOFPValveStates = ALL_VALVES_DEENERGIZED; // flag hydraulics valves that are currently commanded to be energized for ( i = FIRST_HYD_VALVE; i <= LAST_HYD_VALVE; i++ ) @@ -209,6 +216,12 @@ commandedBCValveStates |= ( getValveState( i ) == ENERGIZED ? 0x01 << ( i - FIRST_BC_VALVE ) : 0 ); } + // flag spare valves that are currently commanded to be energized + for ( i = FIRST_SP_VALVE; i <= LAST_SP_VALVE; i++ ) + { + commandedSpareValveStates |= ( getValveState( i ) == ENERGIZED ? 0x01 << ( i - FIRST_SP_VALVE ) : 0 ); + } + // flag IOFP valves that are currently commanded to be energized for ( i = FIRST_IO_VALVE; i <= LAST_FP_VALVE; i++ ) { @@ -448,6 +461,7 @@ data.valvesStatus = commandedValvesStates; data.valvesBCStatus = commandedBCValveStates; + data.valveSPStatus = commandedSpareValveStates; for ( i = 0; i <= LAST_DD_VALVE; i++ ) { Index: firmware/App/Controllers/Valves.h =================================================================== diff -u -r0b79c0e7dcf7f9e64c890447e83571d3123ab52c -r729fd5d3a3a2d38f4fd4eff8068925941731bfc0 --- firmware/App/Controllers/Valves.h (.../Valves.h) (revision 0b79c0e7dcf7f9e64c890447e83571d3123ab52c) +++ firmware/App/Controllers/Valves.h (.../Valves.h) (revision 729fd5d3a3a2d38f4fd4eff8068925941731bfc0) @@ -48,6 +48,7 @@ { U16 valvesStatus; ///< 2 way valves status. U08 valvesBCStatus; ///< Balancing chamber valves status. + U08 valveSPStatus; ///< Spare valves status. U08 valvesSensedState[ LAST_DD_VALVE + 1 ]; ///< DD sensed valve states. } DD_VALVES_DATA_T;