Index: firmware/App/Controllers/BoostPump.c =================================================================== diff -u -r051cd0430ef8342bd606115c98871e26dc24acf1 -r3a5cc585b69ffa194e3601a005915d23b48bd865 --- firmware/App/Controllers/BoostPump.c (.../BoostPump.c) (revision 051cd0430ef8342bd606115c98871e26dc24acf1) +++ firmware/App/Controllers/BoostPump.c (.../BoostPump.c) (revision 3a5cc585b69ffa194e3601a005915d23b48bd865) @@ -15,14 +15,12 @@ * ***************************************************************************/ -//#include - #include "BoostPump.h" #include "Flow.h" +#include "FPOperationModes.h" //#include "NVDataMgmt.h" #include "Messaging.h" #include "MessageSupport.h" -#include "OperationModes.h" #include "PersistentAlarm.h" #include "PIControllers.h" #include "Pressure.h" @@ -45,8 +43,6 @@ #define BOOST_FLOW_CONTROL_I_COEFFICIENT 0.65F ///< I term for Boost pump flow control. #define BOOST_PRESSURE_CONTROL_P_COEFFICIENT 0.01F ///< P term for Boost pump pressure control. #define BOOST_PRESSURE_CONTROL_I_COEFFICIENT 0.01F ///< I term for Boost pump pressure control. -#define BOOST_PWM_STEP_LIMIT 0.50F ///< Current maximum PWM step limit used in Boost Profiles. -#define BOOST_RAMP_DOWN_DUTY_CYCLE_RATIO 0.03F ///< Pump ramp down duty cycle ratio when the pressure higher than max defined. #define BOOST_FLOW_TO_PWM_SLOPE 0.5F ///< Slope of flow to PWM line equation. #define BOOST_FLOW_TO_PWM_INTERCEPT 0.0F ///< Intercept of flow to PWM line equation. @@ -55,9 +51,6 @@ #define DATA_PUBLISH_COUNTER_START_COUNT 10 ///< Data publish counter start count. -#define BOOST_FLOW_TO_PWM(flow) ( BOOST_FLOW_TO_PWM_SLOPE * flow + BOOST_FLOW_TO_PWM_INTERCEPT ) ///< PWM line equation for flow. -#define BOOST_PRESSURE_TO_PWM(pres) ( BOOST_PRESSURE_TO_PWM_SLOPE * pres + BOOST_PRESSURE_TO_PWM_INTERCEPT ) ///< PWM line equation for pressure. - /// Enumeration of Boost pump states. typedef enum BoostPump_States { @@ -80,7 +73,7 @@ static OVERRIDE_U32_T targetBoostPumpFlowRate; ///< Target Boost flow rate (in L/min). static OVERRIDE_F32_T targetBoostPumpPressure; ///< Target Boost max allowed pressure (in PSI). static F32 boostPumpDutyCyclePctSet; ///< Currently set Boost pump PWM duty cycle. -static F32 boostPumpOpenLoopTargetDutyCycle; ///< Target Boost pump open loop PWM. +static OVERRIDE_F32_T boostPumpOpenLoopTargetDutyCycle; ///< Target Boost pump open loop PWM. // ********** private function prototypes ********** @@ -99,7 +92,7 @@ * The initBoostPump function initializes the Boost Pump module. * @details \b Inputs: boostPumpState, boostPumpControlMode, isBoostPumpOn, stopPumpRequest, * boostControlTimerCounter, boostPumpDutyCyclePctSet, boostPumpOpenLoopTargetDutyCycle, boostPumpDataPublicationTimerCounter, - * boostPumpDataPublishInterval, targetBoostPumpFlowRCLOSEDate, targetBoostPumpPressure + * boostPumpDataPublishInterval, targetBoostPumpFlowRate, targetBoostPumpPressure * @details \b Outputs: Boost Pump controller unit initialized * @return none *************************************************************************/ @@ -115,26 +108,29 @@ initializePIController( PI_CONTROLLER_ID_BOOST_PUMP_PRES, MIN_FLUID_PUMP_DUTY_CYCLE_PCT, BOOST_PRESSURE_CONTROL_P_COEFFICIENT, BOOST_PRESSURE_CONTROL_I_COEFFICIENT, MIN_FLUID_PUMP_DUTY_CYCLE_PCT, MAX_FLUID_PUMP_DUTY_CYCLE_PCT, FALSE, 0 ); - boostPumpState = BOOST_PUMP_OFF_STATE; - boostPumpControlMode = NUM_OF_PUMP_CONTROL_MODES; - isBoostPumpOn = FALSE; - stopPumpRequest = FALSE; - boostControlTimerCounter = 0; - boostPumpDutyCyclePctSet = 0.0F; - boostPumpOpenLoopTargetDutyCycle = 0.0F; - boostPumpDataPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; - boostPumpDataPublishInterval.data = BOOST_DATA_PUB_INTERVAL; - boostPumpDataPublishInterval.ovData = BOOST_CONTROL_INTERVAL; - boostPumpDataPublishInterval.ovInitData = 0; - boostPumpDataPublishInterval.override = OVERRIDE_RESET; - targetBoostPumpFlowRate.data = 0; - targetBoostPumpFlowRate.ovData = 0; - targetBoostPumpFlowRate.ovInitData = 0; - targetBoostPumpFlowRate.override = OVERRIDE_RESET; - targetBoostPumpPressure.data = 0.0F; - targetBoostPumpPressure.ovData = 0.0F; - targetBoostPumpPressure.ovInitData = 0.0F; - targetBoostPumpPressure.override = OVERRIDE_RESET; + boostPumpState = BOOST_PUMP_OFF_STATE; + boostPumpControlMode = NUM_OF_PUMP_CONTROL_MODES; + isBoostPumpOn = FALSE; + stopPumpRequest = FALSE; + boostControlTimerCounter = 0; + boostPumpDutyCyclePctSet = 0.0F; + boostPumpDataPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; + boostPumpDataPublishInterval.data = BOOST_DATA_PUB_INTERVAL; + boostPumpDataPublishInterval.ovData = BOOST_CONTROL_INTERVAL; + boostPumpDataPublishInterval.ovInitData = 0; + boostPumpDataPublishInterval.override = OVERRIDE_RESET; + targetBoostPumpFlowRate.data = 0; + targetBoostPumpFlowRate.ovData = 0; + targetBoostPumpFlowRate.ovInitData = 0; + targetBoostPumpFlowRate.override = OVERRIDE_RESET; + targetBoostPumpPressure.data = 0.0F; + targetBoostPumpPressure.ovData = 0.0F; + targetBoostPumpPressure.ovInitData = 0.0F; + targetBoostPumpPressure.override = OVERRIDE_RESET; + boostPumpOpenLoopTargetDutyCycle.data = 0.0F; + boostPumpOpenLoopTargetDutyCycle.ovData = 0.0F; + boostPumpOpenLoopTargetDutyCycle.ovInitData = 0.0F; + boostPumpOpenLoopTargetDutyCycle.override = OVERRIDE_RESET; stopBoostPump(); } @@ -171,7 +167,7 @@ break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_RO_INVALID_PUMP_DUTY_CYCLE_SELECTED, boostPumpState ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_FP_INVALID_PUMP_DUTY_CYCLE_SELECTED, boostPumpState ) boostPumpState = BOOST_PUMP_OFF_STATE; break; } @@ -193,34 +189,40 @@ BOOST_PUMP_STATE_T state = BOOST_PUMP_OFF_STATE; isBoostPumpOn = FALSE; - // If there is a target pressure set, transition to the PI controller and control to pressure. - if ( ( getTargetBoostPumpPressure() > 0.0F ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) + // Do not control unless boost is installed + if ( TRUE == isBoostPumpInstalled() ) { - // Set pump to on - isBoostPumpOn = TRUE; - boostPumpDutyCyclePctSet = boostPumpPresToPWM( getTargetBoostPumpPressure() ); - setFluidPumpPctToPWMDutyCycle( P40_PUMP, boostPumpDutyCyclePctSet ); - state = BOOST_PUMP_CONTROL_TO_TARGET_PRESSURE_STATE; - } + // If there is a target pressure set, transition to the PI controller and control to pressure. + if ( ( getTargetBoostPumpPressure() > 0.0F ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) + { + // Set pump to on + isBoostPumpOn = TRUE; + boostPumpDutyCyclePctSet = boostPumpPresToPWM( getTargetBoostPumpPressure() ); + resetPIController( PI_CONTROLLER_ID_BOOST_PUMP_PRES, boostPumpDutyCyclePctSet, 0.0F ); + setFluidPumpPctToPWMDutyCycle( P40_PUMP, boostPumpDutyCyclePctSet ); + state = BOOST_PUMP_CONTROL_TO_TARGET_PRESSURE_STATE; + } - // If there is a target flow set, transition to the PI controller and control to flow - else if ( ( getTargetBoostPumpFlowRateMLPM() > 0 ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) - { - // Set pump to on - isBoostPumpOn = TRUE; - boostPumpDutyCyclePctSet = boostPumpFlowToPWM( getTargetBoostPumpFlowRateMLPM() ); - setFluidPumpPctToPWMDutyCycle( P40_PUMP, boostPumpDutyCyclePctSet ); - state = BOOST_PUMP_CONTROL_TO_TARGET_FLOW_STATE; + // If there is a target flow set, transition to the PI controller and control to flow + else if ( ( getTargetBoostPumpFlowRateMLPM() > 0 ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) + { + // Set pump to on + isBoostPumpOn = TRUE; + boostPumpDutyCyclePctSet = boostPumpFlowToPWM( getTargetBoostPumpFlowRateMLPM() ); + resetPIController( PI_CONTROLLER_ID_BOOST_PUMP_FLOW, boostPumpDutyCyclePctSet, 0.0F ); + setFluidPumpPctToPWMDutyCycle( P40_PUMP, boostPumpDutyCyclePctSet ); + state = BOOST_PUMP_CONTROL_TO_TARGET_FLOW_STATE; + } + // If the target duty cycle is greater than zero (minimum is 10%) and the mode has been set to open + // loop, set the duty cycle + else if ( ( getTargetBoostPumpDutyCyclePCT() > 0.0F ) && ( PUMP_CONTROL_MODE_OPEN_LOOP == boostPumpControlMode ) ) + { + setFluidPumpPctToPWMDutyCycle( P40_PUMP, getTargetBoostPumpDutyCyclePCT() ); + boostPumpDutyCyclePctSet = getTargetBoostPumpDutyCyclePCT(); + isBoostPumpOn = TRUE; + state = BOOST_PUMP_OPEN_LOOP_STATE; + } } - // If the target duty cycle is greater than zero (minimum is 10%) and the mode has been set to open - // loop, set the duty cycle - else if ( ( boostPumpOpenLoopTargetDutyCycle > 0.0F ) && ( PUMP_CONTROL_MODE_OPEN_LOOP == boostPumpControlMode ) ) - { - setFluidPumpPctToPWMDutyCycle( P40_PUMP, boostPumpOpenLoopTargetDutyCycle ); - boostPumpDutyCyclePctSet = boostPumpOpenLoopTargetDutyCycle; - isBoostPumpOn = TRUE; - state = BOOST_PUMP_OPEN_LOOP_STATE; - } return state; } @@ -274,22 +276,27 @@ BOOST_PUMP_STATE_T state = BOOST_PUMP_CONTROL_TO_TARGET_FLOW_STATE; // Check if need to switch control modes - if ( getTargetBoostPumpPressure() > 0.0F && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) + if ( ( getTargetBoostPumpPressure() > 0.0F ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) { // Transition to target pressure resetPIController( PI_CONTROLLER_ID_BOOST_PUMP_PRES, boostPumpDutyCyclePctSet, 0 ); state = BOOST_PUMP_CONTROL_TO_TARGET_PRESSURE_STATE; } - else if ( boostPumpOpenLoopTargetDutyCycle > 0.0F && ( PUMP_CONTROL_MODE_OPEN_LOOP == boostPumpControlMode ) ) + else if ( ( getTargetBoostPumpDutyCyclePCT() > 0.0F ) && ( PUMP_CONTROL_MODE_OPEN_LOOP == boostPumpControlMode ) ) { - setFluidPumpPctToPWMDutyCycle( P40_PUMP, boostPumpOpenLoopTargetDutyCycle ); - boostPumpDutyCyclePctSet = boostPumpOpenLoopTargetDutyCycle; + setFluidPumpPctToPWMDutyCycle( P40_PUMP, getTargetBoostPumpDutyCyclePCT() ); + boostPumpDutyCyclePctSet = getTargetBoostPumpDutyCyclePCT(); state = BOOST_PUMP_OPEN_LOOP_STATE; } - // Control at set interval + + // Control at set interval or shut off + if ( ( (F32)getTargetBoostPumpFlowRateMLPM() == 0.0F ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) + { + signalBoostPumpHardStop(); + } else if ( ( ++boostControlTimerCounter >= BOOST_CONTROL_INTERVAL ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) { - boostPumpDutyCyclePctSet = runPIController( PI_CONTROLLER_ID_BOOST_PUMP_FLOW, getTargetBoostPumpFlowRateMLPM(), getFilteredFlow( P7_FLOW ) ); + boostPumpDutyCyclePctSet = runPIController( PI_CONTROLLER_ID_BOOST_PUMP_FLOW, (F32)getTargetBoostPumpFlowRateMLPM(), getFilteredFlow( P7_FLOW ) ); setFluidPumpPctToPWMDutyCycle( P40_PUMP, boostPumpDutyCyclePctSet ); boostControlTimerCounter = 0; } @@ -309,19 +316,25 @@ { BOOST_PUMP_STATE_T state = BOOST_PUMP_CONTROL_TO_TARGET_PRESSURE_STATE; + // Check if need to switch control modes if ( ( getTargetBoostPumpFlowRateMLPM() > 0.0F ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) { ///transition to target flow resetPIController( PI_CONTROLLER_ID_BOOST_PUMP_FLOW, boostPumpDutyCyclePctSet, 0.0F ); state = BOOST_PUMP_CONTROL_TO_TARGET_FLOW_STATE; } - else if ( boostPumpOpenLoopTargetDutyCycle > 0.0F && ( PUMP_CONTROL_MODE_OPEN_LOOP == boostPumpControlMode ) ) + else if ( ( getTargetBoostPumpDutyCyclePCT() > 0.0F ) && ( PUMP_CONTROL_MODE_OPEN_LOOP == boostPumpControlMode ) ) { - setFluidPumpPctToPWMDutyCycle( P40_PUMP, boostPumpOpenLoopTargetDutyCycle ); - boostPumpDutyCyclePctSet = boostPumpOpenLoopTargetDutyCycle; + setFluidPumpPctToPWMDutyCycle( P40_PUMP, getTargetBoostPumpDutyCyclePCT() ); + boostPumpDutyCyclePctSet = getTargetBoostPumpDutyCyclePCT(); state = BOOST_PUMP_OPEN_LOOP_STATE; } - // Control at set interval + + // Control at set interval or shut off + if ( ( getTargetBoostPumpPressure() == 0.0F ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) + { + signalBoostPumpHardStop(); + } else if ( ( ++boostControlTimerCounter >= BOOST_CONTROL_INTERVAL ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) { boostPumpDutyCyclePctSet = runPIController( PI_CONTROLLER_ID_BOOST_PUMP_PRES, getTargetBoostPumpPressure(), getFilteredPressure( M3_PRES ) ); @@ -361,16 +374,16 @@ { targetBoostPumpPressure.data = 0.0F; } - if ( boostPumpOpenLoopTargetDutyCycle > 0.0F ) + if ( getTargetBoostPumpDutyCyclePCT() > 0.0F ) { - boostPumpOpenLoopTargetDutyCycle = 0.0F; + boostPumpOpenLoopTargetDutyCycle.data = 0.0F; } result = TRUE; } // Requested flow rate is out of range else { - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_RO_PUMP_INVALID_FLOW_RATE_SET, boostFlowRate ) + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_FP_PUMP_INVALID_FLOW_RATE_SET, boostFlowRate ) } return result; @@ -404,16 +417,16 @@ { targetBoostPumpFlowRate.data = 0.0F; } - if ( boostPumpOpenLoopTargetDutyCycle > 0.0F ) + if ( getTargetBoostPumpDutyCyclePCT() > 0.0F ) { - boostPumpOpenLoopTargetDutyCycle = 0.0F; + boostPumpOpenLoopTargetDutyCycle.data = 0.0F; } result = TRUE; } // Requested flow rate is out of range else { - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_RO_PUMP_INVALID_PRESSURE_SELECTED, boostPressure ) + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_FP_PUMP_INVALID_PRESSURE_SELECTED, boostPressure ) } return result; @@ -436,12 +449,12 @@ if ( ( dutyCycle >= MIN_FLUID_PUMP_DUTY_CYCLE_PCT ) && ( dutyCycle <= MAX_FLUID_PUMP_DUTY_CYCLE_PCT ) ) { - boostPumpOpenLoopTargetDutyCycle = dutyCycle; - boostPumpControlMode = PUMP_CONTROL_MODE_OPEN_LOOP; - status = TRUE; + boostPumpOpenLoopTargetDutyCycle.data = dutyCycle; + boostPumpControlMode = PUMP_CONTROL_MODE_OPEN_LOOP; + status = TRUE; // Set the new duty cycle of the pump - setFluidPumpPctToPWMDutyCycle( P40_PUMP, boostPumpOpenLoopTargetDutyCycle ); + setFluidPumpPctToPWMDutyCycle( P40_PUMP, boostPumpOpenLoopTargetDutyCycle.data ); // Clear previous target data if ( getTargetBoostPumpFlowRateMLPM() > 0 ) { @@ -454,14 +467,44 @@ } else { - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_RO_INVALID_PUMP_DUTY_CYCLE_SELECTED, dutyCycle ) + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_FP_INVALID_PUMP_DUTY_CYCLE_SELECTED, dutyCycle ) } return status; } /*********************************************************************//** * @brief + * The getTargetBoostPumpDutyCyclePCT function gets the current target Boost pump + * pwm. + * @details \b Inputs: boostPumpOpenLoopTargetDutyCycle + * @details \b Outputs: none + * @return the current target Boost pwm between 0 and 0.99 + *************************************************************************/ +F32 getTargetBoostPumpDutyCyclePCT( void ) +{ + F32 dutyCycle = getF32OverrideValue( &boostPumpOpenLoopTargetDutyCycle ); + + return dutyCycle; +} + +/*********************************************************************//** + * @brief + * The getCurrentBoostPumpDutyCyclePCT function gets the current Boost pump + * pwm. + * @details \b Inputs: none + * @details \b Outputs: none + * @return the current feedback Boost pwm between 0 and 0.99 + *************************************************************************/ +F32 getCurrentBoostPumpDutyCyclePCT( void ) +{ + F32 dutyCyclePct = convertDutyCycleCntToPct( getFluidPumpReadPWMDutyCycle( P40_PUMP ) ); + + return dutyCyclePct; +} + +/*********************************************************************//** + * @brief * The getTargetBoostPumpPressure function gets the current target Boost pump * pressure. * @details \b Inputs: targetBoostPumpPressure @@ -548,7 +591,7 @@ boostPumpState = BOOST_PUMP_OFF_STATE; boostPumpDutyCyclePctSet = 0.0F; boostControlTimerCounter = 0; - boostPumpOpenLoopTargetDutyCycle = 0.0F; + boostPumpOpenLoopTargetDutyCycle.data = 0.0F; stopBoostPump(); } @@ -601,9 +644,11 @@ pumpData.p40PumpSpeed = getFluidPumpRPM( P40_PUMP ); pumpData.p40TargetPressure = getTargetBoostPumpPressure(); pumpData.p40TargetFlow = getTargetBoostPumpFlowRateMLPM(); - pumpData.p40TargetDutyCycle = boostPumpOpenLoopTargetDutyCycle; + pumpData.p40TargetDutyCycle = getTargetBoostPumpDutyCyclePCT(); + pumpData.p40PumpDutyCyclePct = convertDutyCycleCntToPct( (U32)getFluidPumpPWMDutyCycle( P40_PUMP ) ); + pumpData.p40PumpFBDutyCyclePct = convertDutyCycleCntToPct( (U32)getFluidPumpReadPWMDutyCycle( P40_PUMP ) ); - broadcastData( MSG_ID_FP_BOOST_PUMP_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&pumpData, sizeof( BOOST_PUMP_DATA_T ) ); + broadcastData( MSG_ID_FP_BOOST_PUMP_DATA, COMM_BUFFER_OUT_CAN_FP_BROADCAST, (U08*)&pumpData, sizeof( BOOST_PUMP_DATA_T ) ); boostPumpDataPublicationTimerCounter = 0; } } @@ -633,7 +678,7 @@ /*********************************************************************//** * @brief - * The testBoostPumpTargetPressureOverride function overrides the Boost pump + * The testBoostPumpTargetPressureOverride function overrides the boost pump * data publish interval. * @details \b Inputs: targetBoostPumpPressure * @details \b Outputs: targetBoostPumpPressure @@ -645,12 +690,14 @@ { BOOL result = f32Override( message, &targetBoostPumpPressure ); + setBoostPumpTargetPressure(getTargetBoostPumpPressure()); + return result; } /*********************************************************************//** * @brief - * The testBoostPumpTargetFlowOverride function overrides the Boost pump + * The testBoostPumpTargetFlowOverride function overrides the boost pump * target flow rate in ml/min. * @details \b Inputs: targetBoostPumpFlowRate * @details \b Outputs: targetBoostPumpFlowRate @@ -662,7 +709,46 @@ { BOOL result = u32Override( message, &targetBoostPumpFlowRate, MIN_BOOST_FLOWRATE_MLPM, MAX_BOOST_FLOWRATE_MLPM ); + setBoostPumpTargetFlowRateMLPM(getTargetBoostPumpFlowRateMLPM()); + return result; } +/*********************************************************************//** + * @brief + * The testBoostPumpTargetDutyCycleOverride function overrides the boost pump + * duty cycle. + * @details \b Inputs: boostPumpOpenLoopTargetDutyCycle + * @details \b Outputs: boostPumpOpenLoopTargetDutyCycle + * @param message Override message from Dialin which includes the value + * of the target flow + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testBoostPumpTargetDutyCycleOverride( MESSAGE_T *message ) +{ + BOOL result = f32Override( message, &boostPumpOpenLoopTargetDutyCycle ); + + setBoostPumpTargetDutyCycle(getTargetBoostPumpDutyCyclePCT()); + + return result; +} + +/*********************************************************************//** + * @brief + * The testBoostPumpHardStopOverride function stops the boost pump. + * @details \b Inputs: boostPumpOpenLoopTargetDutyCycle + * @details \b Outputs: boostPumpOpenLoopTargetDutyCycle + * @param message Override message from Dialin which includes the value + * of the target flow + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testBoostPumpHardStop( MESSAGE_T *message ) +{ + BOOL result = TRUE; + + signalBoostPumpHardStop(); + + return result; +} + /**@}*/