#define AO_TELEMETRY_SENSOR_TELEMETRUM 0x01
#define AO_TELEMETRY_SENSOR_TELEMINI 0x02
#define AO_TELEMETRY_SENSOR_TELENANO 0x03
+#define AO_TELEMETRY_SENSOR_MEGAMETRUM 0x08
struct ao_telemetry_sensor {
uint16_t serial; /* 0 */
#error Please define HAS_USB
#endif
+#ifndef HAS_TELEMETRY
+#define HAS_TELEMETRY HAS_RADIO
+#endif
+
/* Main flight thread. */
__pdata enum ao_flight_state ao_flight_state; /* current flight state */
* - pad mode if we're upright,
* - idle mode otherwise
*/
-#if HAS_ACCEL
+#if HAS_ACCEL && 0
if (ao_config.accel_plus_g == 0 ||
ao_config.accel_minus_g == 0 ||
ao_ground_accel < ao_config.accel_plus_g - ACCEL_NOSE_UP ||
} else
#endif
if (!ao_flight_force_idle
-#if HAS_ACCEL
+#if HAS_ACCEL && 0
&& ao_ground_accel < ao_config.accel_plus_g + ACCEL_NOSE_UP
#endif
)
{
/* Set pad mode - we can fly! */
ao_flight_state = ao_flight_pad;
-#if HAS_USB && HAS_RADIO
+#if HAS_USB && HAS_RADIO && 0
/* Disable the USB controller in flight mode
* to save power
*/
ao_packet_slave_stop();
#endif
-#if HAS_RADIO && !defined (MEGAMETRUM)
+#if HAS_TELEMETRY
/* Turn on telemetry system */
ao_rdf_set(1);
ao_telemetry_set_interval(AO_TELEMETRY_INTERVAL_PAD);
/* start logging data */
ao_log_start();
-#if HAS_RADIO && !defined(MEGAMETRUM)
+#if HAS_TELEMETRY
/* Increase telemetry rate */
ao_telemetry_set_interval(AO_TELEMETRY_INTERVAL_FLIGHT);
ao_ignite(ao_igniter_drogue);
#endif
-#if HAS_RADIO && !defined(MEGAMETRUM)
+#if HAS_TELEMETRY
/* slow down the telemetry system */
ao_telemetry_set_interval(AO_TELEMETRY_INTERVAL_RECOVER);
#define AO_RDF_INTERVAL_TICKS AO_SEC_TO_TICKS(5)
#define AO_RDF_LENGTH_MS 500
+#if defined(MEGAMETRUM)
+#define AO_TELEMETRY_SENSOR AO_TELEMETRY_SENSOR_MEGAMETRUM
+#endif
+
#if defined(TELEMETRUM_V_0_1) || defined(TELEMETRUM_V_0_2) || defined(TELEMETRUM_V_1_0) || defined(TELEMETRUM_V_1_1) || defined(TELEBALLOON_V_1_1) || defined(TELEMETRUM_V_1_2)
#define AO_TELEMETRY_SENSOR AO_TELEMETRY_SENSOR_TELEMETRUM
#endif
static void
ao_send_sensor(void)
{
- __xdata struct ao_data *packet = &ao_data_ring[ao_data_ring_prev(ao_sample_data)];
+ __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_SENSOR;
#else
telemetry.sensor.accel = 0;
#endif
- telemetry.sensor.pres = packet->adc.pres;
+ telemetry.sensor.pres = ao_data_pres(packet);
telemetry.sensor.temp = packet->adc.temp;
telemetry.sensor.v_batt = packet->adc.v_batt;
#if HAS_IGNITE