diff options
| author | Keith Packard <keithp@keithp.com> | 2009-05-13 11:18:24 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2009-05-13 11:18:24 -0700 | 
| commit | d91208fbf5fc7797b93087ef8619454c4bed0130 (patch) | |
| tree | d29533487a7a8a262f105c6f3db7536b322a74cd /ao_flight_test.c | |
| parent | d3dbd8949e1102220ad5fd0863f493c819b96e46 (diff) | |
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 <keithp@keithp.com>
Diffstat (limited to 'ao_flight_test.c')
| -rw-r--r-- | ao_flight_test.c | 10 | 
1 files changed, 8 insertions, 2 deletions
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;  | 
