altos/cc1111: Wake up non-ADC sensor code each timer tick
[fw/altos] / src / cc1111 / ao_timer.c
index c977fbc8b85a2f997c38e48df05f857306bac658..54af9605b59bb997fa75b89508bb45e41f06e8d8 100644 (file)
 
 #include "ao.h"
 
-static volatile __data uint16_t ao_tick_count;
+volatile __data uint16_t ao_tick_count;
 
 uint16_t ao_time(void) __critical
 {
        return ao_tick_count;
 }
 
-static __xdata uint8_t ao_forever;
-
-void
-ao_delay(uint16_t ticks)
-{
-       ao_alarm(ticks);
-       ao_sleep(&ao_forever);
-}
-
 #define T1_CLOCK_DIVISOR       8       /* 24e6/8 = 3e6 */
 #define T1_SAMPLE_TIME         30000   /* 3e6/30000 = 100 */
 
@@ -48,6 +39,9 @@ void ao_timer_isr(void) __interrupt 9
        if (++ao_adc_count == ao_adc_interval) {
                ao_adc_count = 0;
                ao_adc_poll();
+#if (AO_DATA_ALL & ~(AO_DATA_ADC))
+               ao_wakeup(DATA_TO_XDATA(&ao_adc_count));
+#endif
        }
 #endif
 }