#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 {
__xdata uint8_t request, firing, fired;
__critical {
- ao_adc_sleep();
ao_adc_get(&adc);
request = ao_ignition[igniter].request;
fired = ao_ignition[igniter].fired;
ao_igniter(void)
{
__xdata enum ao_ignter igniter;
- __xdata enum ao_igniter_status status;
ao_config_get();
for (;;) {
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;
}
}
}
}
__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;