altos: Make serial, usb, beeper and accelerometer optional components
[fw/altos] / src / ao_flight_test.c
index 61f48cb6e14d8236bd111368c24cf44856cfcd27..e75bc8df348f5ca8dc240aaaaed6a8900f880d73 100644 (file)
@@ -114,7 +114,6 @@ const char const * const ao_state_names[] = {
 };
 
 struct ao_cmds {
-       char            cmd;
        void            (*func)(void);
        const char      *help;
 };
@@ -152,7 +151,18 @@ struct ao_config {
 
 #define ao_config_get()
 
-struct ao_config ao_config = { 250, 15937, 16467 };
+struct ao_config ao_config;
+
+#define DATA_TO_XDATA(x) (x)
+
+#define HAS_FLIGHT 1
+#define HAS_ADC 1
+#define HAS_USB 1
+#define HAS_GPS 1
+#ifndef HAS_ACCEL
+#define HAS_ACCEL 1
+#endif
+#define HAS_ACCEL_REF 0
 
 #include "ao_flight.c"
 
@@ -178,7 +188,7 @@ void
 ao_sleep(void *wchan)
 {
        ao_dump_state();
-       if (wchan == &ao_adc_ring) {
+       if (wchan == &ao_adc_head) {
                char            type;
                uint16_t        tick;
                uint16_t        a, b;
@@ -217,7 +227,12 @@ ao_sleep(void *wchan)
                                type = words[0][0];
                                tick = strtoul(words[1], NULL, 16);
                                a = strtoul(words[2], NULL, 16);
-                               b = strtoul(words[2], NULL, 16);
+                               b = strtoul(words[3], NULL, 16);
+                       } else if (nword >= 6 && strcmp(words[0], "Accel")) {
+                               ao_config.accel_plus_g = atoi(words[3]);
+                               ao_config.accel_minus_g = atoi(words[5]);
+                       } else if (nword >= 4 && strcmp(words[0], "Main")) {
+                               ao_config.main_deploy = atoi(words[2]);
                        } else if (nword >= 36 && strcmp(words[0], "CALL") == 0) {
                                tick = atoi(words[10]);
                                if (!ao_flight_started) {
@@ -236,6 +251,12 @@ ao_sleep(void *wchan)
                        switch (type) {
                        case 'F':
                                ao_flight_ground_accel = a;
+                               if (ao_config.accel_plus_g == 0) {
+                                       ao_config.accel_plus_g = a;
+                                       ao_config.accel_minus_g = a + 530;
+                               }
+                               if (ao_config.main_deploy == 0)
+                                       ao_config.main_deploy = 250;
                                ao_flight_started = 1;
                                break;
                        case 'S':