altos: Update time for next alarm each time a task is added
[fw/altos] / src / core / ao_task.c
index c24c992927782438e35cba1871e2d643be656760..4f48e32dcc4c86679d7a6508188e6bf78a35dd3d 100644 (file)
@@ -109,6 +109,8 @@ ao_task_validate_alarm_queue(void)
                                ao_panic(3);
                }
        }
+       if (ao_task_alarm_tick != ao_list_first_entry(&alarm_queue, struct ao_task, alarm_queue)->alarm)
+               ao_panic(4);
 }
 #else
 #define ao_task_validate_alarm_queue()
@@ -123,6 +125,7 @@ ao_task_to_alarm_queue(struct ao_task *task)
        ao_list_for_each_entry(alarm, &alarm_queue, struct ao_task, alarm_queue) {
                if ((int16_t) (alarm->alarm - task->alarm) >= 0) {
                        ao_list_insert(&task->alarm_queue, alarm->alarm_queue.prev);
+                       ao_task_alarm_tick = ao_list_first_entry(&alarm_queue, struct ao_task, alarm_queue)->alarm;
                        ao_task_validate_alarm_queue();
                        return;
                }
@@ -512,6 +515,7 @@ ao_exit(void)
        /* we'll never get back here */
 }
 
+#if HAS_TASK_INFO
 void
 ao_task_info(void)
 {
@@ -528,6 +532,7 @@ ao_task_info(void)
        ao_task_validate();
 #endif
 }
+#endif
 
 void
 ao_start_scheduler(void)