Index: firmware/App/Modes/ModeChemicalDisinfect.c =================================================================== diff -u -r5459a8a8b011c5956feb83c14fa98091287be7ac -r3223b2c9784261205928b3ee21edd88df5be8a60 --- firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision 5459a8a8b011c5956feb83c14fa98091287be7ac) +++ firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision 3223b2c9784261205928b3ee21edd88df5be8a60) @@ -872,7 +872,7 @@ writeDisinfectDataToNV( USAGE_INFO_CHEM_DIS_START ); handleDisinfectantMixing( getMeasuredFlowRateLPM( RO_FLOW_SENSOR ) * ML_PER_LITER, disinfectantMixRatio ); - if ( TRUE == didTimeout( stateTimer, ( ( stateTrialCounter + 1 ) * FLUSH_DISINFECTANT_TIMEOUT_MS ) ) ) + if ( TRUE == didTimeout( stateTimer, FLUSH_DISINFECTANT_TIMEOUT_MS ) ) { BOOL isCD2OutOfRange = isAcidCondOutOfRange(); @@ -883,10 +883,13 @@ if ( TRUE == isCD2OutOfRange ) { + stateTimer = getMSTimerCount(); + if ( ++stateTrialCounter >= MAX_ALLOWED_DISINFECTANT_FLUSH_PERIODS ) { - stateTimer = getMSTimerCount(); - state = DG_CHEM_DISINFECT_STATE_CANCEL_WATER_PATH; + alarmDetectedPendingTrigger = ALARM_ID_DG_CHEM_DISINFECT_TARGET_COND_OUT_OF_RANGE; + prevChemDisinfectState = state; + state = DG_CHEM_DISINFECT_STATE_CANCEL_WATER_PATH; } } else @@ -1791,7 +1794,7 @@ } // Check the temperature and conductivity of the diluted disinfectant - if ( ( chemDisinfectState >= DG_CHEM_DISINFECT_STATE_DISINFECTANT_FLUSH ) && ( chemDisinfectState <= DG_CHEM_DISINFECT_STATE_PARTIAL_DRAIN_R2_FILL_R1_TO_R2 ) ) + if ( ( chemDisinfectState >= DG_CHEM_DISINFECT_STATE_FILL_WITH_DISINFECTANT ) && ( chemDisinfectState <= DG_CHEM_DISINFECT_STATE_PARTIAL_DRAIN_R2_FILL_R1_TO_R2 ) ) { // Disinfect conditions check F32 TPoTemp = getTemperatureValue( TEMPSENSORS_OUTLET_PRIMARY_HEATER ); @@ -1801,6 +1804,12 @@ maxTemperatureOutOfRangeStartTimeMS = ( TRUE == isTPoOutofRange ? maxTemperatureOutOfRangeStartTimeMS : getMSTimerCount() ); maxCondOutOfRangeStartTimeMS = ( TRUE == isCD2OutofRange ? maxCondOutOfRangeStartTimeMS : getMSTimerCount() ); + if ( TRUE == getTestConfigStatus( TEST_CONFIG_MIX_WITH_WATER ) ) + { + // If the mix with water is enabled, keep reseting the time + maxCondOutOfRangeStartTimeMS = getMSTimerCount(); + } + if ( TRUE == didTimeout( maxTemperatureOutOfRangeStartTimeMS, DISINFECT_TEMP_OUT_OF_RANGE_TIMEOUT_MS ) ) { signalMaxTempOrMaxCondIsOutOfRange = TRUE;