X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fcore%2Fao_telemetry.c;h=52ac94891adebd99f915cf97a20e95ddf171a18c;hb=e2b472bbb2418fc13be42dbc7c52beb88479c46d;hp=b3ce8ba9325a3573ed93c3b641a6f7c317d5249d;hpb=1ae69a1c2ce7e45db9d9c175bc63867eff68ebe5;p=fw%2Faltos diff --git a/src/core/ao_telemetry.c b/src/core/ao_telemetry.c index b3ce8ba9..52ac9489 100644 --- a/src/core/ao_telemetry.c +++ b/src/core/ao_telemetry.c @@ -22,9 +22,6 @@ static __pdata uint16_t ao_telemetry_interval; static __pdata uint8_t ao_rdf = 0; static __pdata uint16_t ao_rdf_time; -#define AO_RDF_INTERVAL_TICKS AO_SEC_TO_TICKS(5) -#define AO_RDF_LENGTH_MS 500 - #if defined(MEGAMETRUM) #define AO_SEND_MEGA 1 #endif @@ -104,6 +101,7 @@ ao_send_mega_sensor(void) telemetry.mega_sensor.pres = ao_data_pres(packet); telemetry.mega_sensor.temp = ao_data_temp(packet); +#if HAS_MPU6000 telemetry.mega_sensor.accel_x = packet->mpu6000.accel_x; telemetry.mega_sensor.accel_y = packet->mpu6000.accel_y; telemetry.mega_sensor.accel_z = packet->mpu6000.accel_z; @@ -111,10 +109,13 @@ ao_send_mega_sensor(void) telemetry.mega_sensor.gyro_x = packet->mpu6000.gyro_x; telemetry.mega_sensor.gyro_y = packet->mpu6000.gyro_y; telemetry.mega_sensor.gyro_z = packet->mpu6000.gyro_z; +#endif +#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; +#endif ao_radio_send(&telemetry, sizeof (telemetry)); } @@ -137,9 +138,9 @@ ao_send_mega_data(void) telemetry.mega_data.v_batt = packet->adc.v_batt; telemetry.mega_data.v_pyro = packet->adc.v_pbatt; - /* XXX figure out right shift value; 4 might suffice */ + /* ADC range is 0-4095, so shift by four to save the high 8 bits */ for (i = 0; i < AO_ADC_NUM_SENSE; i++) - telemetry.mega_data.sense[i] = packet->adc.sense[i] >> 8; + telemetry.mega_data.sense[i] = packet->adc.sense[i] >> 4; telemetry.mega_data.ground_pres = ao_ground_pres; telemetry.mega_data.ground_accel = ao_ground_accel; @@ -313,8 +314,16 @@ ao_telemetry(void) if (ao_rdf && (int16_t) (ao_time() - ao_rdf_time) >= 0) { +#if HAS_IGNITE_REPORT + uint8_t c; +#endif ao_rdf_time = ao_time() + AO_RDF_INTERVAL_TICKS; - ao_radio_rdf(AO_MS_TO_RDF_LEN(AO_RDF_LENGTH_MS)); +#if HAS_IGNITE_REPORT + if (ao_flight_state == ao_flight_pad && (c = ao_report_igniter())) + ao_radio_continuity(c); + else +#endif + ao_radio_rdf(); } #endif time += ao_telemetry_interval; @@ -326,6 +335,7 @@ ao_telemetry(void) } else time = ao_time(); + bottom: ; } } }