X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=ao_flight_test.c;h=038c5b2bfca53b7464303682752ecc83b8aec596;hp=0b03eb1f59c3f24fb39490ee8bd3ba9017590489;hb=26988c3e7acb2fa832810475e43e08fd2867459c;hpb=d6f5a0689023546464a71561f53fa2c943077c88;ds=sidebyside diff --git a/ao_flight_test.c b/ao_flight_test.c index 0b03eb1f..038c5b2b 100644 --- a/ao_flight_test.c +++ b/ao_flight_test.c @@ -15,9 +15,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#define _GNU_SOURCE + #include #include #include +#include #define AO_ADC_RING 64 #define ao_adc_ring_next(n) (((n) + 1) & (AO_ADC_RING - 1)) @@ -177,9 +180,13 @@ ao_sleep(void *wchan) uint16_t a, b; int ret; char line[1024]; + char *saveptr; + char *l; + char *words[64]; + int nword; for (;;) { - if (ao_records_read > 20 && ao_flight_state == ao_flight_startup) + if (ao_records_read > 2 && ao_flight_state == ao_flight_startup) { ao_adc_static.accel = ao_flight_ground_accel; ao_insert(); @@ -195,9 +202,30 @@ ao_sleep(void *wchan) ao_insert(); return; } - ret = sscanf(line, "%c %hx %hx %hx", &type, &tick, &a, &b); - if (ret != 4) - continue; + l = line; + for (nword = 0; nword < 64; nword++) { + words[nword] = strtok_r(l, " \t\n", &saveptr); + l = NULL; + if (words[nword] == NULL) + break; + } + if (nword == 4) { + type = words[0][0]; + tick = strtoul(words[1], NULL, 16); + a = strtoul(words[2], NULL, 16); + b = strtoul(words[2], NULL, 16); + } else if (nword >= 36 && strcmp(words[0], "CALL") == 0) { + tick = atoi(words[10]); + if (!ao_flight_started) { + type = 'F'; + a = atoi(words[26]); + ao_flight_started = 1; + } else { + type = 'A'; + a = atoi(words[12]); + b = atoi(words[14]); + } + } if (type != 'F' && !ao_flight_started) continue;