altos: Respect apogee lockout time in flight algorithm
[fw/altos] / src / test / ao_flight_test.c
index 56733c891a9dd3dc8020452d7c2dccda625aa821..4a8625cfaab0e44b7394fd675e1b45d8f6f515ba 100644 (file)
@@ -173,6 +173,10 @@ struct ao_cmds {
        const char      *help;
 };
 
+#define ao_xmemcpy(d,s,c) memcpy(d,s,c)
+#define ao_xmemset(d,v,c) memset(d,v,c)
+#define ao_xmemcmp(d,s,c) memcmp(d,s,c)
+
 #include "ao_convert.c"
 
 struct ao_config {
@@ -180,6 +184,7 @@ struct ao_config {
        int16_t         accel_plus_g;
        int16_t         accel_minus_g;
        uint8_t         pad_orientation;
+       uint16_t        apogee_lockout;
 };
 
 #define AO_PAD_ORIENTATION_ANTENNA_UP  0
@@ -519,6 +524,9 @@ ao_sleep(void *wchan)
                                ao_config.accel_minus_g = atoi(words[5]);
                        } else if (nword >= 4 && strcmp(words[0], "Main") == 0) {
                                ao_config.main_deploy = atoi(words[2]);
+                       } else if (nword >= 3 && strcmp(words[0], "Apogee") == 0 &&
+                                  strcmp(words[1], "lockout:") == 0) {
+                               ao_config.apogee_lockout = atoi(words[2]);
                        } else if (nword >= 36 && strcmp(words[0], "CALL") == 0) {
                                tick = atoi(words[10]);
                                if (!ao_flight_started) {
@@ -542,7 +550,7 @@ ao_sleep(void *wchan)
                                        ao_flight_started = 1;
                                }
                        } else if (nword == 2 && strcmp(words[0], "TELEM") == 0) {
-                               char    *hex = words[1];
+                               __xdata char    *hex = words[1];
                                char    elt[3];
                                int     i, len;
                                uint8_t sum;
@@ -574,7 +582,7 @@ ao_sleep(void *wchan)
                                        continue;
                                }
                                if (len == 36) {
-                                       memcpy(&telem, bytes + 1, 32);
+                                       ao_xmemcpy(&telem, bytes + 1, 32);
                                        tick = telem.generic.tick;
                                        switch (telem.generic.type) {
                                        case AO_TELEMETRY_SENSOR_TELEMETRUM: