projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos: Baro-only (but record accel) for TM v1.2
[fw/altos]
/
src
/
core
/
ao_telemetry.c
diff --git
a/src/core/ao_telemetry.c
b/src/core/ao_telemetry.c
index b3ce8ba9325a3573ed93c3b641a6f7c317d5249d..8385c6d038c9f48dc9862af73f299e8cf64a438b 100644
(file)
--- 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;
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
#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);
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;
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;
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;
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));
}
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;
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++)
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;
telemetry.mega_data.ground_pres = ao_ground_pres;
telemetry.mega_data.ground_accel = ao_ground_accel;
@@
-282,6
+283,12
@@
ao_telemetry(void)
while (!ao_flight_number)
ao_sleep(&ao_flight_number);
while (!ao_flight_number)
ao_sleep(&ao_flight_number);
+#if RADIO_DELAY_AFTER_BOOST
+ while (ao_flight_state < ao_flight_boost)
+ ao_sleep(DATA_TO_XDATA(&ao_flight_state));
+ ao_delay(AO_SEC_TO_TICKS(RADIO_DELAY_AFTER_BOOST));
+#endif
+
telemetry.generic.serial = ao_serial_number;
for (;;) {
while (ao_telemetry_interval == 0)
telemetry.generic.serial = ao_serial_number;
for (;;) {
while (ao_telemetry_interval == 0)
@@
-313,8
+320,16
@@
ao_telemetry(void)
if (ao_rdf &&
(int16_t) (ao_time() - ao_rdf_time) >= 0)
{
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_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;
}
#endif
time += ao_telemetry_interval;
@@
-326,6
+341,7
@@
ao_telemetry(void)
}
else
time = ao_time();
}
else
time = ao_time();
+ bottom: ;
}
}
}
}
}
}