Index: firmware/App/Controllers/AirPump.c =================================================================== diff -u -raa6d45143096dfab776ce2ed7c775cfe2dd6db18 -r0afeba28589108c3f742079a87bac313c4983b0c --- firmware/App/Controllers/AirPump.c (.../AirPump.c) (revision aa6d45143096dfab776ce2ed7c775cfe2dd6db18) +++ firmware/App/Controllers/AirPump.c (.../AirPump.c) (revision 0afeba28589108c3f742079a87bac313c4983b0c) @@ -33,6 +33,15 @@ #define AIR_PUMP_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Air pump data publish interval. #define DATA_PUBLISH_COUNTER_START_COUNT 13 ///< Air pump data publish start counter. +#pragma pack(push, 1) +/// Payload record structure for air pump test set command message payload. +typedef struct +{ + U32 h12State; ///< Air pump state to command. + U32 h12Power; ///< Air pump power level to command. +} AIR_PUMP_SET_CMD_PAYLOAD_T; +#pragma pack(pop) + // ********** private data ********** static AIR_PUMP_STATE_T currentAirPumpState; ///< Current air pump control state. @@ -242,5 +251,38 @@ return result; } +/*********************************************************************//** + * @brief + * The testSetAirPump function sets the air pump to a given state (on/off). + * @details \b Inputs: none + * @details \b Outputs: currentAirPumpMotorPowerLevel + * @param message set message from Dialin which includes the state to set + * the air pump to. + * @return TRUE if set request is successful, FALSE if not + *************************************************************************/ +BOOL testSetAirPump( MESSAGE_T *message ) +{ + BOOL result = FALSE; + // Verify tester has logged in with TD and override type is valid + if ( TRUE == isTestingActivated() ) + { + // Verify payload length is valid + if ( 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 ) ); + if ( payload.h12Power <= AIR_PUMP_MOTOR_MAX_PWM ) + { + setAirPumpState( (AIR_PUMP_STATE_T)payload.h12State, (U08)payload.h12Power ); + result = TRUE; + } + } + } + + return result; +} + /**@}*/