Index: PersistentAlarm.c =================================================================== diff -u -rffbcb3688e46a39410a395e796f4249363b96f1c -r7f049fb55e8f7fd41cf2dbd19a0e43d4e684af78 --- PersistentAlarm.c (.../PersistentAlarm.c) (revision ffbcb3688e46a39410a395e796f4249363b96f1c) +++ PersistentAlarm.c (.../PersistentAlarm.c) (revision 7f049fb55e8f7fd41cf2dbd19a0e43d4e684af78) @@ -98,16 +98,24 @@ { if ( isOutOfRange ) { - persistentAlarms[ alarmIndex ].inRangeStartTime = getMSTimerCount(); - if ( calcTimeSince( persistentAlarms[ alarmIndex ].outOfRangeStartTime ) >= persistentAlarms[ alarmIndex ].persistentTriggerPeriod ) + persistentAlarms[ alarmIndex ].inRangeStartTime = 0; + if ( persistentAlarms[ alarmIndex ].outOfRangeStartTime == 0 ) { + persistentAlarms[ alarmIndex ].outOfRangeStartTime = getMSTimerCount(); + } + if ( didTimeout( persistentAlarms[ alarmIndex ].outOfRangeStartTime, persistentAlarms[ alarmIndex ].persistentTriggerPeriod ) ) + { SET_ALARM_WITH_1_F32_DATA( persistentAlarms[ alarmIndex ].alarm, data ); } } else { - persistentAlarms[ alarmIndex ].outOfRangeStartTime = getMSTimerCount(); - BOOL const isInRangePersistent = calcTimeSince( persistentAlarms[ alarmIndex ].inRangeStartTime ) >= persistentAlarms[ alarmIndex ].persistentClearPeriod; + persistentAlarms[ alarmIndex ].outOfRangeStartTime = 0; + if ( persistentAlarms[ alarmIndex ].inRangeStartTime == 0 ) + { + persistentAlarms[ alarmIndex ].inRangeStartTime = getMSTimerCount(); + } + BOOL const isInRangePersistent = didTimeout( persistentAlarms[ alarmIndex ].inRangeStartTime, persistentAlarms[ alarmIndex ].persistentClearPeriod ); if ( persistentAlarms[ alarmIndex ].isClearable && isInRangePersistent ) { clearAlarm( persistentAlarms[ alarmIndex ].alarm );