Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -r1a1f165e033e39d322308cfeac65126c2a006d78 -r2cbca79846543393e3811b4934042d5a12bec49f --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 1a1f165e033e39d322308cfeac65126c2a006d78) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 2cbca79846543393e3811b4934042d5a12bec49f) @@ -267,6 +267,13 @@ if ( ( FALSE == alarmIsActive[ alarm ] ) || ( ( FALSE == alarmIsDetected[ alarm ] ) && ( FALSE == ALARM_TABLE[ alarm ].alarmConditionClearImmed ) ) ) { + // If alarms are silenced and this new alarm is of higher or same priority, end silence due to new alarm + if ( ( ALARM_TABLE[ alarm ].alarmPriority >= ALARM_TABLE[ alarmStatus.alarmTop ].alarmPriority ) || + ( ( ALARM_TABLE[ alarm ].alarmPriority == ALARM_TABLE[ alarmStatus.alarmTop ].alarmPriority ) && + ( ALARM_RANK_TABLE[ alarm ].alarmSubRank < ALARM_RANK_TABLE[ alarmStatus.alarmTop ].alarmSubRank ) ) ) + { + alarmStatus.alarmsSilenced = FALSE; + } // If alarm status was that no alarms currently active, set this alarm as top alarm until status formally updated later if ( ALARM_ID_NO_ALARM == alarmStatus.alarmTop ) { @@ -277,8 +284,6 @@ { alarmStatus.stop = TRUE; } - // If alarms silenced, end silence due to new alarm - alarmStatus.alarmsSilenced = FALSE; // If alarm is a fault (and not in service mode), request transition to fault mode if ( ( TRUE == ALARM_TABLE[ alarm ].alarmIsFault ) && ( getCurrentOperationMode() != MODE_SERV ) ) {