From: Keith Packard Date: Sun, 11 Oct 2020 04:56:06 +0000 (-0700) Subject: altos/test: Build ao_flight_test_motor X-Git-Tag: 1.9.6~1^2~25 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=32e0a6e3ee51f3c9bc150bb1a6890a82bcdd050f altos/test: Build ao_flight_test_motor This tests the flight code in easymotor mode. Signed-off-by: Keith Packard --- diff --git a/src/test/Makefile b/src/test/Makefile index 7bd13db9..55a3fbeb 100644 --- a/src/test/Makefile +++ b/src/test/Makefile @@ -11,7 +11,7 @@ PROGS=ao_flight_test ao_flight_test_baro ao_flight_test_accel ao_flight_test_noi INCS=ao_kalman.h ao_ms5607.h ao_log.h ao_data.h altitude-pa.h altitude.h ao_quaternion.h ao_eeprom_read.h TEST_SRC=ao_flight_test.c -TEST_SRC_ALL=ao_flight_test.c ao_eeprom_read.c ao_eeprom_read_old.c +TEST_SRC_ALL=ao_flight_test.c ao_eeprom_read.c ao_eeprom_read_old.c ao_data.c TEST_LIB=-ljson-c KALMAN=make-kalman @@ -46,6 +46,9 @@ ao_flight_test_metrum: $(TEST_SRC_ALL) ao_host.h ao_flight.c ao_sample.c ao_kalm ao_flight_test_mini: $(TEST_SRC_ALL) ao_host.h ao_flight.c ao_sample.c ao_kalman.c ao_pyro.c ao_pyro.h $(INCS) cc -DEASYMINI=1 -DHAS_ACCEL=0 $(CFLAGS) -o $@ $(TEST_SRC) $(TEST_LIB) -lm +ao_flight_test_motor: $(TEST_SRC_ALL) ao_host.h ao_flight.c ao_sample.c ao_kalman.c ao_pyro.c ao_pyro.h $(INCS) + cc -DEASYMOTOR_V_2=1 $(CFLAGS) -o $@ $(TEST_SRC) $(TEST_LIB) -lm + ao_gps_test: ao_gps_test.c ao_gps_sirf.c ao_gps_print.c ao_host.h cc $(CFLAGS) -o $@ $< diff --git a/src/test/ao_flight_test.c b/src/test/ao_flight_test.c index ff480e2d..804f1f94 100644 --- a/src/test/ao_flight_test.c +++ b/src/test/ao_flight_test.c @@ -47,7 +47,7 @@ int ao_gps_new; -#if !defined(TELEMEGA) && !defined(TELEMETRUM_V2) && !defined(EASYMINI) +#if !defined(TELEMEGA) && !defined(TELEMETRUM_V2) && !defined(EASYMINI) && !defined(EASYMOTOR_V_2) #define TELEMETRUM_V1 1 #endif @@ -119,6 +119,25 @@ struct ao_adc { #endif +#if EASYMOTOR_V_2 +#define AO_ADC_NUM_SENSE 0 +#define HAS_ADXL375 1 +#define HAS_BEEP 1 +#define AO_CONFIG_MAX_SIZE 1024 +#define USE_ADXL375_IMU 1 +#define AO_ADXL375_INVERT 0 +#define HAS_IMU 1 +#define AO_ADXL375_AXIS x +#define AO_ADXL375_ACROSS_AXIS y +#define AO_ADXL375_THROUGH_AXIS z + +struct ao_adc { + int16_t pressure; + int16_t v_batt; +}; + +#endif + #define const #define HAS_FLIGHT 1 @@ -369,11 +388,15 @@ int16_t ao_flight_number; extern uint16_t ao_sample_tick; +#if HAS_BARO extern alt_t ao_sample_height; +#endif extern accel_t ao_sample_accel; extern int32_t ao_accel_scale; +#if HAS_BARO extern alt_t ao_ground_height; extern alt_t ao_sample_alt; +#endif double ao_sample_qangle; @@ -385,6 +408,7 @@ uint16_t prev_tick; #include "ao_sqrt.c" #include "ao_sample.c" #include "ao_flight.c" +#include "ao_data.c" #if TELEMEGA #define AO_PYRO_NUM 4 @@ -514,9 +538,11 @@ ao_insert(void) prev_tick = ao_data_static.tick; time = (double) (ao_data_static.tick + tick_offset) / 100; + double height = 0; +#if HAS_BARO #if TELEMEGA || TELEMETRUM_V2 || EASYMINI ao_ms5607_convert(&ao_data_static.ms5607_raw, &ao_data_static.ms5607_cooked); - double height = ao_pa_to_altitude(ao_data_static.ms5607_cooked.pres) - ao_ground_height; + height = ao_pa_to_altitude(ao_data_static.ms5607_cooked.pres) - ao_ground_height; /* Hack to skip baro spike at accidental drogue charge * firing in 2015-09-26-serial-2093-flight-0012.eeprom @@ -532,7 +558,8 @@ ao_insert(void) } } #else - double height = ao_pres_to_altitude(ao_data_static.adc.pres_real) - ao_ground_height; + height = ao_pres_to_altitude(ao_data_static.adc.pres_real) - ao_ground_height; +#endif #endif if (ao_test_max_height < height) { @@ -752,15 +779,21 @@ ao_sleep(void *wchan) #if TELEMETRUM_V1 ao_data_static.adc.accel = ao_flight_ground_accel; #endif +#if EASYMOTOR_V_2 + ao_data_static.adxl375.AO_ADXL375_AXIS = ao_flight_ground_accel; +#endif ao_insert(); return; } if (eeprom) { -#if TELEMEGA +#if TELEMEGA || EASYMOTOR_V_2 struct ao_log_mega *log_mega; #endif +#if EASYMOTOR_V_2 + struct ao_log_motor *log_motor; +#endif #if TELEMETRUM_V2 struct ao_log_metrum *log_metrum; #endif @@ -928,6 +961,63 @@ ao_sleep(void *wchan) break; } break; +#endif +#if EASYMOTOR_V_2 + case AO_LOG_FORMAT_TELEMEGA_3: + log_mega = (struct ao_log_mega *) &eeprom->data[eeprom_offset]; + eeprom_offset += sizeof (*log_mega); + switch (log_mega->type) { + case AO_LOG_FLIGHT: + ao_flight_number = log_mega->u.flight.flight; + ao_flight_ground_accel = log_mega->u.flight.ground_accel; + ao_flight_started = 1; + break; + case AO_LOG_SENSOR: + ao_data_static.tick = log_mega->tick; + ao_data_static.adxl375.AO_ADXL375_AXIS = -log_mega->u.sensor.accel; + ao_records_read++; + ao_insert(); + return; + } + break; + case AO_LOG_FORMAT_TELEMEGA_4: + log_mega = (struct ao_log_mega *) &eeprom->data[eeprom_offset]; + eeprom_offset += sizeof (*log_mega); + switch (log_mega->type) { + case AO_LOG_FLIGHT: + ao_flight_number = log_mega->u.flight.flight; + ao_flight_ground_accel = log_mega->u.flight.ground_accel; + ao_flight_started = 1; + break; + case AO_LOG_SENSOR: + ao_data_static.tick = log_mega->tick; + ao_data_static.adxl375.AO_ADXL375_AXIS = log_mega->u.sensor.accel; + ao_records_read++; + ao_insert(); + return; + } + break; + case AO_LOG_FORMAT_EASYMOTOR: + log_motor = (struct ao_log_motor *) &eeprom->data[eeprom_offset]; + eeprom_offset += sizeof (*log_motor); + switch (log_motor->type) { + case AO_LOG_FLIGHT: + ao_flight_number = log_motor->u.flight.flight; + ao_flight_ground_accel = log_motor->u.flight.ground_accel; + ao_flight_started = 1; + break; + case AO_LOG_SENSOR: + ao_data_static.tick = log_motor->tick; + ao_data_static.adc.pressure = log_motor->u.sensor.pressure; + ao_data_static.adc.v_batt = log_motor->u.sensor.v_batt; + ao_data_static.adxl375.AO_ADXL375_AXIS = log_motor->u.sensor.accel_along; + ao_data_static.adxl375.AO_ADXL375_ACROSS_AXIS = log_motor->u.sensor.accel_across; + ao_data_static.adxl375.AO_ADXL375_THROUGH_AXIS = log_motor->u.sensor.accel_through; + ao_records_read++; + ao_insert(); + return; + } + break; #endif default: printf ("invalid log format %d\n", log_format);