*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
/* 32 */
};
-#define AO_TELEMETRY_MEGA_SENSOR 0x08
+#define AO_TELEMETRY_MEGA_SENSOR_MPU 0x08 /* Invensense IMU */
+#define AO_TELEMETRY_MEGA_SENSOR_BMX160 0x12 /* BMX160 IMU */
struct ao_telemetry_mega_sensor {
uint16_t serial; /* 0 */
int16_t gyro_z; /* 24 */
int16_t mag_x; /* 26 */
- int16_t mag_y; /* 28 */
- int16_t mag_z; /* 30 */
+ int16_t mag_z; /* 28 */
+ int16_t mag_y; /* 30 */
/* 32 */
};
/* 32 */
};
-#define AO_TELEMETRY_MINI 0x10
+#define AO_TELEMETRY_MINI2 0x10 /* CC1111 based */
+#define AO_TELEMETRY_MINI3 0x11 /* STMF042 based */
struct ao_telemetry_mini {
uint16_t serial; /* 0 */
/* 32 */
};
+#define AO_TELEMETRY_MEGA_NORM_MPU6000_MMC5983 0x13
+
+struct ao_telemetry_mega_norm {
+ uint16_t serial; /* 0 */
+ uint16_t tick; /* 2 */
+ uint8_t type; /* 4 */
+
+ uint8_t orient; /* 5 angle from vertical */
+ int16_t accel; /* 6 Z axis */
+
+ int32_t pres; /* 8 Pa * 10 */
+ int16_t temp; /* 12 °C * 100 */
+
+ int16_t accel_along; /* 14 */
+ int16_t accel_across; /* 16 */
+ int16_t accel_through; /* 18 */
+
+ int16_t gyro_roll; /* 20 */
+ int16_t gyro_pitch; /* 22 */
+ int16_t gyro_yaw; /* 24 */
+
+ int16_t mag_along; /* 26 */
+ int16_t mag_across; /* 28 */
+ int16_t mag_through; /* 30 */
+ /* 32 */
+};
+
/* #define AO_SEND_ALL_BARO */
#define AO_TELEMETRY_BARO 0x80
struct ao_telemetry_metrum_data metrum_data;
struct ao_telemetry_mini mini;
struct ao_telemetry_baro baro;
+ struct ao_telemetry_mega_norm mega_norm;
};
typedef char ao_check_telemetry_size[sizeof(union ao_telemetry_all) == 32 ? 1 : -1];