Index: firmware/App/Controllers/Fans.c =================================================================== diff -u -r24a3d75da20cdb0804f781d4992a6585f1883e06 -r23a9049676f2b47bea8f924bc00b14eb378bf28c --- firmware/App/Controllers/Fans.c (.../Fans.c) (revision 24a3d75da20cdb0804f781d4992a6585f1883e06) +++ firmware/App/Controllers/Fans.c (.../Fans.c) (revision 23a9049676f2b47bea8f924bc00b14eb378bf28c) @@ -492,17 +492,18 @@ SET_ALARM_WITH_1_F32_DATA( ALARM_ID_DG_FAN_RPM_OUT_OF_RANGE, rpm ) // Set the alarm flag to TRUE hasAlarmBeenRaised = TRUE; + + // If the alarm has been raised but the start time of the alarm has not been set, set the alarm start timer + if ( 0 == rpmAlarmStartTime ) + { + rpmAlarmStartTime = getMSTimerCount(); + } } - // If the alarm has been raised but the start time of the alarm has not been set, set the alarm start timer - if ( ( TRUE == hasAlarmBeenRaised ) && ( 0 == rpmAlarmStartTime ) ) - { - rpmAlarmStartTime = getMSTimerCount(); - } } // If the alarm has been raised and the alarm has been silent for at least a day, set the flag to FALSE // This way, if the fans RPM are out of range the alarm will be raised again. This alarm is supposed to be raised // and remain silent for a defined period of time. - else if ( TRUE == hasAlarmBeenRaised ) + else { // Get the offset time since the last alarm. If the offset time has been overridden, then do not include the time that the alarm was raised first. // Overrides are used to verify the code so what is sent to the firmware from override is intended to be the actual time so check whether the alarm is