Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -rbb1f2d023593cbd1428c05e361745623a60ffb94 -r5d82009d1baa2b52122065934481745bf4de223b --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision bb1f2d023593cbd1428c05e361745623a60ffb94) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 5d82009d1baa2b52122065934481745bf4de223b) @@ -20,6 +20,7 @@ #include "AlarmMgmt.h" #include "OperationModes.h" #include "PersistentAlarm.h" +#include "SystemComm.h" #include "SystemCommMessages.h" #include "TaskGeneral.h" #include "Timers.h" @@ -33,6 +34,9 @@ // *** This declaration will cause a compiler error if ALARM_TABLE does not have same # of alarms as the Alarm_List enumeration. U08 alarmTableSizeAssertion[ ( ( sizeof( ALARM_TABLE ) / sizeof( ALARM_T ) ) == NUM_OF_ALARM_IDS ? 1 : -1 ) ]; + +// *** This declaration will cause a compiler error if ALARM_RANK_TABLE does not have same # of alarms as the Alarm_List enumeration. +U08 alarmRankTableSizeAssertion[ ( ( sizeof( ALARM_RANK_TABLE ) / sizeof( ALARM_RANK_T ) ) == NUM_OF_ALARM_IDS ? 1 : -1 ) ]; const ALARM_DATA_T BLANK_ALARM_DATA = { ALARM_DATA_TYPE_NONE, 0 }; ///< A blank alarm data record for alarms that do not include alarm data when triggered. @@ -100,6 +104,11 @@ if ( TRUE == ALARM_TABLE[ alarm ].alarmIsDGFault ) { requestNewOperationMode( DG_MODE_FAUL ); + } + // If alarm has clear condition immediately property, clear condition now + if ( TRUE == ALARM_TABLE[ alarm ].alarmConditionClearImmed ) + { + clearAlarmCondition( alarm ); } } } @@ -154,7 +163,7 @@ void activateAlarm2Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData1, ALARM_DATA_T alarmData2 ) { // broadcast alarm and data if alarm not already active - if ( FALSE == alarmIsActive[ alarm ] ) + if ( ( FALSE == alarmIsActive[ alarm ] ) && ( TRUE == isHDCommunicating() ) ) { broadcastAlarmTriggered( alarm, alarmData1, alarmData2 ); } @@ -177,8 +186,11 @@ { // clear alarm and broadcast alarm clear if not already cleared if ( TRUE == alarmIsActive[ alarm ] ) - { - broadcastAlarmCleared( alarm ); + { + if ( TRUE == isHDCommunicating() ) + { + broadcastAlarmCleared( alarm ); + } alarmIsActive[ alarm ] = FALSE; clearAlarmCondition( alarm ); } @@ -206,7 +218,10 @@ // clear alarm and broadcast alarm clear if not already cleared if ( TRUE == alarmConditionIsActive[ alarm ] ) { - broadcastAlarmConditionCleared( alarm ); + if ( TRUE == isHDCommunicating() ) + { + broadcastAlarmConditionCleared( alarm ); + } alarmConditionIsActive[ alarm ] = FALSE; } }