Index: firmware/App/Modes/ModeChemicalDisinfect.c =================================================================== diff -u -r2df80d5b91b421957f3701c3711dc33ffcddbd1c -rc39ed7a93d564db5ba2de199799b69ee308ad008 --- firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision 2df80d5b91b421957f3701c3711dc33ffcddbd1c) +++ firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision c39ed7a93d564db5ba2de199799b69ee308ad008) @@ -803,13 +803,14 @@ * @details Inputs: stateTimer, primeAcidSteadyStateCounter * @details Outputs: stateTimer, prevChemDisinfectState, * primeAcidSteadyStateCounter, maxTemperatureOutOfRangeStartTimeMS, - * maxCondOutOfRangeStartTimeMS + * maxCondOutOfRangeStartTimeMS, disinfectNVOps * @return next state of the chemical disinfect state machine *************************************************************************/ static DG_CHEM_DISINFECT_STATE_T handleChemicalDisinfectPrimeDisinfectantState( void ) { DG_CHEM_DISINFECT_STATE_T state = DG_CHEM_DISINFECT_STATE_PRIME_DISINFECTANT; + writeDisinfectDataToNV( USAGE_INFO_CHEM_DIS_START ); handleDisinfectantMixing( getMeasuredFlowRateLPM( RO_FLOW_SENSOR ) * ML_PER_LITER, disinfectantMixRatio ); if ( TRUE == didTimeout( stateTimer, PRIME_ACID_MINIMUM_PRIME_TIME_MS ) ) @@ -834,12 +835,13 @@ setROPumpTargetFlowRateLPM( CHEM_DISINFECT_TARGET_RO_FLOW_LPM, MAX_RO_PUMP_FILL_DISINFECTANT_PRESSURE_PSI ); setConcentratePumpTargetSpeed( CONCENTRATEPUMPS_CP2_BICARB, DISINFECTANT_PUMP_FILL_SPEED_ML_PER_MIN ); requestConcentratePumpOn( CONCENTRATEPUMPS_CP2_BICARB ); - stateTrialCounter = 0; - disinfectantMixRatio = DISINFECTANT_MIX_RATIO_FILL; - stateTimer = getMSTimerCount(); - maxTemperatureOutOfRangeStartTimeMS = getMSTimerCount(); - maxCondOutOfRangeStartTimeMS = getMSTimerCount(); - state = DG_CHEM_DISINFECT_STATE_DISINFECTANT_FLUSH; + stateTrialCounter = 0; + disinfectantMixRatio = DISINFECTANT_MIX_RATIO_FILL; + stateTimer = getMSTimerCount(); + maxTemperatureOutOfRangeStartTimeMS = getMSTimerCount(); + maxCondOutOfRangeStartTimeMS = getMSTimerCount(); + disinfectNVOps.hasDisStatusBeenWrittenToNV = FALSE; + state = DG_CHEM_DISINFECT_STATE_DISINFECTANT_FLUSH; } else if ( TRUE == didTimeout( stateTimer, PRIME_ACID_LINE_TIMEOUT_MS ) ) { @@ -864,14 +866,12 @@ * @details Inputs: stateTimer, disinfectantMixRatio, stateTrialCounter * @details Outputs: stateTimer, stateTrialCounter, rsrvr1Status, rsrvr2Status, * chemDisinfectReservoirTime, rsrvrFillStableTimeCounter, isChemDisinfectTempAboveTarget, - * disinfectNVOps * @return next state of the chemical disinfect state machine *************************************************************************/ static DG_CHEM_DISINFECT_STATE_T handleChemicalDisinfectDisinfectantFlushState( void ) { DG_CHEM_DISINFECT_STATE_T state = DG_CHEM_DISINFECT_STATE_DISINFECTANT_FLUSH; - writeDisinfectDataToNV( USAGE_INFO_CHEM_DIS_START ); handleDisinfectantMixing( getMeasuredFlowRateLPM( RO_FLOW_SENSOR ) * ML_PER_LITER, disinfectantMixRatio ); if ( TRUE == didTimeout( stateTimer, FLUSH_DISINFECTANT_TIMEOUT_MS ) ) @@ -904,14 +904,13 @@ setValveState( VRD1, VALVE_STATE_CLOSED ); setValveState( VRD2, VALVE_STATE_CLOSED ); turnOffUVReactor( OUTLET_UV_REACTOR ); - rsrvr1Status = DG_RESERVOIR_BELOW_TARGET; - rsrvr2Status = DG_RESERVOIR_BELOW_TARGET; - chemDisinfectReservoirTime = 0; - rsrvrFillStableTimeCounter = 0; - isChemDisinfectTempAboveTarget = FALSE; - stateTimer = getMSTimerCount(); - disinfectNVOps.hasDisStatusBeenWrittenToNV = FALSE; - state = DG_CHEM_DISINFECT_STATE_FILL_WITH_DISINFECTANT; + rsrvr1Status = DG_RESERVOIR_BELOW_TARGET; + rsrvr2Status = DG_RESERVOIR_BELOW_TARGET; + chemDisinfectReservoirTime = 0; + rsrvrFillStableTimeCounter = 0; + isChemDisinfectTempAboveTarget = FALSE; + stateTimer = getMSTimerCount(); + state = DG_CHEM_DISINFECT_STATE_FILL_WITH_DISINFECTANT; } } Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -rba9d98d32561f9e9fb62068c3e08e1993d39462a -rc39ed7a93d564db5ba2de199799b69ee308ad008 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision ba9d98d32561f9e9fb62068c3e08e1993d39462a) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision c39ed7a93d564db5ba2de199799b69ee308ad008) @@ -555,7 +555,7 @@ // Using the caps switch to disable the chemical disinfect date checks // This is for debug builds only to simulate that a chem flush has been done after chem usageInfo.lastChemDisFlushCompleteDateEpoch = 40; - usageInfo.lastChemDisCompleteDateEpoch = 32; + usageInfo.lastChemDisStartDateEpoch = 32; } #endif @@ -565,7 +565,7 @@ cmdResponse.rejectCode = ( STATE_OPEN == getSwitchStatus( DIALYSATE_CAP ) ? REQUEST_REJECT_REASON_DG_DIALYSATE_CAP_OPEN : REQUEST_REJECT_REASON_DG_CONCENTRATE_CAP_OPEN ); } - else if ( usageInfo.lastChemDisFlushCompleteDateEpoch < usageInfo.lastChemDisCompleteDateEpoch ) + else if ( usageInfo.lastChemDisFlushCompleteDateEpoch < usageInfo.lastChemDisStartDateEpoch ) { cmdResponse.rejected = TRUE; cmdResponse.rejectCode = REQUEST_REJECT_REASON_DG_CHEM_FLUSH_NOT_COMPLETED; @@ -615,7 +615,7 @@ // Using the caps switch to disable the chemical disinfect date checks // This is for debug builds only to simulate that a chem flush has been done after chem usageInfo.lastChemDisFlushCompleteDateEpoch = 40; - usageInfo.lastChemDisCompleteDateEpoch = 32; + usageInfo.lastChemDisStartDateEpoch = 32; } #endif @@ -625,7 +625,7 @@ cmdResponse.rejectCode = ( STATE_OPEN == getSwitchStatus( DIALYSATE_CAP ) ? REQUEST_REJECT_REASON_DG_DIALYSATE_CAP_OPEN : REQUEST_REJECT_REASON_DG_CONCENTRATE_CAP_OPEN ); } - else if ( usageInfo.lastChemDisFlushCompleteDateEpoch < usageInfo.lastChemDisCompleteDateEpoch ) + else if ( usageInfo.lastChemDisFlushCompleteDateEpoch < usageInfo.lastChemDisStartDateEpoch ) { cmdResponse.rejected = TRUE; cmdResponse.rejectCode = REQUEST_REJECT_REASON_DG_CHEM_FLUSH_NOT_COMPLETED; @@ -676,7 +676,7 @@ // Using the caps switch to disable the chemical disinfect date checks // This is for debug builds only to simulate that a chem flush has been done after chem usageInfo.lastChemDisFlushCompleteDateEpoch = 40; - usageInfo.lastChemDisCompleteDateEpoch = 32; + usageInfo.lastChemDisStartDateEpoch = 32; } #endif @@ -686,7 +686,7 @@ cmdResponse.rejectCode = ( STATE_OPEN == getSwitchStatus( DIALYSATE_CAP ) ? REQUEST_REJECT_REASON_DG_DIALYSATE_CAP_OPEN : REQUEST_REJECT_REASON_DG_CONCENTRATE_CAP_OPEN ); } - else if ( usageInfo.lastChemDisFlushCompleteDateEpoch < usageInfo.lastChemDisCompleteDateEpoch ) + else if ( usageInfo.lastChemDisFlushCompleteDateEpoch < usageInfo.lastChemDisStartDateEpoch ) { cmdResponse.rejected = TRUE; cmdResponse.rejectCode = REQUEST_REJECT_REASON_DG_CHEM_FLUSH_NOT_COMPLETED; @@ -837,7 +837,7 @@ // Using the caps switch to disable the chemical disinfect date checks. // This is for debug builds only to simulate that a chem flush has been done after chem usageInfo.lastChemDisFlushCompleteDateEpoch = 40; - usageInfo.lastChemDisCompleteDateEpoch = 32; + usageInfo.lastChemDisStartDateEpoch = 32; } #endif @@ -847,7 +847,7 @@ cmdResponse.rejectCode = ( STATE_OPEN == getSwitchStatus( DIALYSATE_CAP ) ? REQUEST_REJECT_REASON_DG_DIALYSATE_CAP_OPEN : REQUEST_REJECT_REASON_DG_CONCENTRATE_CAP_OPEN ); } - else if ( usageInfo.lastChemDisFlushCompleteDateEpoch < usageInfo.lastChemDisCompleteDateEpoch ) + else if ( usageInfo.lastChemDisFlushCompleteDateEpoch < usageInfo.lastChemDisStartDateEpoch ) { cmdResponse.rejected = TRUE; cmdResponse.rejectCode = REQUEST_REJECT_REASON_DG_CHEM_FLUSH_NOT_COMPLETED;