Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -r9226e7b5b52c30057e93453ced523f563fbd89fe -re47489aaf3c818c6f438434ff6b2cf1cafc4210c --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 9226e7b5b52c30057e93453ced523f563fbd89fe) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision e47489aaf3c818c6f438434ff6b2cf1cafc4210c) @@ -1,14 +1,14 @@ /************************************************************************** * -* Copyright (c) 2020-2023 Diality Inc. - All Rights Reserved. +* Copyright (c) 2020-2024 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file AlarmMgmt.c * * @author (last) Dara Navaei -* @date (last) 05-Jun-2023 +* @date (last) 09-May-2024 * * @author (original) Sean * @date (original) 04-Feb-2020 @@ -20,7 +20,8 @@ #include "AlarmMgmt.h" #include "CPLD.h" #include "OperationModes.h" -#include "PersistentAlarm.h" +#include "PersistentAlarm.h" +#include "Reservoirs.h" #include "SafetyShutdown.h" #include "SystemComm.h" #include "SystemCommMessages.h" @@ -163,7 +164,7 @@ *************************************************************************/ void activateAlarmNoData( ALARM_ID_T alarm ) { - activateAlarm2Data( alarm, BLANK_ALARM_DATA, BLANK_ALARM_DATA ); + activateAlarm2Data( alarm, BLANK_ALARM_DATA, BLANK_ALARM_DATA, FALSE ); } /*********************************************************************//** @@ -179,7 +180,7 @@ *************************************************************************/ void activateAlarm1Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData ) { - activateAlarm2Data( alarm, alarmData, BLANK_ALARM_DATA ); + activateAlarm2Data( alarm, alarmData, BLANK_ALARM_DATA, FALSE ); } /*********************************************************************//** @@ -192,16 +193,26 @@ * @param alarm ID of alarm to activate * @param alarmData1 supporting data to include in alarm message * @param alarmData2 supporting data to include in alarm message + * @param outside flag indicates whether alarm is originating from outside HD f/w * @return none *************************************************************************/ -void activateAlarm2Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData1, ALARM_DATA_T alarmData2 ) +void activateAlarm2Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData1, ALARM_DATA_T alarmData2, BOOL outside ) { - // broadcast alarm and data if alarm not already active - if ( ( FALSE == alarmIsActive[ alarm ] ) && ( TRUE == isHDCommunicating() ) ) - { - broadcastAlarmTriggered( alarm, alarmData1, alarmData2 ); + HD_MODE_SUB_MODE_T hdModes; + + getHDOperationMode( &hdModes ); + + // prevent alarm trigger if property blocks in current mode/state + if ( ( ( ALARM_TABLE[ alarm ].alarmBlockRinseback != TRUE ) || ( hdModes.hdMode != MODE_TREA ) || ( hdModes.hdSubMode != TREATMENT_RINSEBACK_STATE ) ) && + ( ( ALARM_TABLE[ alarm ].alarmBlockEndTx != TRUE ) || ( hdModes.hdMode != MODE_POST ) ) ) + { + // broadcast alarm and data if alarm not already active + if ( ( FALSE == alarmIsActive[ alarm ] ) && ( TRUE == isHDCommunicating() ) ) + { + broadcastAlarmTriggered( alarm, alarmData1, alarmData2 ); + } + activateAlarm( alarm ); } - activateAlarm( alarm ); } /*********************************************************************//** @@ -361,6 +372,7 @@ { BOOL status = FALSE; + // Check all the inlet water conditions status |= isAlarmActive( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_TEMP_TOO_HIGH ); status |= isAlarmActive( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_TEMP_TOO_LOW ); status |= isAlarmActive( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_COND_TOO_HIGH ); @@ -371,12 +383,11 @@ return status; } -/************************************************************************* +/*********************************************************************//** * @brief * The alarmUserNotify function activates Fault LED and Audio if FAULT exists. * @details Inputs: none * @details Outputs: LED and Audio control - * @param none * @return none *************************************************************************/ static void alarmUserNotify( void ) @@ -416,13 +427,12 @@ } } -/************************************************************************* +/*********************************************************************//** * @brief * The isTransitionToFaultRequired function checks whether the alarm management * should request a transition to fault mode immediately or it should be deferred * @details Inputs: none * @details Outputs: none - * @param none * @return TRUE if transition to fault is required otherwise, FALSE *************************************************************************/ static BOOL isTransitionToFaultRequired( void )