Watchdog Timer

Fork of mbed-src by mbed official

Revision:
304:89b9c3a9a045
Parent:
221:8276e3a4886f
Child:
361:56c2a6244bba
--- a/common/us_ticker_api.c	Fri Aug 29 11:45:07 2014 +0100
+++ b/common/us_ticker_api.c	Fri Aug 29 17:15:07 2014 +0100
@@ -45,6 +45,8 @@
             if (event_handler != NULL) {
                 event_handler(p->id); // NOTE: the handler can set new events
             }
+            /* Note: We continue back to examining the head because calling the
+             * event handler may have altered the chain of pending events. */
         } else {
             // This event and the following ones in the list are in the future:
             //      set it as next interrupt and return
@@ -54,7 +56,7 @@
     }
 }
 
-void us_ticker_insert_event(ticker_event_t *obj, unsigned int timestamp, uint32_t id) {
+void us_ticker_insert_event(ticker_event_t *obj, timestamp_t timestamp, uint32_t id) {
     /* disable interrupts for the duration of the function */
     __disable_irq();
 
@@ -95,7 +97,9 @@
     if (head == obj) {
         // first in the list, so just drop me
         head = obj->next;
-        if (obj->next != NULL) {
+        if (head == NULL) {
+            us_ticker_disable_interrupt();
+        } else {
             us_ticker_set_interrupt(head->timestamp);
         }
     } else {