altos: Increase SD card timeout at startup time
[fw/altos] / src / drivers / ao_quadrature.c
index aed4999e974cb666a6293934a85cd9f4ca5efe96..6cc2467a44ba2449121faaffcf4451d9401d0fe0 100644 (file)
 #include <ao.h>
 #include <ao_quadrature.h>
 #include <ao_exti.h>
+#if AO_EVENT
+#include <ao_event.h>
+#define ao_quadrature_queue(q) ao_event_put_isr(AO_EVENT_QUADRATURE, q, ao_quadrature_count[q])
+#else
+#define ao_quadrature_queue(q)
+#endif
 
 __xdata int32_t ao_quadrature_count[AO_QUADRATURE_COUNT];
 
@@ -59,6 +65,7 @@ ao_quadrature_isr(void)
                default:
                        continue;
                }
+               ao_quadrature_queue(q);
                ao_wakeup(&ao_quadrature_count[q]);
        }
 }
@@ -81,38 +88,22 @@ ao_quadrature_wait(uint8_t q)
 static void
 ao_quadrature_test(void)
 {
-#if 1
+       uint8_t q;
+
+       ao_cmd_decimal();
+       q = ao_cmd_lex_i;
        for (;;) {
                int32_t c;
                flush();
-               c = ao_quadrature_wait(0);
+               c = ao_quadrature_wait(q);
                printf ("new count %6d\n", c);
                if (c == 100)
                        break;
        }
-#endif
-#if 0
-       uint8_t a, old_a, b, old_b;
-
-       old_a = 2; old_b = 2;
-       for (;;) {
-               a = ao_gpio_get(AO_QUADRATURE_PORT, AO_QUADRATURE_A, AO_QUADRATURE_A_PIN);
-               b = ao_gpio_get(AO_QUADRATURE_PORT, AO_QUADRATURE_B, AO_QUADRATURE_B_PIN);
-               if (a != old_a || b != old_b) {
-                       printf ("A %d B %d count %ld\n", a, b, ao_quadrature_count);
-                       flush();
-                       ao_yield();
-                       old_a = a;
-                       old_b = b;
-               }
-               if (ao_stdin_ready)
-                       break;
-       }
-#endif         
 }
 
 static const struct ao_cmds ao_quadrature_cmds[] = {
-       { ao_quadrature_test,   "q\0Test quadrature" },
+       { ao_quadrature_test,   "q <unit>\0Test quadrature" },
        { 0, NULL }
 };