projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos/telelco-v2.0: Fix button names and pin mappings. Add drag LED.
[fw/altos]
/
src
/
test
/
ao_flight_test.c
diff --git
a/src/test/ao_flight_test.c
b/src/test/ao_flight_test.c
index 8e69730ee54e1f73322de422ef677a44d9001cd7..8fe3b5df466e6b9ee858bcfd10bf58ebd9878db1 100644
(file)
--- a/
src/test/ao_flight_test.c
+++ b/
src/test/ao_flight_test.c
@@
-25,6
+25,7
@@
#include <string.h>
#include <getopt.h>
#include <math.h>
#include <string.h>
#include <getopt.h>
#include <math.h>
+#define log ao_log_data
#define GRAVITY 9.80665
#define GRAVITY 9.80665
@@
-344,8
+345,10
@@
struct ao_cmds {
#include <ao_ms5607.h>
struct ao_ms5607_prom ao_ms5607_prom;
#include "ao_ms5607_convert.c"
#include <ao_ms5607.h>
struct ao_ms5607_prom ao_ms5607_prom;
#include "ao_ms5607_convert.c"
+#if TELEMEGA
#define AO_PYRO_NUM 4
#include <ao_pyro.h>
#define AO_PYRO_NUM 4
#include <ao_pyro.h>
+#endif
#else
#include "ao_convert.c"
#endif
#else
#include "ao_convert.c"
#endif
@@
-368,7
+371,7
@@
extern int16_t ao_accel_2g;
typedef int16_t accel_t;
uint16_t ao_serial_number;
typedef int16_t accel_t;
uint16_t ao_serial_number;
-
uint16_t
ao_flight_number;
+
int16_t
ao_flight_number;
extern uint16_t ao_sample_tick;
extern uint16_t ao_sample_tick;
@@
-427,6
+430,9
@@
static double ao_test_landed_time;
static int landed_set;
static double landed_time;
static double landed_height;
static int landed_set;
static double landed_time;
static double landed_height;
+#if AO_PYRO_NUM
+static uint16_t pyros_fired;
+#endif
#if HAS_MPU6000
static struct ao_mpu6000_sample ao_ground_mpu6000;
#if HAS_MPU6000
static struct ao_mpu6000_sample ao_ground_mpu6000;
@@
-498,7
+504,7
@@
ao_insert(void)
ao_data_ring[ao_data_head] = ao_data_static;
if (ao_flight_state != ao_flight_startup) {
#if HAS_ACCEL
ao_data_ring[ao_data_head] = ao_data_static;
if (ao_flight_state != ao_flight_startup) {
#if HAS_ACCEL
- double accel = ((ao_flight_ground_accel - ao_data_accel
_cook
(&ao_data_static)) * GRAVITY * 2.0) /
+ double accel = ((ao_flight_ground_accel - ao_data_accel(&ao_data_static)) * GRAVITY * 2.0) /
(ao_config.accel_minus_g - ao_config.accel_plus_g);
#else
double accel = 0.0;
(ao_config.accel_minus_g - ao_config.accel_plus_g);
#else
double accel = 0.0;
@@
-509,7
+515,12
@@
ao_insert(void)
tick_offset = -ao_data_static.tick;
if ((prev_tick - ao_data_static.tick) > 0x400)
tick_offset += 65536;
tick_offset = -ao_data_static.tick;
if ((prev_tick - ao_data_static.tick) > 0x400)
tick_offset += 65536;
- simple_speed += accel * (ao_data_static.tick - prev_tick) / 100.0;
+ if (prev_tick) {
+ int ticks = ao_data_static.tick - prev_tick;
+ if (ticks < 0)
+ ticks += 65536;
+ simple_speed += accel * ticks / 100.0;
+ }
prev_tick = ao_data_static.tick;
time = (double) (ao_data_static.tick + tick_offset) / 100;
prev_tick = ao_data_static.tick;
time = (double) (ao_data_static.tick + tick_offset) / 100;
@@
-647,7
+658,7
@@
ao_insert(void)
#if 1
printf("%7.2f height %8.2f accel %8.3f accel_speed %8.3f "
#if 1
printf("%7.2f height %8.2f accel %8.3f accel_speed %8.3f "
- "state %
-8.8s
k_height %8.2f k_speed %8.3f k_accel %8.3f avg_height %5d drogue %4d main %4d error %5d"
+ "state %
d
k_height %8.2f k_speed %8.3f k_accel %8.3f avg_height %5d drogue %4d main %4d error %5d"
#if TELEMEGA
" angle %5d "
"accel_x %8.3f accel_y %8.3f accel_z %8.3f gyro_x %8.3f gyro_y %8.3f gyro_z %8.3f mag_x %8d mag_y %8d, mag_z %8d mag_angle %4d "
#if TELEMEGA
" angle %5d "
"accel_x %8.3f accel_y %8.3f accel_z %8.3f gyro_x %8.3f gyro_y %8.3f gyro_z %8.3f mag_x %8d mag_y %8d, mag_z %8d mag_angle %4d "
@@
-657,7
+668,7
@@
ao_insert(void)
height,
accel,
simple_speed > -100.0 ? simple_speed : -100.0,
height,
accel,
simple_speed > -100.0 ? simple_speed : -100.0,
- ao_
state_names[ao_flight_state]
,
+ ao_
flight_state * 10
,
ao_k_height / 65536.0,
ao_k_speed / 65536.0 / 16.0,
ao_k_accel / 65536.0 / 16.0,
ao_k_height / 65536.0,
ao_k_speed / 65536.0 / 16.0,
ao_k_accel / 65536.0 / 16.0,
@@
-825,6
+836,10
@@
ao_sleep(void *wchan)
ao_insert();
return;
case AO_LOG_TEMP_VOLT:
ao_insert();
return;
case AO_LOG_TEMP_VOLT:
+ if (pyros_fired != log_mega->u.volt.pyro) {
+ printf("pyro changed %x -> %x\n", pyros_fired, log_mega->u.volt.pyro);
+ pyros_fired = log_mega->u.volt.pyro;
+ }
break;
case AO_LOG_GPS_TIME:
ao_gps_prev = ao_gps_static;
break;
case AO_LOG_GPS_TIME:
ao_gps_prev = ao_gps_static;
@@
-989,7
+1004,7
@@
main (int argc, char **argv)
#else
emulator_app="baro";
#endif
#else
emulator_app="baro";
#endif
- while ((c = getopt_long(argc, argv, "sdi:", options, NULL)) != -1) {
+ while ((c = getopt_long(argc, argv, "sd
p
i:", options, NULL)) != -1) {
switch (c) {
case 's':
summary = 1;
switch (c) {
case 's':
summary = 1;
@@
-997,6
+1012,11
@@
main (int argc, char **argv)
case 'd':
ao_flight_debug = 1;
break;
case 'd':
ao_flight_debug = 1;
break;
+ case 'p':
+#if PYRO_DBG
+ pyro_dbg = 1;
+#endif
+ break;
case 'i':
info = optarg;
break;
case 'i':
info = optarg;
break;