projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Send computed accel/vel/pres values over the radio
[fw/altos]
/
ao_flight_test.c
diff --git
a/ao_flight_test.c
b/ao_flight_test.c
index e9c6a5304d8be85e22402e4a128cfd64698887cf..0b03eb1f59c3f24fb39490ee8bd3ba9017590489 100644
(file)
--- 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_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)
void
ao_sleep(void *wchan)
@@
-175,6
+176,7
@@
ao_sleep(void *wchan)
uint16_t tick;
uint16_t a, b;
int ret;
uint16_t tick;
uint16_t a, b;
int ret;
+ char line[1024];
for (;;) {
if (ao_records_read > 20 && ao_flight_state == ao_flight_startup)
for (;;) {
if (ao_records_read > 20 && ao_flight_state == ao_flight_startup)
@@
-184,8
+186,7
@@
ao_sleep(void *wchan)
return;
}
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);
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;
}
ao_insert();
return;
}
+ ret = sscanf(line, "%c %hx %hx %hx", &type, &tick, &a, &b);
if (ret != 4)
continue;
if (ret != 4)
continue;
+ if (type != 'F' && !ao_flight_started)
+ continue;
+
switch (type) {
case 'F':
ao_flight_ground_accel = a;
switch (type) {
case 'F':
ao_flight_ground_accel = a;
+ ao_flight_started = 1;
break;
case 'S':
break;
break;
case 'S':
break;
@@
-234,10
+240,10
@@
ao_dump_state(void)
return;
printf ("\t\t\t\t\t%s accel %g vel %g alt %d main %d\n",
ao_state_names[ao_flight_state],
return;
printf ("\t\t\t\t\t%s accel %g vel %g alt %d main %d\n",
ao_state_names[ao_flight_state],
- (ao_
flight_accel - ao_ground
_accel) / COUNTS_PER_G * GRAVITY,
+ (ao_
ground_accel - ao_flight
_accel) / COUNTS_PER_G * GRAVITY,
(double) ao_flight_vel / 100 / COUNTS_PER_G * GRAVITY,
(double) ao_flight_vel / 100 / COUNTS_PER_G * GRAVITY,
- ao_pres_to_altitude(ao_flight_pres),
- ao_pres_to_altitude(ao_main_pres));
+ ao_pres_to_altitude(ao_flight_pres)
- ao_pres_to_altitude(ao_ground_pres)
,
+ ao_pres_to_altitude(ao_main_pres)
- ao_pres_to_altitude(ao_ground_pres)
);
if (ao_flight_state == ao_flight_landed)
exit(0);
}
if (ao_flight_state == ao_flight_landed)
exit(0);
}