Index: firmware/App/Controllers/AirPump.c =================================================================== diff -u -r2075fb989d74d881f2e73c19052aa32fa9d760a6 -rc8bc16e4ab55a0995f5282bc1b10bd9ee8656a87 --- firmware/App/Controllers/AirPump.c (.../AirPump.c) (revision 2075fb989d74d881f2e73c19052aa32fa9d760a6) +++ firmware/App/Controllers/AirPump.c (.../AirPump.c) (revision c8bc16e4ab55a0995f5282bc1b10bd9ee8656a87) @@ -32,7 +32,10 @@ #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. +#define AIR_PUMP_DUTY_CYCLE_MIN 0.0F ///< Air pump minimum duty cycle in percentage +#define AIR_PUMP_DUTY_CYCLE_MAX 100.0F ///< Air pump maximum duty cycle in percentage + #pragma pack(push, 1) /// Payload record structure for air pump test set command message payload. typedef struct @@ -274,8 +277,15 @@ AIR_PUMP_SET_CMD_PAYLOAD_T payload; memcpy( &payload, msgPayload, sizeof( AIR_PUMP_SET_CMD_PAYLOAD_T ) ); - setAirPumpState( (AIR_PUMP_STATE_T)payload.h12State, payload.h12Power ); - result = TRUE; + if ( payload.h12Power >= AIR_PUMP_DUTY_CYCLE_MIN && payload.h12Power <= AIR_PUMP_DUTY_CYCLE_MAX ) + { + setAirPumpState( (AIR_PUMP_STATE_T)payload.h12State, payload.h12Power ); + result = TRUE; + } + else + { + result = FALSE; + } } }