altos: Add telemetry to megametrum
[fw/altos] / src / core / ao.h
index 27b9c5c469717112161a72ecdb498a4098bb6ed8..3dae8b40b00778c87cf1d181bd6eb5a96dc3b321 100644 (file)
@@ -115,6 +115,7 @@ ao_start_scheduler(void);
 #define AO_PANIC_BT            11      /* Communications with bluetooth device failed */
 #define AO_PANIC_STACK         12      /* Stack overflow */
 #define AO_PANIC_SPI           13      /* SPI communication failure */
+#define AO_PANIC_SELF_TEST     14      /* Self test failure */
 
 /* Stop the operating system, beeping and blinking the reason */
 void
@@ -282,6 +283,18 @@ ao_altitude_to_pres(int16_t alt) __reentrant;
 int16_t
 ao_temp_to_dC(int16_t temp) __reentrant;
 
+/*
+ * ao_convert_pa.c
+ *
+ * Convert between pressure in Pa and altitude in meters
+ */
+
+int32_t
+ao_pa_to_altitude(int32_t pa);
+
+int32_t
+ao_altitude_to_pa(int32_t alt);
+
 #if HAS_DBG
 #include <ao_dbg.h>
 #endif
@@ -334,6 +347,7 @@ struct ao_telemetry_generic {
 #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 */
@@ -561,6 +575,16 @@ ao_gps_report_init(void);
  * ao_telemetry_orig.c
  */
 
+struct ao_adc_orig {
+       uint16_t        tick;           /* tick when the sample was read */
+       int16_t         accel;          /* accelerometer */
+       int16_t         pres;           /* pressure sensor */
+       int16_t         temp;           /* temperature sensor */
+       int16_t         v_batt;         /* battery voltage */
+       int16_t         sense_d;        /* drogue continuity sense */
+       int16_t         sense_m;        /* main continuity sense */
+};
+
 struct ao_telemetry_orig {
        uint16_t                serial;
        uint16_t                flight;
@@ -578,7 +602,7 @@ struct ao_telemetry_orig {
        int16_t                 ground_pres;
        int16_t                 accel_plus_g;
        int16_t                 accel_minus_g;
-       struct ao_adc           adc;
+       struct ao_adc_orig      adc;
        struct ao_gps_orig      gps;
        char                    callsign[AO_MAX_CALLSIGN];
        struct ao_gps_tracking_orig     gps_tracking;