Now that the radio works
Signed-off-by: Keith Packard <keithp@keithp.com>
#define AO_TELEMETRY_SENSOR_TELEMETRUM 0x01
#define AO_TELEMETRY_SENSOR_TELEMINI 0x02
#define AO_TELEMETRY_SENSOR_TELENANO 0x03
#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 */
struct ao_telemetry_sensor {
uint16_t serial; /* 0 */
#error Please define HAS_USB
#endif
#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 */
/* Main flight thread. */
__pdata enum ao_flight_state ao_flight_state; /* current flight state */
* - pad mode if we're upright,
* - idle mode otherwise
*/
* - pad mode if we're upright,
* - idle mode otherwise
*/
if (ao_config.accel_plus_g == 0 ||
ao_config.accel_minus_g == 0 ||
ao_ground_accel < ao_config.accel_plus_g - ACCEL_NOSE_UP ||
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
} else
#endif
if (!ao_flight_force_idle
&& ao_ground_accel < ao_config.accel_plus_g + ACCEL_NOSE_UP
#endif
)
{
/* Set pad mode - we can fly! */
ao_flight_state = ao_flight_pad;
&& 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
*/
/* Disable the USB controller in flight mode
* to save power
*/
ao_packet_slave_stop();
#endif
ao_packet_slave_stop();
#endif
-#if HAS_RADIO && !defined (MEGAMETRUM)
/* Turn on telemetry system */
ao_rdf_set(1);
ao_telemetry_set_interval(AO_TELEMETRY_INTERVAL_PAD);
/* Turn on telemetry system */
ao_rdf_set(1);
ao_telemetry_set_interval(AO_TELEMETRY_INTERVAL_PAD);
/* start logging data */
ao_log_start();
/* start logging data */
ao_log_start();
-#if HAS_RADIO && !defined(MEGAMETRUM)
/* Increase telemetry rate */
ao_telemetry_set_interval(AO_TELEMETRY_INTERVAL_FLIGHT);
/* Increase telemetry rate */
ao_telemetry_set_interval(AO_TELEMETRY_INTERVAL_FLIGHT);
ao_ignite(ao_igniter_drogue);
#endif
ao_ignite(ao_igniter_drogue);
#endif
-#if HAS_RADIO && !defined(MEGAMETRUM)
/* slow down the telemetry system */
ao_telemetry_set_interval(AO_TELEMETRY_INTERVAL_RECOVER);
/* 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
#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
#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)
{
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;
telemetry.generic.tick = packet->tick;
telemetry.generic.type = AO_TELEMETRY_SENSOR;
#else
telemetry.sensor.accel = 0;
#endif
#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
telemetry.sensor.temp = packet->adc.temp;
telemetry.sensor.v_batt = packet->adc.v_batt;
#if HAS_IGNITE
ao_log_mega.c \
ao_sample_mm.c \
ao_kalman.c \
ao_log_mega.c \
ao_sample_mm.c \
ao_kalman.c \
+ ao_flight_mm.c \
+ ao_telemetry.c
PRODUCT=MegaMetrum-v0.1
PRODUCT_DEF=-DMEGAMETRUM
PRODUCT=MegaMetrum-v0.1
PRODUCT_DEF=-DMEGAMETRUM
CFLAGS = $(PRODUCT_DEF) $(STM_CFLAGS) -Os -g
CFLAGS = $(PRODUCT_DEF) $(STM_CFLAGS) -Os -g
ao_flight_init();
ao_log_init();
ao_report_init();
ao_flight_init();
ao_log_init();
ao_report_init();
ao_config_init();
ao_start_scheduler();
ao_config_init();
ao_start_scheduler();
#define HAS_USB 1
#define HAS_BEEP 1
#define HAS_RADIO 1
#define HAS_USB 1
#define HAS_BEEP 1
#define HAS_RADIO 1
#define HAS_SPI_1 1
#define SPI_1_PA5_PA6_PA7 1
#define HAS_SPI_1 1
#define SPI_1_PA5_PA6_PA7 1