Index: firmware/App/Controllers/UVReactors.c =================================================================== diff -u -r971fc9950b919f8b54ff88a627f6cb1e8a0906ee -r7f38146626e566ac94d97d785af7290529992fdd --- firmware/App/Controllers/UVReactors.c (.../UVReactors.c) (revision 971fc9950b919f8b54ff88a627f6cb1e8a0906ee) +++ firmware/App/Controllers/UVReactors.c (.../UVReactors.c) (revision 7f38146626e566ac94d97d785af7290529992fdd) @@ -411,8 +411,8 @@ if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_UV_REACTORS ) != SW_CONFIG_ENABLE_VALUE ) #endif { - // Check if the alarm has been active - if ( TRUE == checkPersistentAlarm( ALARM_ID_UV_REACTOR_NOT_HEALTHY, isReactorUnhealthy, (U32)reactor, MAX_ALLOWED_UNHEALTHY_REACTOR_PERIOD ) ) + checkPersistentAlarm( ALARM_ID_UV_REACTOR_NOT_HEALTHY, isReactorUnhealthy, (U32)reactor, MAX_ALLOWED_UNHEALTHY_REACTOR_PERIOD ); + if ( TRUE == isPersistentAlarmTriggered( ALARM_ID_UV_REACTOR_NOT_HEALTHY, isReactorUnhealthy) ) { reactorsStatus[ reactor ].switchState = TURN_OFF; } Index: firmware/App/Modes/ModeHeatDisinfect.c =================================================================== diff -u -r971fc9950b919f8b54ff88a627f6cb1e8a0906ee -r7f38146626e566ac94d97d785af7290529992fdd --- firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision 971fc9950b919f8b54ff88a627f6cb1e8a0906ee) +++ firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision 7f38146626e566ac94d97d785af7290529992fdd) @@ -1853,10 +1853,20 @@ { if ( ++rsrvrFillStableTimeCounter >= RSRVRS_FULL_STABLE_TIME_COUNT ) { - status = DG_RESERVOIR_REACHED_TARGET; + status = DG_RESERVOIR_REACHED_TARGET; rsrvrFillStableTimeCounter = 0; // Set the state timer in case it needs to be used for another timeout check - stateTimer = getMSTimerCount(); + if ( ( DG_HEAT_DISINFECT_STATE_FLUSH_R2_AND_DRAIN_R1 == heatDisinfectState) && ( DG_RESERVOIR_2 == reservoir ) ) + { + if ( rsrvr1Status == DG_RESERVOIR_REACHED_TARGET ) + { + stateTimer = getMSTimerCount(); + } + } + else + { + stateTimer = getMSTimerCount(); + } } } else if ( TRUE == didTimeout( stateTimer, timeout ) ) @@ -1899,8 +1909,18 @@ if ( TRUE == isDrainComplete ) { - // Set the state timer in case it needs to be used for another timeout check - stateTimer = getMSTimerCount(); + if ( ( DG_HEAT_DISINFECT_STATE_FLUSH_R2_AND_DRAIN_R1 == heatDisinfectState) && ( DG_RESERVOIR_1 == r) ) + { + if ( ( DG_RESERVOIR_REACHED_TARGET == rsrvr2Status) && ( 0 == getDrainPumpTargetRPM() ) ) + { + stateTimer = getMSTimerCount(); + } + } + else + { + stateTimer = getMSTimerCount(); + } + haveDrainParamsBeenInit[ r ] = FALSE; status = DG_RESERVOIR_REACHED_TARGET; }