summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2012-06-26 23:25:00 -0700
committerKeith Packard <keithp@keithp.com>2012-06-26 23:26:32 -0700
commit4847595e0383e5ff9c5a373f3c7f2af8c210c50a (patch)
treef83c9a7b402ee246ce9993e147b506f7dc0aca96 /src
parent8efac8eb99a9aabb45d9fbf742e4be91e4b331a5 (diff)
altos: ao_ignite.c is no longer cc1111 specific
Move it to core Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src')
-rw-r--r--src/core/ao_ignite.c (renamed from src/cc1111/ao_ignite.c)53
1 files changed, 35 insertions, 18 deletions
diff --git a/src/cc1111/ao_ignite.c b/src/core/ao_ignite.c
index cf07dfe8..561b5513 100644
--- a/src/cc1111/ao_ignite.c
+++ b/src/core/ao_ignite.c
@@ -27,6 +27,11 @@ ao_ignite(enum ao_igniter igniter) __critical
ao_wakeup(&ao_ignition);
}
+#ifndef AO_SENSE_DROGUE
+#define AO_SENSE_DROGUE(p) ((p)->adc.sense_d)
+#define AO_SENSE_MAIN(p) ((p)->adc.sense_m)
+#endif
+
enum ao_igniter_status
ao_igniter_status(enum ao_igniter igniter)
{
@@ -46,10 +51,10 @@ ao_igniter_status(enum ao_igniter igniter)
value = (AO_IGNITER_CLOSED>>1);
switch (igniter) {
case ao_igniter_drogue:
- value = packet.adc.sense_d;
+ value = AO_SENSE_DROGUE(&packet);
break;
case ao_igniter_main:
- value = packet.adc.sense_m;
+ value = AO_SENSE_MAIN(&packet);
break;
}
if (value < AO_IGNITER_OPEN)
@@ -60,6 +65,19 @@ ao_igniter_status(enum ao_igniter igniter)
return ao_igniter_unknown;
}
+#ifndef AO_IGNITER_SET_DROGUE
+#define AO_IGNITER_SET_DROGUE(v) AO_IGNITER_DROGUE = (v)
+#define AO_IGNITER_SET_MAIN(v) AO_IGNITER_MAIN = (v)
+#endif
+
+#ifndef AO_IGNITER_FIRE_TIME
+#define AO_IGNITER_FIRE_TIME AO_MS_TO_TICKS(50)
+#endif
+
+#ifndef AO_IGNITER_CHARGE_TIME
+#define AO_IGNITER_CHARGE_TIME AO_MS_TO_TICKS(2000)
+#endif
+
void
ao_igniter_fire(enum ao_igniter igniter) __critical
{
@@ -69,40 +87,40 @@ ao_igniter_fire(enum ao_igniter igniter) __critical
case AO_IGNITE_MODE_DUAL:
switch (igniter) {
case ao_igniter_drogue:
- AO_IGNITER_DROGUE = 1;
+ AO_IGNITER_SET_DROGUE(1);
ao_delay(AO_IGNITER_FIRE_TIME);
- AO_IGNITER_DROGUE = 0;
+ AO_IGNITER_SET_DROGUE(0);
break;
case ao_igniter_main:
- AO_IGNITER_MAIN = 1;
+ AO_IGNITER_SET_MAIN(1);
ao_delay(AO_IGNITER_FIRE_TIME);
- AO_IGNITER_MAIN = 0;
+ AO_IGNITER_SET_MAIN(0);
break;
}
break;
case AO_IGNITE_MODE_APOGEE:
switch (igniter) {
case ao_igniter_drogue:
- AO_IGNITER_DROGUE = 1;
+ AO_IGNITER_SET_DROGUE(1);
ao_delay(AO_IGNITER_FIRE_TIME);
- AO_IGNITER_DROGUE = 0;
+ AO_IGNITER_SET_DROGUE(0);
ao_delay(AO_IGNITER_CHARGE_TIME);
- AO_IGNITER_MAIN = 1;
+ AO_IGNITER_SET_MAIN(1);
ao_delay(AO_IGNITER_FIRE_TIME);
- AO_IGNITER_MAIN = 0;
+ AO_IGNITER_SET_MAIN(0);
break;
}
break;
case AO_IGNITE_MODE_MAIN:
switch (igniter) {
case ao_igniter_main:
- AO_IGNITER_DROGUE = 1;
+ AO_IGNITER_SET_DROGUE(1);
ao_delay(AO_IGNITER_FIRE_TIME);
- AO_IGNITER_DROGUE = 0;
+ AO_IGNITER_SET_DROGUE(0);
ao_delay(AO_IGNITER_CHARGE_TIME);
- AO_IGNITER_MAIN = 1;
+ AO_IGNITER_SET_MAIN(1);
ao_delay(AO_IGNITER_FIRE_TIME);
- AO_IGNITER_MAIN = 0;
+ AO_IGNITER_SET_MAIN(0);
break;
}
break;
@@ -114,7 +132,7 @@ ao_igniter_fire(enum ao_igniter igniter) __critical
void
ao_igniter(void)
{
- __xdata enum ao_ignter igniter;
+ __xdata enum ao_igniter igniter;
ao_config_get();
for (;;) {
@@ -179,9 +197,8 @@ __xdata struct ao_task ao_igniter_task;
void
ao_ignite_set_pins(void)
{
- AO_IGNITER_DROGUE = 0;
- AO_IGNITER_MAIN = 0;
- AO_IGNITER_DIR |= AO_IGNITER_DROGUE_BIT | AO_IGNITER_MAIN_BIT;
+ ao_enable_output(AO_IGNITER_DROGUE_PORT, AO_IGNITER_DROGUE_PIN, 0);
+ ao_enable_output(AO_IGNITER_MAIN_PORT, AO_IGNITER_MAIN_PIN, 0);
}
void