Index: firmware/App/Modes/ModeHeatDisinfect.c =================================================================== diff -u -rd0536d759cb33f099357033c3429401ff1637d26 -r6703d916afad5bfc0f5282e8ff6a09d8ce6d9180 --- firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision d0536d759cb33f099357033c3429401ff1637d26) +++ firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision 6703d916afad5bfc0f5282e8ff6a09d8ce6d9180) @@ -106,6 +106,7 @@ #define HEAT_DISINFECT_REF_RSRVR_TIMEOUT_MS ( 5 * MS_PER_SECOND ) ///< Heat disinfect getting reference reservoirs value timeout in milliseconds. #define HEAT_DISINFECT_AT_82_C_TIME_MS ( 10 * SEC_PER_MIN * MS_PER_SECOND ) ///< Heat disinfect time at 82 C in milliseconds. #define HEAT_DISINFECT_AT_77_C_TIME_MS ( 32 * SEC_PER_MIN * MS_PER_SECOND ) ///< Heat disinfect time at 77 C in milliseconds. +#define HEAT_DISNFECT_MIN_OVERRIDE_TIME ( SEC_PER_MIN * MS_PER_SECOND ) ///< Heat disinfect minimum override time. // Mix drain R1 and R2 #define RSRVRS_MIX_DRAIN_TIMEOUT_MS ( 5 * SEC_PER_MIN * MS_PER_SECOND ) ///< Reservoirs 1 & 2 mix drain timeout in ms. @@ -187,6 +188,8 @@ static HEAT_DISINFECT_TIME_STATUS_T timeStatus[ NUM_OF_HEAT_DISINFECT_TIMES ]; ///< Heat disinfect time status. static F32 concPumpsStartTemperatureC; ///< Heat disinfect concentrate pumps start temperature in C. static BOOL isRODisinfectDone; ///< Heat disinfect is RO disinfect done flag. +static OVERRIDE_U32_T targetTimer77C = { HEAT_DISINFECT_AT_77_C_TIME_MS, 0, 0, 0 }; ///< Heat disinfection override target timer at 77 C +static OVERRIDE_U32_T targetTimer82C = { HEAT_DISINFECT_AT_82_C_TIME_MS, 0, 0, 0 }; ///< Heat disinfection override target timer at 82 C #ifndef _RELEASE_ /* Nelson Labs is in charge of testing the efficacy of the disinfects (heat and chem). The codes that contain the name Nelson are used to @@ -281,25 +284,25 @@ timeStatus[ RO_AT_77_C ].startTempC = HEAT_DISINFECT_START_TEMP_AT_77_C; timeStatus[ RO_AT_77_C ].startTimeMS = 0; timeStatus[ RO_AT_77_C ].stopTempC = HEAT_DISINFECT_STOP_TEMP_AT_76_C; - timeStatus[ RO_AT_77_C ].targetTimeMS = HEAT_DISINFECT_AT_77_C_TIME_MS; + timeStatus[ RO_AT_77_C ].targetTimeMS = getU32OverrideValue( &targetTimer77C ); timeStatus[ RO_AT_77_C ].tempSensor = TEMPSENSORS_HEAT_DISINFECT; timeStatus[ RO_AT_82_C ].startTempC = HEAT_DISINFECT_START_TEMP_AT_82_C; timeStatus[ RO_AT_82_C ].startTimeMS = 0; timeStatus[ RO_AT_82_C ].stopTempC = HEAT_DISINFECT_STOP_TEMP_AT_81_C; - timeStatus[ RO_AT_82_C ].targetTimeMS = HEAT_DISINFECT_AT_82_C_TIME_MS; + timeStatus[ RO_AT_82_C ].targetTimeMS = getU32OverrideValue( &targetTimer82C );; timeStatus[ RO_AT_82_C ].tempSensor = TEMPSENSORS_HEAT_DISINFECT; timeStatus[ RSRVR_AT_77_C ].startTempC = HEAT_DISINFECT_START_TEMP_AT_77_C; timeStatus[ RSRVR_AT_77_C ].startTimeMS = 0; timeStatus[ RSRVR_AT_77_C ].stopTempC = HEAT_DISINFECT_STOP_TEMP_AT_76_C; - timeStatus[ RSRVR_AT_77_C ].targetTimeMS = HEAT_DISINFECT_AT_77_C_TIME_MS; + timeStatus[ RSRVR_AT_77_C ].targetTimeMS = getU32OverrideValue( &targetTimer77C ); timeStatus[ RSRVR_AT_77_C ].tempSensor = TEMPSENSORS_INLET_DIALYSATE; timeStatus[ RSRVR_AT_82_C ].startTempC = HEAT_DISINFECT_START_TEMP_AT_82_C; timeStatus[ RSRVR_AT_82_C ].startTimeMS = 0; timeStatus[ RSRVR_AT_82_C ].stopTempC = HEAT_DISINFECT_STOP_TEMP_AT_81_C; - timeStatus[ RSRVR_AT_82_C ].targetTimeMS = HEAT_DISINFECT_AT_82_C_TIME_MS; + timeStatus[ RSRVR_AT_82_C ].targetTimeMS = getU32OverrideValue( &targetTimer82C ); timeStatus[ RSRVR_AT_82_C ].tempSensor = TEMPSENSORS_INLET_DIALYSATE; #ifndef _RELEASE_ @@ -2012,6 +2015,104 @@ } } + +/************************************************************************* + * TEST SUPPORT FUNCTIONS + *************************************************************************/ + + +/*********************************************************************//** + * @brief + * The testSetDG77CStateTimerOverride function checks whether the disinfection + * time of either reservoirs or the RO filter has been elapsed. + * @details Inputs: none + * @details Outputs: targetTimer77C + * @param timer which is the time to check at 77 C + * @return TRUE if request successful, FALSE if not + *************************************************************************/ +BOOL testSetDG77CStateTimerOverride( U32 timer ) +{ + BOOL result = FALSE; + + if ( ( TRUE == isTestingActivated() ) && ( timer >= HEAT_DISNFECT_MIN_OVERRIDE_TIME ) ) + { + targetTimer77C.ovData = timer; + targetTimer77C.override = OVERRIDE_KEY; + result = TRUE; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testResetDG77CStateTimerOverride function checks whether the disinfection + * time of either reservoirs or the RO filter has been elapsed. + * @details Inputs: none + * @details Outputs: targetTimer77C + * @param timer which is the time to check at 77 C + * @return TRUE if request successful, FALSE if not + *************************************************************************/ +BOOL testResetDG77CStateTimerOverride( void ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + targetTimer77C.override = OVERRIDE_RESET; + targetTimer77C.ovData = targetTimer77C.ovInitData; + result = TRUE; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testSetDG82CStateTimerOverride function checks whether the disinfection + * time of either reservoirs or the RO filter has been elapsed. + * @details Inputs: none + * @details Outputs: targetTimer82C + * @param timer which is the time to check at 82 C + * @return TRUE if request successful, FALSE if not + *************************************************************************/ +BOOL testSetDG82CStateTimerOverride( U32 timer ) +{ + BOOL result = FALSE; + + if ( ( TRUE == isTestingActivated() ) && ( timer >= HEAT_DISNFECT_MIN_OVERRIDE_TIME ) ) + { + targetTimer82C.ovData = timer; + targetTimer82C.override = OVERRIDE_KEY; + result = TRUE; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testResetDG82CStateTimerOverride function checks whether the disinfection + * time of either reservoirs or the RO filter has been elapsed. + * @details Inputs: none + * @details Outputs: targetTimer82C + * @param timer which is the time to check at 82 C + * @return TRUE if request successful, FALSE if not + *************************************************************************/ +BOOL testResetDG82CStateTimerOverride( void ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + targetTimer82C.override = OVERRIDE_RESET; + targetTimer82C.ovData = targetTimer82C.ovInitData; + result = TRUE; + } + + return result; +} + /**@}*/ // ********** Nelson Support Functions **********