altos: Trigger sample complete when all data are ready
[fw/altos] / src / stm / ao_timer.c
index adec7aad950f617fc3effe7055db3749167ebaa5..78228e65b72d10ad43df98e47694fc92c4b374bf 100644 (file)
@@ -37,9 +37,9 @@ ao_delay(uint16_t ticks)
        ao_sleep(&ao_forever);
 }
 
-#if HAS_ADC
-volatile __data uint8_t        ao_adc_interval = 1;
-volatile __data uint8_t        ao_adc_count;
+#if AO_DATA_ALL
+volatile __data uint8_t        ao_data_interval = 1;
+volatile __data uint8_t        ao_data_count;
 #endif
 
 void
@@ -51,10 +51,13 @@ void stm_tim6_isr(void)
        if (stm_tim6.sr & (1 << STM_TIM67_SR_UIF)) {
                stm_tim6.sr = 0;
                ++ao_tick_count;
-#if HAS_ADC
-               if (++ao_adc_count == ao_adc_interval) {
-                       ao_adc_count = 0;
+#if AO_DATA_ALL
+               if (++ao_data_count == ao_data_interval) {
+                       ao_data_count = 0;
                        ao_adc_poll();
+#if (AO_DATA_ALL & ~(AO_DATA_ADC))
+                       ao_wakeup((void *) &ao_data_count);
+#endif
                }
 #endif
        }
@@ -64,8 +67,8 @@ void stm_tim6_isr(void)
 void
 ao_timer_set_adc_interval(uint8_t interval) __critical
 {
-       ao_adc_interval = interval;
-       ao_adc_count = 0;
+       ao_data_interval = interval;
+       ao_data_count = 0;
 }
 #endif