Index: firmware/App/Controllers/AirPump.c =================================================================== diff -u -r0299bdb0514a35999be37487ff332ecb3de163bd -rfbb77dff1aeac3b26529790ad6af0e63f5a1f578 --- firmware/App/Controllers/AirPump.c (.../AirPump.c) (revision 0299bdb0514a35999be37487ff332ecb3de163bd) +++ firmware/App/Controllers/AirPump.c (.../AirPump.c) (revision fbb77dff1aeac3b26529790ad6af0e63f5a1f578) @@ -279,8 +279,17 @@ 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; + + // need to pass the result immediately to user when user enter invalid range + 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; + } } } Index: firmware/App/Drivers/GLXferPump.h =================================================================== diff -u -rf267032333f872d729d33614f48373eeb6c422d2 -rfbb77dff1aeac3b26529790ad6af0e63f5a1f578 --- firmware/App/Drivers/GLXferPump.h (.../GLXferPump.h) (revision f267032333f872d729d33614f48373eeb6c422d2) +++ firmware/App/Drivers/GLXferPump.h (.../GLXferPump.h) (revision fbb77dff1aeac3b26529790ad6af0e63f5a1f578) @@ -33,14 +33,18 @@ // ********** public definitions ********** -#define AIR_PUMP_MOTOR_OFF 0.0f ///< Power level setting (PWM) for H12 air pump to turn pump off. +#define AIR_PUMP_MOTOR_OFF 0.0F ///< Power level setting (PWM) for H12 air pump to turn pump off. +#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 +#define AIR_PUMP_MAX_PWM 250 ///< Air pump maximum PWM, FPGA ignores 251-255 // ********** public function prototypes ********** void initGasLiqXferPumpDriver( void ); U16 getAirPumpMotorRPM( void ); void setAirPumpMotorPower( F32 power ); F32 getAirPumpMotorPower( void ); +U16 getAirPumpMotorRPM( void ); BOOL testSetAirPump( MESSAGE_T *message ); Index: firmware/App/Services/FpgaTD.c =================================================================== diff -u -rd213e668492c3f6e572486d1a3dfb69ecd2424e8 -rfbb77dff1aeac3b26529790ad6af0e63f5a1f578 --- firmware/App/Services/FpgaTD.c (.../FpgaTD.c) (revision d213e668492c3f6e572486d1a3dfb69ecd2424e8) +++ firmware/App/Services/FpgaTD.c (.../FpgaTD.c) (revision fbb77dff1aeac3b26529790ad6af0e63f5a1f578) @@ -911,6 +911,18 @@ /*********************************************************************//** * @brief + * The getH12AirPumpMotorRPM function reads the air pump RPM from FPGA. + * @details \b Inputs: fpgaSensorReadings + * @details \b Outputs: none + * @return air pump RPM value + *************************************************************************/ +U16 getH12AirPumpMotorRPM( void ) +{ + return fpgaSensorReadings.h12Speed; +} + +/*********************************************************************//** + * @brief * The setH12AirPumpMotorPowerLevel function sets the air pump motor power level * to 0 to turn pump off or 1..255 for varying power levels. * @details \b Inputs: fpgaActuatorSetPoints.h12Control Index: firmware/App/Services/FpgaTD.h =================================================================== diff -u -rf08afb101ec9f209412551c485e7b2faed0aa900 -rfbb77dff1aeac3b26529790ad6af0e63f5a1f578 --- firmware/App/Services/FpgaTD.h (.../FpgaTD.h) (revision f08afb101ec9f209412551c485e7b2faed0aa900) +++ firmware/App/Services/FpgaTD.h (.../FpgaTD.h) (revision fbb77dff1aeac3b26529790ad6af0e63f5a1f578) @@ -125,6 +125,7 @@ void setH13ValveState( VALVE_3WAY_STATE_T state ); void setH20ValveState( VALVE_3WAY_STATE_T state ); +U16 getH12AirPumpMotorRPM( void ); void setH12AirPumpMotorPowerLevel( U08 power ); void setH12AirPumpMotorPWMCntTime( U16 tenNS );