X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=ao_flight_test.c;h=a94fc7402c6ad4ab143486961e88c16aed0b0048;hp=aefe3da748ad2e0da07f6877d52b439eec2b4471;hb=d91208fbf5fc7797b93087ef8619454c4bed0130;hpb=38a0b61b0a0b3c00f064c8d562950a17a6ddff4a;ds=sidebyside diff --git a/ao_flight_test.c b/ao_flight_test.c index aefe3da7..a94fc740 100644 --- a/ao_flight_test.c +++ b/ao_flight_test.c @@ -108,7 +108,7 @@ const char const * const ao_state_names[] = { }; struct ao_cmds { - uint8_t cmd; + char cmd; void (*func)(void); const char *help; }; @@ -163,6 +163,9 @@ 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) @@ -173,24 +176,35 @@ 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) { + ao_adc_static.accel = ao_flight_ground_accel; ao_insert(); return; } - ret = fscanf(emulator_in, "%c %hx %hx %hx\n", &type, &tick, &a, &b); - if (ret == EOF) { - printf ("no more data, exiting simulation\n"); - exit(0); + if (!fgets(line, sizeof (line), emulator_in)) { + if (++ao_eof_read >= 1000) { + printf ("no more data, exiting simulation\n"); + exit(0); + } + ao_adc_static.tick += 10; + 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;