altos/test: auto-configure acceleration parameters from the log file
authorKeith Packard <keithp@keithp.com>
Fri, 18 Feb 2011 18:02:46 +0000 (10:02 -0800)
committerKeith Packard <keithp@keithp.com>
Fri, 18 Feb 2011 18:04:40 +0000 (10:04 -0800)
The flight test code had static accelerometer configuration values,
making it impossible to use data from different boards without
recompiling. As the eeprom and telem log files both contain the
necessary data, parse that instead.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/ao_flight_test.c

index 5c61951853d63c84ddc6905be651b002a1e9a2d0..8ce94895026213b2954124d7f548d733030fb6d7 100644 (file)
@@ -152,7 +152,7 @@ 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)
 
@@ -220,6 +220,11 @@ ao_sleep(void *wchan)
                                tick = strtoul(words[1], NULL, 16);
                                a = 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) {
@@ -238,8 +243,12 @@ ao_sleep(void *wchan)
                        switch (type) {
                        case 'F':
                                ao_flight_ground_accel = a;
-                               ao_config.accel_plus_g = a;
-                               ao_config.accel_minus_g = a + 530;
+                               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':