altos: clear CPU port 1 interrupt flag when handled
[fw/altos] / src / ao_ignite.c
index 8206e342ef2f5c119a41ddb1420d1531f7d7522e..7874ee01fcdffe359597d726ad599fcc8b8776e8 100644 (file)
 
 #include "ao.h"
 
+#if IGNITE_ON_P2
 #define AO_IGNITER_DROGUE      P2_3
 #define AO_IGNITER_MAIN                P2_4
 #define AO_IGNITER_DIR         P2DIR
 #define AO_IGNITER_DROGUE_BIT  (1 << 3)
 #define AO_IGNITER_MAIN_BIT    (1 << 4)
+#endif
+
+#if IGNITE_ON_P0
+#define AO_IGNITER_DROGUE      P0_5
+#define AO_IGNITER_MAIN                P0_4
+#define AO_IGNITER_DIR         P0DIR
+#define AO_IGNITER_DROGUE_BIT  (1 << 5)
+#define AO_IGNITER_MAIN_BIT    (1 << 4)
+#endif
 
 /* test these values with real igniters */
 #define AO_IGNITER_OPEN                1000
 #define AO_IGNITER_CLOSED      7000
-#define AO_IGNITER_FIRE_TIME   AO_MS_TO_TICKS(500)
+#define AO_IGNITER_FIRE_TIME   AO_MS_TO_TICKS(50)
 #define AO_IGNITER_CHARGE_TIME AO_MS_TO_TICKS(2000)
 
 struct ao_ignition {
@@ -52,7 +62,6 @@ ao_igniter_status(enum ao_igniter igniter)
        __xdata uint8_t request, firing, fired;
 
        __critical {
-               ao_adc_sleep();
                ao_adc_get(&adc);
                request = ao_ignition[igniter].request;
                fired = ao_ignition[igniter].fired;
@@ -101,7 +110,6 @@ void
 ao_igniter(void)
 {
        __xdata enum ao_ignter igniter;
-       __xdata enum ao_igniter_status status;
 
        ao_config_get();
        for (;;) {
@@ -113,28 +121,12 @@ ao_igniter(void)
 
                                ao_igniter_fire(igniter);
                                ao_delay(AO_IGNITER_CHARGE_TIME);
-                               status = ao_igniter_status(igniter);
-                               if (status == ao_igniter_open)
-                                       ao_ignition[igniter].fired = 1;
+                               ao_ignition[igniter].fired = 1;
                        }
                }
        }
 }
 
-static uint8_t
-ao_match_word(__code char *word)
-{
-       while (*word) {
-               if (ao_cmd_lex_c != *word) {
-                       ao_cmd_status = ao_cmd_syntax_error;
-                       return 0;
-               }
-               word++;
-               ao_cmd_lex();
-       }
-       return 1;
-}
-
 void
 ao_ignite_manual(void)
 {
@@ -172,9 +164,9 @@ ao_ignite_test(void)
 }
 
 __code struct ao_cmds ao_ignite_cmds[] = {
-       { 'i',  ao_ignite_manual,       "i <key> {main|drogue}              Fire igniter. <key> is doit with D&I" },
-       { 't',  ao_ignite_test,         "t                                  Test igniter continuity" },
-       { 0,    ao_ignite_manual,       NULL },
+       { ao_ignite_manual,     "i <key> {main|drogue}\0Fire igniter. <key> is doit with D&I" },
+       { ao_ignite_test,       "t\0Test igniter continuity" },
+       { 0,    NULL },
 };
 
 __xdata struct ao_task ao_igniter_task;