Index: firmware/App/Modes/ModeChemicalDisinfect.c =================================================================== diff -u -re107dacab9f6c78574f1c26e1004e0dbdc8dba03 -re8f6f5fda0c67cd09a0a7968e3cf305691e75101 --- firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision e107dacab9f6c78574f1c26e1004e0dbdc8dba03) +++ firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision e8f6f5fda0c67cd09a0a7968e3cf305691e75101) @@ -53,9 +53,9 @@ // Drain R1 & R2 states defines #define DRAIN_PUMP_TARGET_RPM 2400 ///< Drain pump target RPM during drain. -#define DRAIN_WEIGHT_UNCHANGE_TIMEOUT_MS ( 6 * MS_PER_SECOND ) ///< Time period of unchanged weight during draining before timeout. +#define DRAIN_WEIGHT_UNCHANGE_TIMEOUT_MS ( 6 * MS_PER_SECOND ) ///< Time period of unchanged weight during draining before timeout. #define RSRVRS_DRAIN_TIMEOUT_MS ( 2 * SEC_PER_MIN * MS_PER_SECOND ) ///< Reservoirs 1 & 2 drain timeout in ms. -#define RSRVRS_INITIAL_DRAIN_TIMEOUT_MS ( 2 * SEC_PER_MIN * MS_PER_SECOND ) ///< Reservoirs 1 & 2 initial drain time out in milliseconds. +#define RSRVRS_INITIAL_DRAIN_TIMEOUT_MS ( 2 * SEC_PER_MIN * MS_PER_SECOND ) ///< Reservoirs 1 & 2 initial drain time out in milliseconds. // Flush drain path state defines #define FLUSH_DRAIN_WAIT_TIME_MS ( 60 * MS_PER_SECOND ) ///< Flush Drain path wait time in milliseconds. @@ -212,16 +212,29 @@ * The initChemicalDisinfectMode function initializes the chemical * disinfect mode module. * @details Inputs: none - * @details Outputs: chemDisinfectState, stateTimer, isThisLastDrain, - * stateTrialCounter, areTempSensorsInRange, rsrvr1Status, rsrvr2Status, - * overallChemDisinfectTimer, - * cancellationMode, rsrvrFillStableTimeCounter, prevChemDisinfectState - * isPartialDisinfectInProgress, primeAcidSteadyStateCounter, - * chemDisinfectUIState, haveDrainParamsBeenInit, disinfectNVOps + * @details Outputs: chemDisinfectState, prevChemDisinfectState + * stateTimer, isThisLastDrain, stateTrialCounter + * rsrvr1Status, rsrvr2Status, overallChemDisinfectTimer, cancellationMode, + * rsrvrFillToFullStableTimeCounter, primeAcidSteadyStateCounter, isRsrvrLeaking, + * chemDisinfectReservoirTime, ischemDisinfectWarmupTargetReached, + * isChemDisinfectTempAboveTarget, chemDisinfectUIState, isRsrvrLeaking, + * disinfectNVOps.hasDisStatusBeenWrittenToNV, rsrvrsVolMonitorCounter, + * DisinfectCycleCounter, drpControlTimerCounter, dataPublishCounter, + * alarmDetectedPendingTrigger, flushCircWaitTime, flushDisinfectantWaitTime + * primeAcidSteadyStateCounter, rsrvrFillStableTimeCounter, R1FullVolume, + * rsrvrFillToFullStableTimeCounter, R2FullVolume, disinfectantMixRatio, + * haveDrainParamsBeenInit[ DG_RESERVOIR_1 ], haveDrainParamsBeenInit[ DG_RESERVOIR_2 ] * @return none *************************************************************************/ void initChemicalDisinfectMode( void ) { + DG_RESERVOIR_ID_T rsrvr; + + for ( rsrvr = DG_RESERVOIR_1; rsrvr < NUM_OF_DG_RESERVOIRS; rsrvr++ ) + { + haveDrainParamsBeenInit[ rsrvr ] = FALSE; + } + chemDisinfectState = DG_CHEM_DISINFECT_STATE_START; prevChemDisinfectState = DG_CHEM_DISINFECT_STATE_START; stateTimer = 0; @@ -254,8 +267,6 @@ R1FullVolume = 0.0F; R2FullVolume = 0.0F; disinfectantMixRatio = 0.0F; - haveDrainParamsBeenInit[ DG_RESERVOIR_1 ] = FALSE; - haveDrainParamsBeenInit[ DG_RESERVOIR_2 ] = FALSE; initPersistentAlarm( ALARM_ID_DG_CHEM_DISINFECT_TARGET_TEMP_OUT_OF_RANGE, DISINFECT_TEMP_OUT_OF_RANGE_TIMEOUT_MS, DISINFECT_TEMP_OUT_OF_RANGE_TIMEOUT_MS ); initPersistentAlarm( ALARM_ID_DG_CHEM_DISINFECT_TARGET_COND_OUT_OF_RANGE, DISINFECT_COND_OUT_OF_RANGE_TIMEOUT_MS, DISINFECT_COND_OUT_OF_RANGE_TIMEOUT_MS ); @@ -616,12 +627,12 @@ if ( TRUE == didTimeout( stateTimer, flushCircWaitTime ) ) { F32 TPoTemp = getTemperatureValue( TEMPSENSORS_OUTLET_PRIMARY_HEATER ); - F32 TD2Temp = 0.0F; + F32 TD2Temp = getTemperatureValue( TEMPSENSORS_CONDUCTIVITY_SENSOR_2 ); #ifndef _RELEASE_ if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_ENABLE_USING_TPO_FOR_PRIMARY_HEATER_CONTROL ) ) { - TD2Temp = getTemperatureValue( TEMPSENSORS_CONDUCTIVITY_SENSOR_2 ); + TD2Temp = getTemperatureValue( TEMPSENSORS_OUTLET_PRIMARY_HEATER ); } #endif @@ -1660,7 +1671,7 @@ } } - if ( ( TRUE == isAnyAlarmActive() ) && ( chemDisinfectState != DG_CHEM_DISINFECT_STATE_CANCEL_WATER_PATH ) ) + if ( ( TRUE == isDGFaultAlarmActive() ) && ( chemDisinfectState != DG_CHEM_DISINFECT_STATE_CANCEL_WATER_PATH ) ) { prevChemDisinfectState = chemDisinfectState; chemDisinfectState = DG_CHEM_DISINFECT_STATE_CANCEL_WATER_PATH; Index: firmware/App/Modes/ModeChemicalDisinfectFlush.c =================================================================== diff -u -re107dacab9f6c78574f1c26e1004e0dbdc8dba03 -re8f6f5fda0c67cd09a0a7968e3cf305691e75101 --- firmware/App/Modes/ModeChemicalDisinfectFlush.c (.../ModeChemicalDisinfectFlush.c) (revision e107dacab9f6c78574f1c26e1004e0dbdc8dba03) +++ firmware/App/Modes/ModeChemicalDisinfectFlush.c (.../ModeChemicalDisinfectFlush.c) (revision e8f6f5fda0c67cd09a0a7968e3cf305691e75101) @@ -1043,7 +1043,7 @@ } } - if ( ( TRUE == isAnyAlarmActive() ) && ( chemDisinfectFlushState != DG_CHEM_DISINFECT_FLUSH_STATE_CANCEL_WATER_PATH ) ) + if ( ( TRUE == isDGFaultAlarmActive() ) && ( chemDisinfectFlushState != DG_CHEM_DISINFECT_FLUSH_STATE_CANCEL_WATER_PATH ) ) { prevChemDisinfectFlushState = chemDisinfectFlushState; chemDisinfectFlushState = DG_CHEM_DISINFECT_FLUSH_STATE_CANCEL_WATER_PATH; Index: firmware/App/Modes/ModeFlush.c =================================================================== diff -u -re107dacab9f6c78574f1c26e1004e0dbdc8dba03 -re8f6f5fda0c67cd09a0a7968e3cf305691e75101 --- firmware/App/Modes/ModeFlush.c (.../ModeFlush.c) (revision e107dacab9f6c78574f1c26e1004e0dbdc8dba03) +++ firmware/App/Modes/ModeFlush.c (.../ModeFlush.c) (revision e8f6f5fda0c67cd09a0a7968e3cf305691e75101) @@ -1126,7 +1126,7 @@ } } - if ( ( TRUE == isAnyAlarmActive() ) && ( flushState != DG_FLUSH_STATE_CANCEL_WATER_PATH ) ) + if ( ( TRUE == isDGFaultAlarmActive() ) && ( flushState != DG_FLUSH_STATE_CANCEL_WATER_PATH ) ) { prevFlushState = flushState; flushState = DG_FLUSH_STATE_CANCEL_WATER_PATH; Index: firmware/App/Modes/ModeHeatDisinfect.c =================================================================== diff -u -re107dacab9f6c78574f1c26e1004e0dbdc8dba03 -re8f6f5fda0c67cd09a0a7968e3cf305691e75101 --- firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision e107dacab9f6c78574f1c26e1004e0dbdc8dba03) +++ firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision e8f6f5fda0c67cd09a0a7968e3cf305691e75101) @@ -1797,7 +1797,7 @@ } } - if ( ( TRUE == isAnyAlarmActive() ) && ( heatDisinfectState != DG_HEAT_DISINFECT_STATE_CANCEL_WATER_PATH ) ) + if ( ( TRUE == isDGFaultAlarmActive() ) && ( heatDisinfectState != DG_HEAT_DISINFECT_STATE_CANCEL_WATER_PATH ) ) { prevHeatDisinfectState = heatDisinfectState; heatDisinfectState = DG_HEAT_DISINFECT_STATE_CANCEL_WATER_PATH; Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -rfcaca0915c314d04b9fa96c1960d32b63ab877db -re8f6f5fda0c67cd09a0a7968e3cf305691e75101 --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision fcaca0915c314d04b9fa96c1960d32b63ab877db) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision e8f6f5fda0c67cd09a0a7968e3cf305691e75101) @@ -57,7 +57,7 @@ static BOOL alarmIsActive[ NUM_OF_ALARM_IDS ]; ///< Array of current state of each alarm static BOOL alarmConditionIsActive[ NUM_OF_ALARM_IDS ]; ///< Array of flag indicates if an alarm condition is active static U32 alarmInfoPublicationTimerCounter; ///< Used to schedule alarm information publication to CAN bus. -static ALARM_ID_T activeAlarm; ///< Active DG alarm to be used to cancel the cleaning modes. +static BOOL isAFlaultAlarmActive; ///< Boolean flag to indicate whether a DG fault alarm is active. /// Interval (in task intervals) at which to publish alarm information to CAN bus. static OVERRIDE_U32_T alarmInfoPublishInterval = { ALARM_INFO_PUB_INTERVAL, ALARM_INFO_PUB_INTERVAL, ALARM_INFO_PUB_INTERVAL, 0 }; @@ -73,7 +73,7 @@ * The initAlarmMgmt function initializes the AlarmMgmt module. * @details Inputs: none * @details Outputs: alarmInfoPublicationTimerCounter, alarmLEDTimer, - * activeAlarm, alarmIsActive, alarmConditionIsActive + * isAFlaultAlarmActive, alarmIsActive, alarmConditionIsActive * @return none *************************************************************************/ void initAlarmMgmt( void ) @@ -82,7 +82,7 @@ alarmInfoPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; alarmLEDTimer = 0; - activeAlarm = ALARM_ID_NO_ALARM; + isAFlaultAlarmActive = FALSE; // initialize alarm states and start time stamps for ( alrm = ALARM_ID_NO_ALARM; alrm < NUM_OF_ALARM_IDS; alrm++ ) @@ -130,8 +130,8 @@ if ( TRUE == ALARM_TABLE[ alarm ].alarmIsDGFault ) { - // There is a DG fault alarm. Update the variable so the modes such as cleaning modes know there is a fault happening. - activeAlarm = alarm; + // There is a DG fault alarm. + isAFlaultAlarmActive = TRUE; if ( TRUE == isTransitionToFaultRequired() ) { @@ -280,17 +280,16 @@ /*********************************************************************//** * @brief - * The isAnyAlarmActive function determines whether any alarm is currently + * The isDGFaultAlarmActive function determines whether a fault alarm is currently * active. * @details Inputs: alarmStatus * @details Outputs: none * @return TRUE if any alarm is active, FALSE if not *************************************************************************/ -BOOL isAnyAlarmActive( void ) +BOOL isDGFaultAlarmActive( void ) { - BOOL result = ( activeAlarm != ALARM_ID_NO_ALARM ? TRUE : FALSE ); - return result; + return isAFlaultAlarmActive; } /*********************************************************************//** Index: firmware/App/Services/AlarmMgmt.h =================================================================== diff -u -rfcaca0915c314d04b9fa96c1960d32b63ab877db -re8f6f5fda0c67cd09a0a7968e3cf305691e75101 --- firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision fcaca0915c314d04b9fa96c1960d32b63ab877db) +++ firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision e8f6f5fda0c67cd09a0a7968e3cf305691e75101) @@ -99,7 +99,7 @@ void clearAlarm( ALARM_ID_T alarm ); void clearAlarmCondition( ALARM_ID_T alarm ); BOOL isAlarmActive( ALARM_ID_T alarm ); -BOOL isAnyAlarmActive( void ); +BOOL isDGFaultAlarmActive( void ); void handleResendActiveAlarmsRequest( void ); BOOL testSetAlarmStateOverride( U32 alarmID, BOOL value );