Index: firmware/App/Modes/FPModes/ModePreGenPermeate.c =================================================================== diff -u -rdc883aab56e769b2dec294e084f1378a178ba089 -rf0aec0f46d5e85250430ecc95e4654200cf2ed83 --- firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision dc883aab56e769b2dec294e084f1378a178ba089) +++ firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision f0aec0f46d5e85250430ecc95e4654200cf2ed83) @@ -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" @@ -549,4 +550,89 @@ return result; } +/*********************************************************************//** + * @brief + * The testValidatePreGenPChangeReq 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 testValidatePreGenPChangeReq( U32 newSubMode ) +{ + BOOL result = FALSE; + LEVEL_STATE_T level = getLevelStatus( P25_LEVL ); + + if ( newSubMode < NUM_OF_FP_PRE_GENW_MODE_STATES ) + { + switch ( newSubMode ) + { + case FP_PRE_GENP_CONCENTRATE_FLUSH: + result = (( LEVEL_STATE_HIGH == level ) ? TRUE : FALSE); + break; + + case FP_PRE_GENP_INLET_PRESSURE_CHECK: + case FP_PRE_GENP_FILTER_FLUSH: + case FP_PRE_GENP_PERMEATE_FLUSH: + case FP_PRE_GENP_VERIFY_WATER: + result = TRUE; + break; + + // TODO change once pause state is implemented + case FP_PRE_GENP_PAUSED: + default: + break; + } + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testSignalNewPreGenPSubMode function requests transition to a new + * PreGen Permeate sub mode. + * @details \b Inputs: none + * @details \b Outputs: preGenPState + * @param newSubMode the enumerated sub state of the mode. + * @return none + *************************************************************************/ +void testSignalNewPreGenPSubMode( U32 newSubMode ) +{ + if ( newSubMode < NUM_OF_FP_PRE_GENW_MODE_STATES ) + { + preGenPState = (FP_PRE_GENP_MODE_STATE_T)newSubMode; + // handle the prerequisite if any + switch ( newSubMode ) + { + case FP_PRE_GENP_INLET_PRESSURE_CHECK: + resetInletPressureCheckSignals(); + break; + + case FP_PRE_GENP_FILTER_FLUSH: + resetFilterFlushSignals(); + signalStartFilterFlush(); + break; + + case FP_PRE_GENP_PERMEATE_FLUSH: + resetPermeateFlushSignals(); + signalStartPermeateFlush(); + break; + + case FP_PRE_GENP_CONCENTRATE_FLUSH: + resetConcentrateFlushSignals(); + signalStartConcentrateFlush(); + break; + + // Require no special handling for now (update if required in future) + case FP_PRE_GENP_VERIFY_WATER: + case FP_PRE_GENP_PAUSED: + default: + break; + } + setModePreGenPTransition( preGenPState ); + } +} + /**@}*/ Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r214bc36051314945ae212a1869aa87014eb1dbf8 -rf0aec0f46d5e85250430ecc95e4654200cf2ed83 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 214bc36051314945ae212a1869aa87014eb1dbf8) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision f0aec0f46d5e85250430ecc95e4654200cf2ed83) @@ -279,11 +279,11 @@ { MSG_ID_FP_DEF_STATUS_REQUEST, &testGetFPDefeaturedStatus }, { MSG_ID_FP_RO_FILTERED_REJECTION_RATIO_OVERRIDE_REQUEST, &testRORejectionRatioFilteredOverride }, { MSG_ID_FP_SET_RECOVERY_VALVES_REQUEST, &testIOFPSetValveRecoveryConfig }, - { MSG_ID_DD_BICARB_DOSE_VOL_CONTROL_KP_GAIN_COEFF_OVERRIDE_REQUEST, &testDryBiCartBicarbDoseVolControlKpGainOverride }, { MSG_ID_DD_BICARB_DOSE_VOL_CONTROL_KI_GAIN_COEFF_OVERRIDE_REQUEST, &testDryBiCartBicarbDoseVolControlKiGainOverride }, { MSG_ID_DD_ACID_DOSE_VOL_CONTROL_KP_GAIN_COEFF_OVERRIDE_REQUEST, &testDryBiCartAcidDoseVolControlKpGainOverride }, { MSG_ID_DD_ACID_DOSE_VOL_CONTROL_KI_GAIN_COEFF_OVERRIDE_REQUEST, &testDryBiCartAcidDoseVolControlKiGainOverride }, + { MSG_ID_FP_SET_OPERATION_SUB_MODE_REQUEST, &testSetFPOperationSubMode }, }; /// Calculation for number of entries in the incoming message function handler look-up table.