Index: firmware/App/Modes/FPModes/ModePreGenPermeate.c =================================================================== diff -u -rb569bc796c56acd5d94d468386f5f42c350cad65 -rcb8619fdf8690885708071d34b0e87e6657ecd62 --- firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision b569bc796c56acd5d94d468386f5f42c350cad65) +++ firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision cb8619fdf8690885708071d34b0e87e6657ecd62) @@ -18,6 +18,7 @@ #include "BoostPump.h" #include "FPModeStandby.h" #include "FPOperationModes.h" +#include "Level.h" #include "MessageSupport.h" #include "Messaging.h" #include "ModeGenPermeate.h" @@ -447,6 +448,67 @@ /*********************************************************************//** * @brief + * The signalNewPreGenPSubMode function requests transition to a new + * PreGen Permeate sub mode. + * @details \b Inputs: none + * @details \b Outputs: none + * @return TRUE if request successful, FALSE if not + *************************************************************************/ +BOOL signalNewPreGenPSubMode( U32 newSubMode ) +{ + BOOL result = FALSE; + FP_PRE_GENP_MODE_STATE_T reqSubMode = (FP_PRE_GENP_MODE_STATE_T)newSubMode; + LEVEL_STATE_T level = getLevelStatus( P25_LEVL ); + + if ( reqSubMode < NUM_OF_FP_PRE_GENW_MODE_STATES ) + { + switch ( reqSubMode ) + { + case FP_PRE_GENP_INLET_PRESSURE_CHECK: + preGenPState = FP_PRE_GENP_INLET_PRESSURE_CHECK; + setModePreGenPTransition( reqSubMode ); + result = TRUE; + break; + + case FP_PRE_GENP_FILTER_FLUSH: + preGenPState = FP_PRE_GENP_FILTER_FLUSH; + setModePreGenPTransition( reqSubMode ); + result = TRUE; + break; + + case FP_PRE_GENP_PERMEATE_FLUSH: + preGenPState = FP_PRE_GENP_PERMEATE_FLUSH; + setModePreGenPTransition( reqSubMode ); + result = TRUE; + break; + + case FP_PRE_GENP_CONCENTRATE_FLUSH: + // jump to concentrate flush sub mode only if the permeate tank is full + if ( LEVEL_STATE_HIGH == level ) + { + preGenPState = FP_PRE_GENP_CONCENTRATE_FLUSH; + setModePreGenPTransition( reqSubMode ); + } + break; + + case FP_PRE_GENP_VERIFY_WATER: + preGenPState = FP_PRE_GENP_VERIFY_WATER; + setModePreGenPTransition( reqSubMode ); + result = TRUE; + break; + + case FP_PRE_GENP_PAUSED: + default: + result = FALSE; + break; + } + } + + return result; // TODO can this be a void function +} + +/*********************************************************************//** + * @brief * The getPreGenWDataPublishInterval function gets the pre generate water * mode data publish interval. * @details \b Inputs: genWaterDataPublishInterval