Index: firmware/App/Modes/ModeHeatDisinfect.c =================================================================== diff -u -r7cc77947d23e4be589753ea3bae781a5e15cc898 -rd28018ec9af4486c787c4205257ad2cf68da8cfd --- firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision 7cc77947d23e4be589753ea3bae781a5e15cc898) +++ firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision d28018ec9af4486c787c4205257ad2cf68da8cfd) @@ -7,8 +7,8 @@ * * @file ModeHeatDisinfect.c * -* @author (last) Bill Bracken -* @date (last) 26-Oct-2022 +* @author (last) Dara Navaei +* @date (last) 28-Oct-2022 * * @author (original) Sean * @date (original) 20-Apr-2020 @@ -533,7 +533,7 @@ // Done with final draining isThisLastDrain = FALSE; - state = DG_HEAT_DISINFECT_STATE_RINSE_CIRCULATION; + state = DG_HEAT_DISINFECT_STATE_RINSE_CIRCULATION; } else { @@ -551,8 +551,6 @@ state = DG_HEAT_DISINFECT_STATE_DRAIN_R2; } - setValveState( VPO, VALVE_STATE_FILL_C_TO_NC); - // Start the timer stateTimer = getMSTimerCount(); } @@ -590,8 +588,9 @@ { setValveState( VRD1, VALVE_STATE_OPEN ); setValveState( VRD2, VALVE_STATE_CLOSED ); + rsrvr1Status = DG_RESERVOIR_ABOVE_TARGET; - state = DG_HEAT_DISINFECT_STATE_DRAIN_R1; + state = DG_HEAT_DISINFECT_STATE_DRAIN_R1; } else { @@ -603,16 +602,17 @@ // Done with draining R2, close it setValveState( VRD2, VALVE_STATE_CLOSED ); setValveState( VPI, VALVE_STATE_OPEN ); + setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); + stateTrialCounter = 0; - stateTimer = getMSTimerCount(); - state = DG_HEAT_DISINFECT_STATE_FLUSH_DRAIN; + stateTimer = getMSTimerCount(); + state = DG_HEAT_DISINFECT_STATE_FLUSH_DRAIN; } - setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); } else if ( DG_RESERVOIR_NOT_REACHED_TARGET == rsrvr2Status ) { prevHeatDisinfectState = state; - state = DG_HEAT_DISINFECT_STATE_CANCEL_BASIC_PATH; + state = DG_HEAT_DISINFECT_STATE_CANCEL_BASIC_PATH; } return state; @@ -1147,6 +1147,9 @@ // Set the drain pump to control mode setDrainPumpTargetOutletPressure( HEAT_DISINFECT_TARGET_DRAIN_FILL_R2_PSI ); + // Turn off trimmer heater for transition + stopHeater(DG_TRIMMER_HEATER); + // Although there is fluid in both reservoirs, but they are set to empty // to begin the transition of hot water from R1 to R2. rsrvr2Status = DG_RESERVOIR_BELOW_TARGET; @@ -1210,6 +1213,10 @@ // at inlet temperature > 45 C setROPumpTargetFlowRateLPM( HEAT_DISINFECT_TARGET_RO_FLOW_LPM, HEAT_DISINFECT_MAX_RO_PRESSURE_PSI ); + // Start the trimmer heater since we are recirculating water and there is flow in the shunt line + setHeaterTargetTemperature( DG_TRIMMER_HEATER, HEAT_DISINFECT_TARGET_TEMPERATURE_C ); + startHeater( DG_TRIMMER_HEATER ); + state = DG_HEAT_DISINFECT_STATE_DISINFECT_R2_TO_R1; } else if ( DG_RESERVOIR_NOT_REACHED_TARGET == rsrvr2Status )