Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -r07b9515c080aa68fecfa331cbc593adea4c0b8dc -rdd4ce30f73606a539e2b1f5c09ed1a3250db68c9 --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 07b9515c080aa68fecfa331cbc593adea4c0b8dc) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision dd4ce30f73606a539e2b1f5c09ed1a3250db68c9) @@ -27,6 +27,8 @@ #define ALARM_STATUS_PUBLISH_INTERVAL (500/TASK_GENERAL_INTERVAL) // 500ms / task interval +#define ALARM_SILENCE_EXPIRES_IN_SECS (60) + #pragma pack(push,1) typedef struct { @@ -496,9 +498,19 @@ } else { - alarmStatus.alarmsSilenceExpiresIn = calcTimeSince( alarmStatus.alarmsSilenceStart ) / MS_PER_SECOND; - if ( 0 == alarmStatus.alarmsEscalatesIn ) + U32 timeSinceAlarmSilenceStart = calcTimeSince( alarmStatus.alarmsSilenceStart ) / MS_PER_SECOND; + + if ( timeSinceAlarmSilenceStart >= ALARM_SILENCE_EXPIRES_IN_SECS ) { + alarmStatus.alarmsSilenceExpiresIn = 0; + } + else + { + alarmStatus.alarmsSilenceExpiresIn = ALARM_SILENCE_EXPIRES_IN_SECS - timeSinceAlarmSilenceStart; + } + // if alarms silence expires, end it + if ( 0 == alarmStatus.alarmsSilenceExpiresIn ) + { alarmStatus.alarmsSilenced = FALSE; } }