altos: struct ao_log_mega doesn't have a ground temp value
[fw/altos] / src / core / ao_task.c
index 4593bd790c4717586d258489749212d5cf4a5aae..65654731aeaeaccc9f45477e156ffa1419d13c0b 100644 (file)
@@ -125,6 +125,7 @@ ao_sleep(__xdata void *wchan)
        ao_yield();
        if (ao_cur_task->wchan) {
                ao_cur_task->wchan = NULL;
+               ao_cur_task->alarm = 0;
                return 1;
        }
        return 0;
@@ -157,6 +158,16 @@ ao_clear_alarm(void)
        ao_cur_task->alarm = 0;
 }
 
+static __xdata uint8_t ao_forever;
+
+void
+ao_delay(uint16_t ticks)
+{
+       ao_alarm(ticks);
+       ao_sleep(&ao_forever);
+       ao_clear_alarm();
+}
+
 void
 ao_exit(void)
 {