Index: firmware/App/Controllers/AirPump.c =================================================================== diff -u -r395522dffef1348e176564925656012f529c1910 -rbe3707da4ead2a2eb0462e7e496a8cf407682957 --- firmware/App/Controllers/AirPump.c (.../AirPump.c) (revision 395522dffef1348e176564925656012f529c1910) +++ firmware/App/Controllers/AirPump.c (.../AirPump.c) (revision be3707da4ead2a2eb0462e7e496a8cf407682957) @@ -37,6 +37,7 @@ /// Payload record structure for air pump test set command message payload. typedef struct { + U32 reset; ///< Air pump reset U32 h12State; ///< Air pump state to command. U32 h12Power; ///< Air pump power level to command. } AIR_PUMP_SET_CMD_PAYLOAD_T; @@ -47,6 +48,7 @@ static AIR_PUMP_STATE_T currentAirPumpState; ///< Current air pump control state. static U08 currentAirPumpPowerLevel; ///< Current air pump power level setting. static U32 airPumpDataPublicationTimerCounter; ///< Air pump data broadcast timer counter. +static BOOL airPumpTesterOverrideActive; ///< Air pump reset activation. static OVERRIDE_U32_T airPumpDataPublishInterval; ///< Air pump data broadcast interval (in ms). // ********** private function prototypes ********** @@ -72,6 +74,7 @@ airPumpDataPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; currentAirPumpState = AIR_PUMP_STATE_INIT; currentAirPumpPowerLevel = AIR_PUMP_MOTOR_OFF; + airPumpTesterOverrideActive = FALSE; airPumpDataPublishInterval.data = AIR_PUMP_DATA_PUB_INTERVAL; airPumpDataPublishInterval.ovData = AIR_PUMP_DATA_PUB_INTERVAL; airPumpDataPublishInterval.ovInitData = AIR_PUMP_DATA_PUB_INTERVAL; @@ -83,13 +86,21 @@ * The setAirPumpState function sets the current air pump state machine state. * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if invalid state given. * @details \b Inputs: currentAirPumpState - * @details \b Outputs: currentAirPumpState, currentAirPumpMotorPowerLevel + * @details \b Outputs: currentAirPumpState, currentAirPumpMotorPowerLevel, + * reset status. * @param state Air pump state to set * @param power Power level to set air pump to + * @param reset Control to give back to firmware * @return none *************************************************************************/ -void setAirPumpState( AIR_PUMP_STATE_T state, U08 power ) +void setAirPumpState( AIR_PUMP_STATE_T state, U08 power, BOOL reset ) { + if ( reset != FALSE ) + { + airPumpTesterOverrideActive = FALSE; + return ; + } + if ( state < NUM_OF_AIR_PUMP_STATES ) { currentAirPumpState = state; @@ -267,13 +278,13 @@ if ( TRUE == isTestingActivated() ) { // Verify payload length is valid - if ( sizeof( U32 ) + sizeof( U32 ) == message->hdr.payloadLen ) + if ( sizeof( U32 ) + sizeof( U32 ) + sizeof( U32 ) == message->hdr.payloadLen ) { U08 *msgPayload = &message->payload[0]; AIR_PUMP_SET_CMD_PAYLOAD_T payload; memcpy( &payload, msgPayload, sizeof( AIR_PUMP_SET_CMD_PAYLOAD_T ) ); - setAirPumpState( (AIR_PUMP_STATE_T)payload.h12State, (U08)payload.h12Power ); + setAirPumpState( (AIR_PUMP_STATE_T)payload.h12State, (U08)payload.h12Power, (payload.reset != 0U) ); result = TRUE; } }