Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -r9d924ec76ce770eb2a94088bfe37bfb0e30981a8 -r36937bf8b99b3c5145096c327471910f00fbbfc3 --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 9d924ec76ce770eb2a94088bfe37bfb0e30981a8) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 36937bf8b99b3c5145096c327471910f00fbbfc3) @@ -73,7 +73,7 @@ { ALARM_ID_T alarmID; ///< ID of highest priority alarm in this priority category U32 subRank; ///< Sub-rank of this alarm - U32 timeSinceTriggeredMS; ///< Time (in ms) since this alarm was triggered + S32 timeSinceTriggeredMS; ///< Time (in ms) since this alarm was triggered } ALARM_PRIORITY_RANKS_T; /// Enumeration of alarm audio self-test states. @@ -257,6 +257,11 @@ { alarmStatus.alarmTop = alarm; } + // If alarm stops, set that status immediately (don't wait for status update function) + if ( TRUE == ALARM_TABLE[ alarm ].alarmStops ) + { + 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 @@ -866,19 +871,19 @@ // If sub-rank is a tie, see which alarm was triggered first if ( subRank == alarmPriorityFIFO[ almPriority ].subRank ) { - if ( msSinceTriggered > alarmPriorityFIFO[ almPriority ].timeSinceTriggeredMS ) + if ( (S32)msSinceTriggered > alarmPriorityFIFO[ almPriority ].timeSinceTriggeredMS ) { alarmPriorityFIFO[ almPriority ].alarmID = a; alarmPriorityFIFO[ almPriority ].subRank = subRank; - alarmPriorityFIFO[ almPriority ].timeSinceTriggeredMS = msSinceTriggered; + alarmPriorityFIFO[ almPriority ].timeSinceTriggeredMS = (S32)msSinceTriggered; } } // Otherwise, this alarm simply outranks current candidate and wins outright else { alarmPriorityFIFO[ almPriority ].alarmID = a; alarmPriorityFIFO[ almPriority ].subRank = subRank; - alarmPriorityFIFO[ almPriority ].timeSinceTriggeredMS = msSinceTriggered; + alarmPriorityFIFO[ almPriority ].timeSinceTriggeredMS = (S32)msSinceTriggered; } } // Track highest priority alarm found so far of all priority categories @@ -1264,7 +1269,7 @@ { alarmPriorityFIFO[ priority ].alarmID = ALARM_ID_NO_ALARM; alarmPriorityFIFO[ priority ].subRank = LOWEST_ALARM_SUB_RANK; - alarmPriorityFIFO[ priority ].timeSinceTriggeredMS = 0; + alarmPriorityFIFO[ priority ].timeSinceTriggeredMS = -1; } else {