Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -rb569bc796c56acd5d94d468386f5f42c350cad65 -rf46f00ed7e9e3d3483c8fb1a4c987bd1691501bb --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision b569bc796c56acd5d94d468386f5f42c350cad65) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision f46f00ed7e9e3d3483c8fb1a4c987bd1691501bb) @@ -35,7 +35,7 @@ #define ENERGIZED 1 ///< 1 for energized valve. #define ALL_VALVES_DEENERGIZED 0x0000 ///< 0 in U16 bit field for all valves. -#define VALVE_PWM_PERIOD 50 ///< Valve PWM Period in 0.1 us res ( 20kHz ) +#define VALVE_PWM_PERIOD 500 ///< Valve PWM Period in 0.1 us res ( 20kHz ) #define VALVE_PWM_LOW ( VALVE_PWM_PERIOD * 0.2 ) ///< Valve low PWM percentage #define VALVE_PWM_PULL_IN 100 ///< Valve 'strike' period at 100% PWM in ms @@ -126,7 +126,7 @@ // TODO set FPGA PWM after finalizing the decision on valve strike and hold behavior // initially set valve PWM configuration and enable -// setFPGAPWMConfigurations(); + //setFPGAPWMConfigurations(); // initially set all valves to de-energized state via FPGA setFPGADDValveStates( commandedValvesStates ); @@ -175,7 +175,7 @@ valveSPBits |= 0x01 << ( i - FIRST_SP_VALVE ); } - for ( i = FIRST_IO_VALVE; i <= LAST_IO_VALVE; i++ ) + for ( i = M12_VALV; i <= LAST_IO_VALVE; i++ ) { valveIOBits |= 0x01 << ( i - FIRST_IO_VALVE ); } @@ -673,16 +673,36 @@ BOOL testBCValveStatesOverride( MESSAGE_T *message ) { DD_BC_VALVE_OVERRIDE_PAYLOAD_T payload; - DD_VALVES_T valve; - BOOL result = FALSE; + DD_VALVES_T valve = FIRST_BC_VALVE; + OVERRIDE_TYPE_T ovType = OVERRIDE_INVALID; + U32 mask = 0; + VALVE_STATE_NAMES_T pos = VALVE_STATE_OPEN; + BOOL result = FALSE; memcpy( (U08*)(&payload), message->payload, sizeof( DD_BC_VALVE_OVERRIDE_PAYLOAD_T ) ); - for ( valve = FIRST_BC_VALVE; valve <= LAST_BC_VALVE; valve++ ) + ovType = ( TRUE == payload.reset ? OVERRIDE_RESET_OVERRIDE : OVERRIDE_OVERRIDE ); + + // Verify tester has logged in with f/w and override type is valid + if ( ( TRUE == isTestingActivated() ) && ( ovType != OVERRIDE_INVALID ) && ( ovType < NUM_OF_OVERRIDE_TYPES ) ) { - U32 mask = 0x1 << (valve - FIRST_BC_VALVE); - VALVE_STATE_NAMES_T pos = ( ( ( payload.valveStatesBits & mask ) != 0 ) ? VALVE_STATE_OPEN : VALVE_STATE_CLOSED ); + for ( valve = FIRST_BC_VALVE; valve <= LAST_BC_VALVE; valve++ ) + { + mask = ( 0x1 << ( valve - FIRST_BC_VALVE ) ); + pos = ( ( ( payload.valveStatesBits & mask ) != 0 ) ? VALVE_STATE_OPEN : VALVE_STATE_CLOSED); - result = setValveState( valve, pos ); + if ( OVERRIDE_OVERRIDE == ovType ) + { + result = TRUE; + valveStates[ valve ].ovData = convertValveStateNameToValveState( pos ); + valveStates[ valve ].override = OVERRIDE_KEY; + } + else + { + result = TRUE; + valveStates[ valve ].override = OVERRIDE_RESET; + valveStates[ valve ].ovData = valveStates[ valve ].ovInitData; + } + } } return result;