Index: firmware/App/Modes/FPModes/ModePreGenPermeate.c =================================================================== diff -u -r830213bc6dcc1a684610caf78c79d55f2cb41e93 -r3678601eac45b69684724bb46fe913049985c410 --- firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision 830213bc6dcc1a684610caf78c79d55f2cb41e93) +++ firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision 3678601eac45b69684724bb46fe913049985c410) @@ -8,26 +8,26 @@ * @file ModePreGenPermeate.c * * @author (last) “rkallala” -* @date (last) 09-Dec-2025 +* @date (last) 20-Jan-2026 * * @author (original) Michael Garthwaite * @date (original) 08-Sep-2025 * ***************************************************************************/ #include "BoostPump.h" -#include "FlushFilter.h" -#include "FlushPermeate.h" -#include "FlushConcentrate.h" #include "FPModeStandby.h" #include "FPOperationModes.h" -#include "InletPressureCheck.h" #include "MessageSupport.h" #include "Messaging.h" #include "ModeGenPermeate.h" #include "ModePreGenPermeate.h" #include "PermeateTank.h" #include "ROPump.h" +#include "StateFlushConcentrate.h" +#include "StateFlushFilter.h" +#include "StateFlushPermeate.h" +#include "StateInletPressureCheck.h" #include "TaskGeneral.h" #include "Timers.h" #include "Valves.h" @@ -203,6 +203,7 @@ { setBoostPumpTargetPressure( VERIFY_WATER_BOOST_PUMP_TGT_PSI ); } + //TODO change target flow to 750 + rinse pump rate setROPumpTargetFlowRateMLPM( VERIFY_WATER_RO_PUMP_TGT_FLOW_ML, TRUE ); verifyWaterTimer = getMSTimerCount(); break; @@ -232,20 +233,13 @@ // state = FP_PRE_GENP_PAUSED; // } - if ( FALSE == isBoostPumpInstalled() ) + execInletPressureCheck(); + + if ( TRUE == isInletPressureCheckCompleted() ) { signalStartFilterFlush(); state = FP_PRE_GENP_FILTER_FLUSH; } - else - { - execInletPressureCheck(); - if ( TRUE == isInletPressureCheckCompleted() ) - { - signalStartFilterFlush(); - state = FP_PRE_GENP_FILTER_FLUSH; - } - } return state; } @@ -265,14 +259,21 @@ // state = FP_PRE_GENP_PAUSED; // } - execFilterFlush(); - - if ( TRUE == isFilterFlushComplete() ) + if ( TRUE == getTestConfigStatus( TEST_CONFIG_FP_SKIP_PRE_GEN_FLUSH ) ) { - signalStartPermeateFlush(); - state = FP_PRE_GENP_PERMEATE_FLUSH; + state = FP_PRE_GENP_VERIFY_WATER; } + else + { + execFilterFlush(); + if ( TRUE == isFilterFlushComplete() ) + { + signalStartPermeateFlush(); + state = FP_PRE_GENP_PERMEATE_FLUSH; + } + } + return state; } @@ -344,16 +345,35 @@ FP_PRE_GENP_MODE_STATE_T state = FP_PRE_GENP_VERIFY_WATER; F32 roCurrentDutyCycle = getCurrentROPumpDutyCyclePCT(); + checkROInletPressure(); + //Stay in this state for 25 seconds to stablize flow control if ( TRUE == didTimeout( verifyWaterTimer, FLOW_CONTROL_STABLIZED_TIMEOUT_MS ) ) { // check next 5 seconds for water quality // check permeate high flow rate is within range checkPermeateHighFlow(); + // check low flow rate is within range checkPermeateLowFlow(); - // check conductivity is within range + + // check inlet conductivity is within range + checkInletConductivity(); + + // check permeate conductivity is within range checkOutletConductivity(); + + // check RO duty cycle in range + checkRODutyCycle(); + + // check p21 is set to 15 PSI + checkPressureRelief(); + + // check RO rejection ratio + checkRORejectionRatio(); + + // check RO pressure (p13) + checkROPressures(); } // if ( TRUE == 1 ))// TODO Alarm and Stop State Rework