From: Keith Packard Date: Wed, 13 May 2009 18:18:24 +0000 (-0700) Subject: Make ao_flight_test able to read raw logging data X-Git-Tag: 0.2~6 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=d91208fbf5fc7797b93087ef8619454c4bed0130;ds=sidebyside Make ao_flight_test able to read raw logging data Protect ao_flight_test reading functions so that a simple 'script' output can be fed to the program and have it work correctly. Signed-off-by: Keith Packard --- diff --git a/ao_flight_test.c b/ao_flight_test.c index e9c6a530..a94fc740 100644 --- a/ao_flight_test.c +++ b/ao_flight_test.c @@ -165,6 +165,7 @@ ao_insert(void) static int ao_records_read = 0; static int ao_eof_read = 0; static int ao_flight_ground_accel; +static int ao_flight_started = 0; void ao_sleep(void *wchan) @@ -175,6 +176,7 @@ ao_sleep(void *wchan) uint16_t tick; uint16_t a, b; int ret; + char line[1024]; for (;;) { if (ao_records_read > 20 && ao_flight_state == ao_flight_startup) @@ -184,8 +186,7 @@ ao_sleep(void *wchan) return; } - ret = fscanf(emulator_in, "%c %hx %hx %hx\n", &type, &tick, &a, &b); - if (ret == EOF) { + if (!fgets(line, sizeof (line), emulator_in)) { if (++ao_eof_read >= 1000) { printf ("no more data, exiting simulation\n"); exit(0); @@ -194,11 +195,16 @@ ao_sleep(void *wchan) ao_insert(); return; } + ret = sscanf(line, "%c %hx %hx %hx", &type, &tick, &a, &b); if (ret != 4) continue; + if (type != 'F' && !ao_flight_started) + continue; + switch (type) { case 'F': ao_flight_ground_accel = a; + ao_flight_started = 1; break; case 'S': break;