Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -rc429cf7f50851acbaca6e800957ef44cc1fa2162 -re781d3b87509e75ae6a2bde6da3d5819b7b5a2da --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision c429cf7f50851acbaca6e800957ef44cc1fa2162) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision e781d3b87509e75ae6a2bde6da3d5819b7b5a2da) @@ -974,25 +974,26 @@ U32 lastFlushCompleteDate = data.dgUsageInfo.lastBasicFlushCompleteDateEpoch; U32 lastStartTxTimeDate = usageRecord.txLastStartTimeEpoch; - // Last Treatment Start > Last Heat Disinfect Complete AND Last Treatment Start > Last Chem Disinfect Complete - BOOL hasDisBeenDone = ( ( ( lastStartTxTimeDate > lastChemCompleteDate ) && ( lastStartTxTimeDate > lastHeatCompleteDate ) ) ? FALSE : TRUE ); + // Last Treatment Start < Last Heat Disinfect Complete or Last Treatment Start < Last Chem Disinfect Complete so it means at least a heat disinfect + // or a chemical disinfect has been done since the last treatment + BOOL hasDisBeenDone = ( ( ( lastStartTxTimeDate < lastChemCompleteDate ) || ( lastStartTxTimeDate < lastHeatCompleteDate ) ) ? TRUE : FALSE ); - // Last Chem Disinfect Complete < Current Time – Chem Disinfect Interval + // Last Chem Disinfect Complete < Current Time – Chem Disinfect Interval, so the chemical disinfect that has been done has not been expired BOOL isChemDisValid = ( lastChemCompleteDate < ( getRTCTimestamp() - DISINFECTS_TIME_INTERVAL_S ) ? TRUE : FALSE ); - // Last Heat Disinfect Complete < Current Time – Heat Disinfect Interval + // Last Heat Disinfect Complete < Current Time – Heat Disinfect Interval, so the heat disinfect that has been done has not been expired BOOL isHeatDisValid = ( lastHeatCompleteDate < ( getRTCTimestamp() - DISINFECTS_TIME_INTERVAL_S ) ? TRUE : FALSE ); - // Last Chem Flush Complete < Last Chem Disinfect Start - BOOL isChemFlushComplete = ( lastChemFlushCompleteDate < lastChemCompleteDate ? FALSE : TRUE ); + // Last Chem Flush Complete < Last Chem Disinfect Start, so after running a chemical disinfect, a chemical disinfect flush has been done + BOOL isChemFlushComplete = ( lastChemFlushCompleteDate > lastChemCompleteDate ? TRUE : FALSE ); - // Last Basic Flush Complete < Current Time – Flush Interval AND Last Heat Disinfect Complete < Current Time – Flush Interval - // AND Last Chem Flush Complete < Current Time – Flush Interval - BOOL isBasicFlushValid = ( lastFlushCompleteDate < ( getRTCTimestamp() - FLUSH_TIME_INTERVAL_S ) ? TRUE : FALSE ); - BOOL isHeatDisFlushValid = ( lastHeatCompleteDate < ( getRTCTimestamp() - FLUSH_TIME_INTERVAL_S ) ? TRUE : FALSE ); - BOOL isChemFlushValid = ( lastChemFlushCompleteDate < ( getRTCTimestamp() - FLUSH_TIME_INTERVAL_S ) ? TRUE : FALSE ); - BOOL isFlushValid = ( isBasicFlushValid | isHeatDisFlushValid | isChemFlushValid ); + // If either of the basic flush, heat disinfect, or chemical disinfect flush have been done within the interval, it means the filters have been flushed + BOOL isBasicFlushValid = ( lastFlushCompleteDate < ( getRTCTimestamp() - FLUSH_TIME_INTERVAL_S ) ? TRUE : TRUE ); + BOOL isHeatDisFlushValid = ( lastHeatCompleteDate < ( getRTCTimestamp() - FLUSH_TIME_INTERVAL_S ) ? TRUE : TRUE ); + BOOL isChemFlushValid = ( lastChemFlushCompleteDate < ( getRTCTimestamp() - FLUSH_TIME_INTERVAL_S ) ? TRUE : TRUE ); + BOOL isFlushValid = ( isBasicFlushValid || isHeatDisFlushValid || isChemFlushValid ); + // If all of the above conditions are true, it means we can start a treatment if ( ( TRUE == hasDisBeenDone ) && ( TRUE == isChemDisValid ) && ( TRUE == isHeatDisValid ) && ( TRUE == isChemFlushComplete ) && ( TRUE == isFlushValid ) ) { status = TRUE;