summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2011-09-27 21:06:54 -0700
committerKeith Packard <keithp@keithp.com>2011-09-27 21:30:55 -0700
commitbbc46241a5c5f15b74d37b1d032e6cde28b501a9 (patch)
treeb607b09e4683420bab0ec830368761af67e32b4e
parentac7633630c1b04fdd761c16af7bd9377e76926c5 (diff)
altos: TM: Don't turn on packet slave mode until idle/invalid state
Leave the packet link disabled until we've checked the accelerometer. That way, we cannot accidentally get to idle mode when the rocket is on the rail. Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--src/ao_flight.c11
-rw-r--r--src/ao_packet_slave.c6
-rw-r--r--src/ao_telemetrum.c2
3 files changed, 15 insertions, 4 deletions
diff --git a/src/ao_flight.c b/src/ao_flight.c
index 85c1825b..0a9cc046 100644
--- a/src/ao_flight.c
+++ b/src/ao_flight.c
@@ -91,6 +91,8 @@ ao_flight(void)
*/
ao_flight_state = ao_flight_invalid;
+ /* Turn on packet system in invalid mode on TeleMetrum */
+ ao_packet_slave_start();
} else
#endif
if (!ao_flight_force_idle
@@ -108,8 +110,10 @@ ao_flight(void)
ao_usb_disable();
#endif
- /* Disable packet mode in pad state */
+#if !HAS_ACCEL
+ /* Disable packet mode in pad state on TeleMini */
ao_packet_slave_stop();
+#endif
/* Turn on telemetry system */
ao_rdf_set(1);
@@ -121,6 +125,11 @@ ao_flight(void)
/* Set idle mode */
ao_flight_state = ao_flight_idle;
+#if HAS_ACCEL
+ /* Turn on packet system in idle mode on TeleMetrum */
+ ao_packet_slave_start();
+#endif
+
/* signal successful initialization by turning off the LED */
ao_led_off(AO_LED_RED);
}
diff --git a/src/ao_packet_slave.c b/src/ao_packet_slave.c
index 9f14052a..d7cafa68 100644
--- a/src/ao_packet_slave.c
+++ b/src/ao_packet_slave.c
@@ -37,8 +37,10 @@ ao_packet_slave(void)
void
ao_packet_slave_start(void)
{
- ao_packet_enable = 1;
- ao_add_task(&ao_packet_task, ao_packet_slave, "slave");
+ if (!ao_packet_enable) {
+ ao_packet_enable = 1;
+ ao_add_task(&ao_packet_task, ao_packet_slave, "slave");
+ }
}
void
diff --git a/src/ao_telemetrum.c b/src/ao_telemetrum.c
index f560740a..ea77f5af 100644
--- a/src/ao_telemetrum.c
+++ b/src/ao_telemetrum.c
@@ -57,7 +57,7 @@ main(void)
ao_gps_report_init();
ao_telemetry_init();
ao_radio_init();
- ao_packet_slave_init(TRUE);
+ ao_packet_slave_init(FALSE);
ao_igniter_init();
#if HAS_DBG
ao_dbg_init();