altos: Start with packet slave running. Turn off in pad mode.
authorKeith Packard <keithp@keithp.com>
Mon, 7 Mar 2011 05:00:52 +0000 (21:00 -0800)
committerKeith Packard <keithp@keithp.com>
Wed, 16 Mar 2011 22:57:37 +0000 (15:57 -0700)
Instead of turning slave mode on in idle mode, start with it running
and disable it in pad mode instead. This means packet mode is
available in startup mode too.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/ao_flight.c
src/ao_packet_slave.c
src/ao_pins.h

index 843865e8f83d82188f2c3bdf63cb9254c87a494b..8e370c4fa16d7d1eb86bbff1e99ae266feceebbd 100644 (file)
@@ -358,10 +358,6 @@ ao_flight(void)
                                 * (or uncalibrated values), so we go into invalid mode
                                 */
                                ao_flight_state = ao_flight_invalid;
-                               /* Allow packet mode in invalid flight state,
-                                * Still need to be able to fix the problem!
-                                */
-                               ao_packet_slave_start();
 
                        } else
 #endif
@@ -380,6 +376,10 @@ ao_flight(void)
                                 */
                                ao_usb_disable();
 #endif
+
+                               /* Disable packet mode in pad state */
+                               ao_packet_slave_stop();
+
                                /* Turn on telemetry system */
                                ao_rdf_set(1);
                                ao_telemetry_set_interval(AO_TELEMETRY_INTERVAL_PAD);
@@ -390,9 +390,6 @@ ao_flight(void)
                                /* Set idle mode */
                                ao_flight_state = ao_flight_idle;
  
-                               /* Turn on packet system in idle mode */
-                               ao_packet_slave_start();
-
                                /* signal successful initialization by turning off the LED */
                                ao_led_off(AO_LED_RED);
                        }
index 39d04bbb2e8a70ca43450b9a7457f8991a1198b9..eb456dab48b98bcf72af2ad4badfbeb90eeee596 100644 (file)
@@ -26,6 +26,9 @@ ao_packet_slave(void)
        while (ao_packet_enable) {
                if (ao_packet_recv()) {
                        memcpy(&ao_tx_packet.callsign, &ao_rx_packet.packet.callsign, AO_MAX_CALLSIGN);
+#if HAS_FLIGHT
+                       ao_flight_force_idle = TRUE;
+#endif
                        ao_packet_send();
                }
        }
@@ -60,4 +63,5 @@ ao_packet_slave_init(void)
        ao_add_stdio(ao_packet_pollchar,
                     ao_packet_putchar,
                     NULL);
+       ao_packet_slave_start();
 }
index 596045887690396c302d05f6132b67302bb9d4e0..a486b9ba2fe16c722d6bfc9f5f2c3129debc8a13 100644 (file)
@@ -19,6 +19,7 @@
 #define _AO_PINS_H_
 
 #if defined(TELEMETRUM_V_1_0)
+       #define HAS_FLIGHT              1
        #define HAS_USB                 1
        #define HAS_BEEP                1
        #define HAS_GPS                 1
@@ -39,6 +40,7 @@
 #endif
 
 #if defined(TELEMETRUM_V_1_1)
+       #define HAS_FLIGHT              1
        #define HAS_USB                 1
        #define HAS_BEEP                1
        #define HAS_GPS                 1
@@ -63,6 +65,7 @@
 #endif
 
 #if defined(TELEDONGLE_V_0_2)
+       #define HAS_FLIGHT              0
        #define HAS_USB                 1
        #define HAS_BEEP                0
        #define HAS_SERIAL_1            0
@@ -81,6 +84,7 @@
 #endif
 
 #if defined(TELEMETRUM_V_0_1)
+       #define HAS_FLIGHT              1
        #define HAS_USB                 1
        #define HAS_BEEP                1
        #define HAS_GPS                 1
 #endif
 
 #if defined(TELEDONGLE_V_0_1)
+       #define HAS_FLIGHT              0
        #define HAS_USB                 1
        #define HAS_BEEP                0
        #define HAS_SERIAL_1            0
 #endif
 
 #if defined(TIDONGLE)
+       #define HAS_FLIGHT              0
        #define HAS_USB                 1
        #define HAS_BEEP                0
        #define HAS_SERIAL_1            0