From: Keith Packard Date: Thu, 17 May 2018 05:05:26 +0000 (-0700) Subject: altos/vidtime: Check for value change in normal code, not irq X-Git-Tag: 1.8.6~1^2~58 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=5a26df7db9453bf0596f729a23efb90e5e8a63c7 altos/vidtime: Check for value change in normal code, not irq This makes sure each value change is reported to the user. Signed-off-by: Keith Packard --- diff --git a/src/vidtime/ao_vidtime.c b/src/vidtime/ao_vidtime.c index e7f2c219..1b9b9e1c 100644 --- a/src/vidtime/ao_vidtime.c +++ b/src/vidtime/ao_vidtime.c @@ -24,33 +24,25 @@ static uint8_t vidtime_monitor; static void vidtime(void) { + uint8_t old = 0, got; + ao_exti_enable(AO_SENSOR_PORT, AO_SENSOR_PIN); for (;;) { while (!vidtime_monitor) ao_sleep(&vidtime_monitor); - ao_sleep(&sensor_value); - printf("%d\n", sensor_value); + while ((got = sensor_value) == old) + ao_sleep(&sensor_value); + printf("%d\n", got); flush(); + old = got; } } static void sensor_interrupt(void) { - uint8_t new = ao_gpio_get(AO_SENSOR_PORT, AO_SENSOR_PIN, foo); - -#if 0 - if (new) - ao_exti_set_mode(AO_SENSOR_PORT, AO_SENSOR_PIN, - AO_EXTI_MODE_FALLING); - else - ao_exti_set_mode(AO_SENSOR_PORT, AO_SENSOR_PIN, - AO_EXTI_MODE_RISING); -#endif - if (new != sensor_value) { - sensor_value = new; - ao_wakeup(&sensor_value); - } + sensor_value = ao_gpio_get(AO_SENSOR_PORT, AO_SENSOR_PIN, foo); + ao_wakeup(&sensor_value); } static struct ao_task vidtime_task;