Index: firmware/App/Modes/ModeChemicalDisinfect.c =================================================================== diff -u -r49926f63ef33b155ed6919a59a6d2df26339205b -re4657f6c590eed9c6af43a9739b87b81a34a8144 --- firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision 49926f63ef33b155ed6919a59a6d2df26339205b) +++ firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision e4657f6c590eed9c6af43a9739b87b81a34a8144) @@ -150,7 +150,7 @@ BOOL acidDataColHasTimerBeenSet; ///< Acid has data collection timer started boolean flag. U32 acidDataColStartTimeMS; ///< Acid data collection start time in milliseconds. F32 acidCondRunningSumUSPCM; ///< Acid conductivity running sum in uS/cm. - F32 acidCondAvgUSPCM; ///< Acid conductivity average in uS/cm. + OVERRIDE_F32_T acidCondAvgUSPCM; ///< Acid conductivity average in uS/cm. F32 acidCondSamplesUSPCM[ ACID_MOVING_AVG_NUM_OF_SAMPLES ]; ///< Acid conductivity samples array in uS/cm. U32 acidCondSamplesNextIndex; ///< Acid conductivity sample next index number. } ACID_DATA_STATUS_T; @@ -303,7 +303,10 @@ maxTemperatureOutOfRangeStartTimeMS = getMSTimerCount(); maxCondOutOfRangeStartTimeMS = getMSTimerCount(); acidDataStatus.acidDataColHasTimerBeenSet = FALSE; - acidDataStatus.acidCondAvgUSPCM = 0.0F; + acidDataStatus.acidCondAvgUSPCM.data = 0.0F; + acidDataStatus.acidCondAvgUSPCM.ovData = 0.0F; + acidDataStatus.acidCondAvgUSPCM.ovInitData = 0.0F; + acidDataStatus.acidCondAvgUSPCM.override = 0.0F; acidDataStatus.acidDataColHasTimerBeenSet = getMSTimerCount(); acidDataStatus.acidCondRunningSumUSPCM = 0.0F; acidDataStatus.acidCondSamplesNextIndex = 0; @@ -813,7 +816,7 @@ if ( nelsonSupport != NELSON_CHEM_DISINFECT ) #endif { - if ( acidDataStatus.acidCondAvgUSPCM < MIN_PRIME_ACID_CONDUCTIVITY_US_PER_CM ) + if ( getF32OverrideValue( &acidDataStatus.acidCondAvgUSPCM ) < MIN_PRIME_ACID_CONDUCTIVITY_US_PER_CM ) { primeAcidSteadyStateCounter = 0; } @@ -1680,7 +1683,7 @@ data.overallElapsedTime = calcTimeSince( overallChemDisinfectTimer ); data.stateElapsedTime = calcTimeSince( stateTimer ); data.cancellationMode = (U32)cancellationMode; - data.acidAvgCondUSPCM = acidDataStatus.acidCondAvgUSPCM; + data.acidAvgCondUSPCM = getF32OverrideValue( &acidDataStatus.acidCondAvgUSPCM ); //If the mode is in the actual chemical disinfect states, publish the elapsed time, otherwise publish 0 to avoid confusion if ( chemDisinfectState > DG_CHEM_DISINFECT_STATE_FLUSH_DRAIN ) @@ -1866,7 +1869,7 @@ acidDataStatus.acidCondSamplesUSPCM[ currentIndex ] = acidCondUSPCM; acidDataStatus.acidCondRunningSumUSPCM = acidDataStatus.acidCondRunningSumUSPCM + acidCondUSPCM - prevSampleToRemoveUSPCM; acidDataStatus.acidCondSamplesNextIndex = INC_WRAP( acidDataStatus.acidCondSamplesNextIndex, 0, ACID_MOVING_AVG_NUM_OF_SAMPLES - 1 ); - acidDataStatus.acidCondAvgUSPCM = acidDataStatus.acidCondRunningSumUSPCM / (F32)ACID_MOVING_AVG_NUM_OF_SAMPLES; + acidDataStatus.acidCondAvgUSPCM.data = acidDataStatus.acidCondRunningSumUSPCM / (F32)ACID_MOVING_AVG_NUM_OF_SAMPLES; } } @@ -1880,12 +1883,65 @@ *************************************************************************/ static BOOL isAcidCondOutOfRange( void ) { - F32 acidCondUSPCM = acidDataStatus.acidCondAvgUSPCM; + F32 acidCondUSPCM = getF32OverrideValue( &acidDataStatus.acidCondAvgUSPCM ); BOOL isCD2OutOfRange = ( ( acidCondUSPCM < MIN_DISINFECT_CONDUCTIVITY_US_PER_CM || acidCondUSPCM > MAX_DISINFECT_CONDUCTIVITY_US_PER_CM ) ? TRUE : FALSE ); return isCD2OutOfRange; } + +/************************************************************************* + * TEST SUPPORT FUNCTIONS + *************************************************************************/ + + +/*********************************************************************//** + * @brief + * The testSetConcentratePumpDataPublishIntervalOverride function overrides the + * concentrate pump data publish interval. + * @details Inputs: none + * @details Outputs: concentratePumpDataPublishInterval + * @param value override concentrate pump data publish interval with (in ms) + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testSetChemDisinfectionCD2AvgOverride( U32 value ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + U32 intvl = value / TASK_GENERAL_INTERVAL; + + result = TRUE; + acidDataStatus.acidCondAvgUSPCM.ovData = intvl; + acidDataStatus.acidCondAvgUSPCM.override = OVERRIDE_KEY; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testResetConcentratePumpDataPublishIntervalOverride function resets the + * override of the concentrate pump data publish interval. + * @details Inputs: none + * @details Outputs: concentratePumpDataPublishInterval + * @return TRUE if override reset successful, FALSE if not + *************************************************************************/ +BOOL testResetChemDisinfectionCD2AvgOverride( void ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + acidDataStatus.acidCondAvgUSPCM.override = OVERRIDE_RESET; + acidDataStatus.acidCondAvgUSPCM.ovData = acidDataStatus.acidCondAvgUSPCM.ovInitData; + } + + return result; +} + /**@}*/ // ********** Nelson Support Functions **********