altos: Pass flight dynamics to companion boards
authorKeith Packard <keithp@keithp.com>
Mon, 16 Jul 2012 22:25:47 +0000 (15:25 -0700)
committerKeith Packard <keithp@keithp.com>
Mon, 16 Jul 2012 22:25:47 +0000 (15:25 -0700)
Necessary for TelePyro

Signed-off-by: Keith Packard <keithp@keithp.com>
src/core/ao_companion.h
src/core/ao_flight.c
src/core/ao_flight.h
src/drivers/ao_companion.c

index 47e0acf550e5c854a54dbaa62a9a7da9e9051e99..035325a3ef0e3c0a3cbe129717247af77b055866 100644 (file)
@@ -30,6 +30,10 @@ struct ao_companion_command {
        uint16_t        tick;
        uint16_t        serial;
        uint16_t        flight;
+       int16_t         accel;
+       int16_t         speed;
+       int16_t         height;
+       int16_t         motor_number;
 };
 
 struct ao_companion_setup {
index fc018f009cdf62a0d018e5d3a00d3efc3f9ea754..aa4f6961860f5e923585f947f3ef3c0581f869b4 100644 (file)
@@ -40,9 +40,7 @@
 
 __pdata enum ao_flight_state   ao_flight_state;        /* current flight state */
 __pdata uint16_t               ao_boost_tick;          /* time of launch detect */
-#if AO_PYRO_NUM
 __pdata uint16_t               ao_motor_number;        /* number of motors burned so far */
-#endif
 
 /*
  * track min/max data over a long interval to detect
@@ -218,9 +216,7 @@ ao_flight(void)
 #else
                                ao_flight_state = ao_flight_coast;
 #endif
-#if AO_PYRO_NUM
                                ++ao_motor_number;
-#endif
                                ao_wakeup(DATA_TO_XDATA(&ao_flight_state));
                        }
                        break;
index c5c8af46f6934276438a1f02a64d51fb0dc9ddf1..b80202f0d7b3e2a6716c91e84f928ec72ee00c77 100644 (file)
@@ -38,9 +38,7 @@ enum ao_flight_state {
 
 extern __pdata enum ao_flight_state    ao_flight_state;
 extern __pdata uint16_t                        ao_boost_tick;
-#if AO_PYRO_NUM
 extern __pdata uint16_t                        ao_motor_number;
-#endif
 
 extern __pdata uint16_t                        ao_launch_time;
 extern __pdata uint8_t                 ao_flight_force_idle;
index a3167956fd9ca25d464a42426e570e214e9dd7f1..6e0bd2ec15691a95f89bfbfeb59b08c517657def 100644 (file)
@@ -53,6 +53,10 @@ ao_companion_send_command(uint8_t command)
        ao_companion_command.tick = ao_time();
        ao_companion_command.serial = ao_serial_number;
        ao_companion_command.flight = ao_flight_number;
+       ao_companion_command.accel = ao_accel;
+       ao_companion_command.speed = ao_speed;
+       ao_companion_command.height = ao_height;
+       ao_companion_command.motor_number = ao_motor_number;
        ao_spi_send(&ao_companion_command, sizeof (ao_companion_command), AO_COMPANION_SPI_BUS);
 }