Index: firmware/App/Modes/FPModes/ModePreGenPermeateDefeatured.c =================================================================== diff -u -r830213bc6dcc1a684610caf78c79d55f2cb41e93 -r47a7b0fce13cf38919932a8662c378f4f6a8b9f3 --- firmware/App/Modes/FPModes/ModePreGenPermeateDefeatured.c (.../ModePreGenPermeateDefeatured.c) (revision 830213bc6dcc1a684610caf78c79d55f2cb41e93) +++ firmware/App/Modes/FPModes/ModePreGenPermeateDefeatured.c (.../ModePreGenPermeateDefeatured.c) (revision 47a7b0fce13cf38919932a8662c378f4f6a8b9f3) @@ -8,15 +8,17 @@ * @file ModePreGenPermeateDefeatured.c * * @author (last) “rkallala” -* @date (last) 09-Dec-2025 +* @date (last) 15-Jan-2026 * * @author (original) Michael Garthwaite * @date (original) 08-Sep-2025 * ***************************************************************************/ +#include "FlushFilterDefeatured.h" #include "FPModeStandby.h" #include "FPOperationModes.h" +#include "InletPressureCheck.h" #include "Messaging.h" #include "MessageSupport.h" #include "ModeGenPermeateDefeatured.h" @@ -42,13 +44,11 @@ static U32 preGenPermeateDefDataPublicationTimerCounter; ///< Used to schedule generate Permeate data publication to CAN bus. static OVERRIDE_U32_T preGenPermeateDefDataPublishInterval; ///< Generate permeate mode data publish interval. static BOOL pendingStartPreGenDefRequest; ///< Flag indicating DD has requested FP start the generate permeate. -static U32 preGenPermeateDefFlushTimer; -static U32 preGenPermeateDefWaterCheckTimer; // ********** private function prototypes ********** +static FP_PRE_GENP_DEF_MODE_STATE_T handlePreGenPDefInletPressureCheckState( void ); static FP_PRE_GENP_DEF_MODE_STATE_T handlePreGenPDefFlushState( void ); -static FP_PRE_GENP_DEF_MODE_STATE_T handlePreGenPDefInletWaterState( void ); static FP_PRE_GENP_DEF_MODE_STATE_T handlePreGenPDefPausedState( void ); static void setModePreGenPDefTransition( FP_PRE_GENP_DEF_MODE_STATE_T state ); static U32 getPreGenPermeateDefDataPublishInterval( void ); @@ -64,15 +64,13 @@ *************************************************************************/ void initPreGenPermeateDefeaturedMode( void ) { - preGenPermeateDefState = FP_PRE_GENP_DEF_FLUSH; + preGenPermeateDefState = FP_PRE_GENP_DEF_INLET_PRESSURE_CHECK; preGenPermeateDefDataPublishInterval.data = PRE_GEN_DEF_PERMEATE_DATA_PUBLISH_INTERVAL; preGenPermeateDefDataPublishInterval.ovData = PRE_GEN_DEF_PERMEATE_DATA_PUBLISH_INTERVAL; preGenPermeateDefDataPublishInterval.ovInitData = 0; preGenPermeateDefDataPublishInterval.override = OVERRIDE_RESET; preGenPermeateDefDataPublicationTimerCounter = 0; pendingStartPreGenDefRequest = FALSE; - preGenPermeateDefFlushTimer = 0; - preGenPermeateDefWaterCheckTimer = 0; } /*********************************************************************//** @@ -107,14 +105,14 @@ // execute current gen Permeate defeatured state switch ( preGenPermeateDefState ) { + case FP_PRE_GENP_DEF_INLET_PRESSURE_CHECK: + preGenPermeateDefState = handlePreGenPDefInletPressureCheckState(); + break; + case FP_PRE_GENP_DEF_FLUSH: preGenPermeateDefState = handlePreGenPDefFlushState(); break; - case FP_PRE_GENP_DEF_INLET_WATER_CHECK: - preGenPermeateDefState = handlePreGenPDefInletWaterState(); - break; - case FP_PRE_GENP_DEF_PAUSED: preGenPermeateDefState = handlePreGenPDefPausedState(); break; @@ -149,28 +147,26 @@ // Execute on running state switch( state ) { - case FP_PRE_GENP_DEF_FLUSH: - setValveState( M4_VALV, VALVE_STATE_OPEN ); - setValveState( M12_VALV, VALVE_STATE_OPEN ); + case FP_PRE_GENP_DEF_INLET_PRESSURE_CHECK: + setValveState( M4_VALV, VALVE_STATE_CLOSED ); + setValveState( M12_VALV, VALVE_STATE_CLOSED ); setValveState( P6_VALV, VALVE_STATE_CLOSED ); setValveState( P11_VALV, VALVE_STATE_CLOSED ); setValveState( P33_VALV, VALVE_STATE_CLOSED ); setValveState( P34_VALV, VALVE_STATE_CLOSED ); setValveState( P37_VALV, VALVE_STATE_CLOSED ); setValveState( P39_VALV, VALVE_STATE_CLOSED ); - preGenPermeateDefFlushTimer = getMSTimerCount(); break; - case FP_PRE_GENP_DEF_INLET_WATER_CHECK: + case FP_PRE_GENP_DEF_FLUSH: setValveState( M4_VALV, VALVE_STATE_OPEN ); - setValveState( M12_VALV, VALVE_STATE_CLOSED ); + setValveState( M12_VALV, VALVE_STATE_OPEN ); setValveState( P6_VALV, VALVE_STATE_CLOSED ); setValveState( P11_VALV, VALVE_STATE_CLOSED ); setValveState( P33_VALV, VALVE_STATE_CLOSED ); setValveState( P34_VALV, VALVE_STATE_CLOSED ); setValveState( P37_VALV, VALVE_STATE_CLOSED ); setValveState( P39_VALV, VALVE_STATE_CLOSED ); - preGenPermeateDefWaterCheckTimer = getMSTimerCount(); break; case FP_PRE_GENP_DEF_PAUSED: @@ -192,47 +188,41 @@ /*********************************************************************//** * @brief - * The handlePreGenPDefFlushState handles the supply water of gen permeate - * defeatured mode. - * @details \b Inputs: preGenPermeateDefFlushTimer + * The handlePreGenPDefInletPressureCheckState handles the inlet pressure check state of pre gen Permeate. + * @details \b Inputs: none * @details \b Outputs: none - * @return the next state of gen water defeatured mode + * @return the next state of pre gen Permeate mode *************************************************************************/ -static FP_PRE_GENP_DEF_MODE_STATE_T handlePreGenPDefFlushState( void ) +static FP_PRE_GENP_DEF_MODE_STATE_T handlePreGenPDefInletPressureCheckState( void ) { - FP_PRE_GENP_DEF_MODE_STATE_T state = FP_PRE_GENP_DEF_FLUSH; + FP_PRE_GENP_DEF_MODE_STATE_T state = FP_PRE_GENP_DEF_INLET_PRESSURE_CHECK; -// if ( TRUE == 1 )// TODO Alarm and Stop State Rework -// { -// state = FP_PRE_GENP_DEF_PAUSED; -// } + execInletPressureCheck(); - if( TRUE == didTimeout( preGenPermeateDefFlushTimer, PRE_GEN_DEF_FLUSH_TIMEOUT_MS ) ) + if ( TRUE == isInletPressureCheckCompleted() ) { - state = FP_PRE_GENP_DEF_INLET_WATER_CHECK; + signalStartDefFilterFlush(); + state = FP_PRE_GENP_DEF_FLUSH; } return state; } /*********************************************************************//** * @brief - * The handlePreGenPDefInletWaterState handles the pause state of gen permeate + * The handlePreGenPDefFlushState handles the supply water of gen permeate * defeatured mode. - * @details \b Inputs: preGenPermeateDefWaterCheckTimer + * @details \b Inputs: none * @details \b Outputs: none * @return the next state of gen water defeatured mode *************************************************************************/ -static FP_PRE_GENP_DEF_MODE_STATE_T handlePreGenPDefInletWaterState( void ) +static FP_PRE_GENP_DEF_MODE_STATE_T handlePreGenPDefFlushState( void ) { - FP_PRE_GENP_DEF_MODE_STATE_T state = FP_PRE_GENP_DEF_INLET_WATER_CHECK; + FP_PRE_GENP_DEF_MODE_STATE_T state = FP_PRE_GENP_DEF_FLUSH; -// if ( TRUE == 1 ))// TODO Alarm and Stop State Rework -// { -// state = FP_PRE_GENP_DEF_PAUSED; -// } + execFilterFlushDefeatured(); - if( TRUE == didTimeout( preGenPermeateDefWaterCheckTimer, PRE_GEN_DEF_WATER_CHECK_TIMEOUT_MS ) ) + if ( TRUE == isFilterFlushDefComplete() ) { transitionToGenPermeateDefeaturedMode(); requestGenWaterDefStart(); @@ -372,8 +362,8 @@ /*********************************************************************//** * @brief - * The testGenPermeateDefDataPublishIntervalOverride function overrides the - * DD generate water mode data publish interval. + * The testPreGenPermeateDefDataPublishIntervalOverride function overrides the + * DD pre generate water mode data publish interval. * @details \b Inputs: preGenPermeateDefDataPublishInterval * @details \b Outputs: preGenPermeateDefDataPublishInterval * @param Override message from Dialin which includes the interval