altos/telefire: Make sure armed alarm goes off on time
authorKeith Packard <keithp@keithp.com>
Sun, 7 Oct 2012 01:25:15 +0000 (18:25 -0700)
committerKeith Packard <keithp@keithp.com>
Sun, 7 Oct 2012 01:25:15 +0000 (18:25 -0700)
Instead of turning the alarm off when a packet is received after the
deadline, just do it in the thread which is awake all of the time.

This prevents the alarm from sticking on when the LCO box is turned
off while the arming key is on.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/drivers/ao_pad.c

index 55e6289d4108ca64ad0916c49e16ba9200206350..120ce5398cfdd4162a187c1c9277bffb667ae43f 100644 (file)
@@ -139,6 +139,9 @@ ao_pad_monitor(void)
                        prev = cur;
                }
 
+               if (ao_pad_armed && (int16_t) (ao_time() - ao_pad_arm_time) > AO_PAD_ARM_TIME)
+                       ao_pad_armed = 0;
+
                if (ao_pad_armed) {
                        if (sample & 2)
                                ao_beep(AO_BEEP_HIGH);
@@ -197,9 +200,6 @@ ao_pad(void)
                PRINTD ("tick %d box %d cmd %d channels %02x\n",
                        command.tick, command.box, command.cmd, command.channels);
 
-               if (ao_pad_armed && (int16_t) (ao_time() - ao_pad_arm_time) > AO_PAD_ARM_TIME)
-                       ao_pad_armed = 0;
-
                switch (command.cmd) {
                case AO_LAUNCH_ARM:
                        if (command.box != ao_pad_box) {