Index: firmware/App/Modes/ModeFault.c =================================================================== diff -u -r696e732c9742535a58b9c65f243df7cd797d1423 -r7d4711edd7b40cd3e29f43e766f79a8a09586fe9 --- firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision 696e732c9742535a58b9c65f243df7cd797d1423) +++ firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision 7d4711edd7b40cd3e29f43e766f79a8a09586fe9) @@ -1,14 +1,14 @@ /************************************************************************** * -* Copyright (c) 2019-2022 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2024 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file ModeFault.c * * @author (last) Dara Navaei -* @date (last) 12-Aug-2022 +* @date (last) 29-Aug-2023 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 @@ -18,7 +18,9 @@ #include "ConcentratePumps.h" #include "DrainPump.h" #include "Heaters.h" +#include "ModeChemicalDisinfect.h" #include "ModeFault.h" +#include "ModeHeatDisinfect.h" #include "NVDataMgmt.h" #include "OperationModes.h" #include "ROPump.h" @@ -70,10 +72,10 @@ *************************************************************************/ U32 transitionToFaultMode( void ) { - deenergizeActuators(); + deenergizeActuators( PARK_CONC_PUMPS ); initFaultMode(); - + setCurrentSubState( NO_SUB_STATE ); // Publish POST failure status to UI if fault triggered in Init/POST mode if ( DG_MODE_INIT == getPreviousOperationMode() ) { @@ -88,6 +90,11 @@ // the RTC time is read every second which requires the semaphore. releaseSemaphore( SEMAPHORE_RTC ); +#ifndef _RELEASE_ + setHeatNelsonSupportMode( NELSON_NONE ); + setChemNelsonSupportMode( NELSON_NONE ); +#endif + return faultState; } @@ -100,7 +107,7 @@ *************************************************************************/ U32 execFaultMode( void ) { - deenergizeActuators(); + deenergizeActuators( NO_PARK_CONC_PUMPS ); // execute current fault state switch ( faultState ) @@ -114,7 +121,13 @@ break; case DG_FAULT_STATE_COMPLETE: - // Do nothing + // Do nothing unless the test configuration to recover treatment is enabled + if ( ( TRUE == getTestConfigStatus( TEST_CONFIG_RECOVER_TREATMENT ) ) && ( TRUE == hasRecoverFromFaultModeBeenSet() ) ) + { + DG_OP_MODE_T prevMode = getPreviousOperationMode(); + + requestNewOperationMode( prevMode ); + } break; default: @@ -143,9 +156,10 @@ * de-energized state. * @details Inputs: none * @details Outputs: none + * @param parkPumps TRUE if concentrate pumps should be parked, FALSE if not * @return none *************************************************************************/ -void deenergizeActuators( void ) +void deenergizeActuators( BOOL parkPumps ) { // Turn off the UV reactors turnOffUVReactor( INLET_UV_REACTOR ); @@ -165,8 +179,8 @@ setValveStateDelayed( VRI, VALVE_STATE_R1_C_TO_NO, DELAY_VALVE_MS ); setValveStateDelayed( VRF, VALVE_STATE_R2_C_TO_NO, DELAY_VALVE_MS ); - requestConcentratePumpOff( CONCENTRATEPUMPS_CP1_ACID ); - requestConcentratePumpOff( CONCENTRATEPUMPS_CP2_BICARB ); + requestConcentratePumpOff( CONCENTRATEPUMPS_CP1_ACID, parkPumps ); + requestConcentratePumpOff( CONCENTRATEPUMPS_CP2_BICARB, parkPumps ); signalROPumpHardStop(); signalDrainPumpHardStop(); stopHeater( DG_PRIMARY_HEATER );