X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Fkernel%2Fao_telemetry.c;h=8ff28fdef78eeed8d042f2213db10c3a5c33d8c2;hp=e70791792d5644c30ab5745ee2d8a7966648beda;hb=6023ff81f1bbd240169b9548209133d3b02d475f;hpb=1085ec5d57e0ed5d132f2bbdac1a0b6a32c0ab4a diff --git a/src/kernel/ao_telemetry.c b/src/kernel/ao_telemetry.c index e7079179..8ff28fde 100644 --- a/src/kernel/ao_telemetry.c +++ b/src/kernel/ao_telemetry.c @@ -141,7 +141,7 @@ ao_send_mega_sensor(void) telemetry.generic.tick = packet->tick; telemetry.generic.type = AO_TELEMETRY_MEGA_SENSOR; -#if HAS_MPU6000 +#if HAS_MPU6000 || HAS_MPU9250 telemetry.mega_sensor.orient = ao_sample_orient; #endif telemetry.mega_sensor.accel = ao_data_accel(packet); @@ -160,8 +160,22 @@ ao_send_mega_sensor(void) #if HAS_HMC5883 telemetry.mega_sensor.mag_x = packet->hmc5883.x; - telemetry.mega_sensor.mag_y = packet->hmc5883.y; telemetry.mega_sensor.mag_z = packet->hmc5883.z; + telemetry.mega_sensor.mag_y = packet->hmc5883.y; +#endif + +#if HAS_MPU9250 + telemetry.mega_sensor.accel_x = packet->mpu9250.accel_x; + telemetry.mega_sensor.accel_y = packet->mpu9250.accel_y; + telemetry.mega_sensor.accel_z = packet->mpu9250.accel_z; + + telemetry.mega_sensor.gyro_x = packet->mpu9250.gyro_x; + telemetry.mega_sensor.gyro_y = packet->mpu9250.gyro_y; + telemetry.mega_sensor.gyro_z = packet->mpu9250.gyro_z; + + telemetry.mega_sensor.mag_x = packet->mpu9250.mag_x; + telemetry.mega_sensor.mag_z = packet->mpu9250.mag_z; + telemetry.mega_sensor.mag_y = packet->mpu9250.mag_y; #endif ao_telemetry_send(); @@ -270,7 +284,7 @@ ao_send_mini(void) __xdata struct ao_data *packet = (__xdata struct ao_data *) &ao_data_ring[ao_data_ring_prev(ao_sample_data)]; telemetry.generic.tick = packet->tick; - telemetry.generic.type = AO_TELEMETRY_MINI; + telemetry.generic.type = AO_SEND_MINI; telemetry.mini.state = ao_flight_state; @@ -294,6 +308,11 @@ ao_send_mini(void) static __pdata int8_t ao_telemetry_config_max; static __pdata int8_t ao_telemetry_config_cur; +static __pdata uint16_t ao_telemetry_flight_number; + +#ifndef ao_telemetry_battery_convert +#define ao_telemetry_battery_convert(a) (a) +#endif static void ao_send_configuration(void) @@ -302,16 +321,12 @@ ao_send_configuration(void) { telemetry.generic.type = AO_TELEMETRY_CONFIGURATION; telemetry.configuration.device = AO_idProduct_NUMBER; -#if HAS_LOG - telemetry.configuration.flight = ao_log_full() ? 0 : ao_flight_number; -#else - telemetry.configuration.flight = ao_flight_number; -#endif + telemetry.configuration.flight = ao_telemetry_flight_number; telemetry.configuration.config_major = AO_CONFIG_MAJOR; telemetry.configuration.config_minor = AO_CONFIG_MINOR; #if AO_idProduct_NUMBER == 0x25 && HAS_ADC /* TeleGPS gets battery voltage instead of apogee delay */ - telemetry.configuration.apogee_delay = ao_data_ring[ao_data_ring_prev(ao_data_head)].adc.v_batt; + telemetry.configuration.apogee_delay = ao_telemetry_battery_convert(ao_data_ring[ao_data_ring_prev(ao_data_head)].adc.v_batt); #else telemetry.configuration.apogee_delay = ao_config.apogee_delay; telemetry.configuration.main_deploy = ao_config.main_deploy; @@ -322,7 +337,7 @@ ao_send_configuration(void) ao_config.callsign, AO_MAX_CALLSIGN); ao_xmemcpy (telemetry.configuration.version, - CODE_TO_XDATA(ao_version), + ao_version, AO_MAX_VERSION); ao_telemetry_config_cur = ao_telemetry_config_max; ao_telemetry_send(); @@ -406,6 +421,11 @@ ao_telemetry(void) while (!ao_flight_number) ao_sleep(&ao_flight_number); + ao_telemetry_flight_number = ao_flight_number; +#if HAS_LOG + if (ao_log_full()) + ao_telemetry_flight_number = 0; +#endif telemetry.generic.serial = ao_serial_number; for (;;) { while (ao_telemetry_interval == 0)