Index: firmware/App/Modes/FPModes/ModePreGenPermeateDefeatured.c =================================================================== diff -u -r70a0840cbf7c2455cb6b814cba1241c253f0e9e3 -r940437fb1298c036eeffbbfc8db1d43195e04927 --- firmware/App/Modes/FPModes/ModePreGenPermeateDefeatured.c (.../ModePreGenPermeateDefeatured.c) (revision 70a0840cbf7c2455cb6b814cba1241c253f0e9e3) +++ firmware/App/Modes/FPModes/ModePreGenPermeateDefeatured.c (.../ModePreGenPermeateDefeatured.c) (revision 940437fb1298c036eeffbbfc8db1d43195e04927) @@ -377,4 +377,71 @@ return result; } +/*********************************************************************//** + * @brief + * The testValidatePreGenPDefeaturedChangeReq function validate whether + * requested sub mode change is legal or not. + * @details \b Inputs: none + * @details \b Outputs: none + * @param newSubMode the enumerated sub state of the mode. + * @return TRUE if request is legal, FALSE if not. + *************************************************************************/ +BOOL testValidatePreGenPDefeaturedChangeReq( U32 newSubMode ) +{ + BOOL result = FALSE; + + if ( newSubMode < NUM_OF_FP_PRE_GENP_DEF_MODE_STATES ) + { + switch ( newSubMode ) + { + case FP_PRE_GENP_DEF_INLET_PRESSURE_CHECK: + case FP_PRE_GENP_DEF_FLUSH: + result = TRUE; + break; + + // TODO change once pause state is implemented + case FP_PRE_GENP_DEF_PAUSED: + default: + break; + } + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testSignalNewPreGenPDefeaturedSubMode function requests transition + * to a new defeatured PreGen Permeate sub mode. + * @details \b Inputs: none + * @details \b Outputs: none + * @param newSubMode the enumerated sub state of the mode. + * @return none + *************************************************************************/ +void testSignalNewPreGenPDefeaturedSubMode( U32 newSubMode ) +{ + if ( newSubMode < NUM_OF_FP_PRE_GENP_DEF_MODE_STATES ) + { + preGenPermeateDefState = (FP_PRE_GENP_DEF_MODE_STATE_T)newSubMode; + // handle the prerequisite if any + switch ( newSubMode ) + { + // Any of these state require no special handling + case FP_PRE_GENP_DEF_INLET_PRESSURE_CHECK: + resetInletPressureCheckSignals(); + break; + + case FP_PRE_GENP_DEF_FLUSH: + resetFilterFlushDefSignals(); + signalStartDefFilterFlush(); + break; + + case FP_PRE_GENP_DEF_PAUSED: + default: + break; + } + setModePreGenPDefTransition( preGenPermeateDefState ); + } +} + /**@}*/