mirror of https://github.com/ArduPilot/ardupilot
1355 lines
53 KiB
C
1355 lines
53 KiB
C
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright 2013 by Horizon Hobby, Inc.
|
|
// All Rights Reserved Worldwide.
|
|
//
|
|
// Released to Public Domain
|
|
//
|
|
// This header file may be incorporated into non-Horizon
|
|
// products.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Author: AK
|
|
// Date: 2017-02-24
|
|
// Mods: Sync to Spektrum internal version by matching sequence of
|
|
// structs, formatting, etc. Also changed some structs from
|
|
// having "id" to "identifier." Also redefined "spare" in Rx MAH
|
|
// to provide more bits for "chargeUsed" fields.
|
|
//
|
|
#ifndef TELEMETRY_H
|
|
#define TELEMETRY_H
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// TELEMETRY SENSOR I2C ADDRESSES & DEVICE TYPES
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
#define TELE_DEVICE_NODATA (0x00) // No data in packet, but telemetry is alive
|
|
#define TELE_DEVICE_VOLTAGE (0x01) // High-Voltage sensor (INTERNAL)
|
|
#define TELE_DEVICE_TEMPERATURE (0x02) // Temperature Sensor (INTERNAL)
|
|
#define TELE_DEVICE_AMPS (0x03) // Amps (INTERNAL)
|
|
#define TELE_DEVICE_RSV_04 (0x04) // Reserved
|
|
#define TELE_DEVICE_FLITECTRL (0x05) // Flight Controller Status Report
|
|
#define TELE_DEVICE_RSV_06 (0x06) // Reserved
|
|
#define TELE_DEVICE_RSV_07 (0x07) // Reserved
|
|
#define TELE_DEVICE_RSV_08 (0x08) // Reserved
|
|
//#define DO_NOT_USE (0x09) // DO NOT USE!
|
|
#define TELE_DEVICE_PBOX (0x0A) // PowerBox
|
|
#define TELE_DEVICE_LAPTIMER (0x0B) // Lap Timer
|
|
#define TELE_DEVICE_TEXTGEN (0x0C) // Text Generator
|
|
#define TELE_DEVICE_VTX (0x0D) // Video Transmitter Feedback
|
|
#define TELE_DEVICE_RSV_0E (0x0E) // Reserved
|
|
#define TELE_DEVICE_RSV_0F (0x0F) // Reserved
|
|
#define TELE_DEVICE_RSV_10 (0x10) // Reserved
|
|
#define TELE_DEVICE_AIRSPEED (0x11) // Air Speed (Eagle Tree Sensor)
|
|
#define TELE_DEVICE_ALTITUDE (0x12) // Altitude (Eagle Tree Sensor)
|
|
#define TELE_DEVICE_RSV_13 (0x13) // Reserved
|
|
#define TELE_DEVICE_GMETER (0x14) // G-Force (Eagle Tree Sensor)
|
|
#define TELE_DEVICE_JETCAT (0x15) // Turbine interface (Eagle Tree)
|
|
#define TELE_DEVICE_GPS_LOC (0x16) // GPS Location Data (Eagle Tree)
|
|
#define TELE_DEVICE_GPS_STATS (0x17) // GPS Status (Eagle Tree)
|
|
#define TELE_DEVICE_RX_MAH (0x18) // Receiver Pack Capacity (Dual)
|
|
#define TELE_DEVICE_JETCAT_2 (0x19) // Turbine interface, message 2 format (Eagle Tree)
|
|
#define TELE_DEVICE_GYRO (0x1A) // 3-axis gyro
|
|
#define TELE_DEVICE_ATTMAG (0x1B) // Attitude and Magnetic Compass
|
|
#define TELE_DEVICE_TILT (0x1C) // Surface Tilt Sensor
|
|
#define TELE_DEVICE_RSV_1D (0x1D) // Reserved
|
|
#define TELE_DEVICE_AS6X_GAIN (0x1E) // Active AS6X Gains (new mode)
|
|
#define TELE_DEVICE_AS3X_LEGACYGAIN (0x1F) // Active AS3X Gains for legacy mode
|
|
#define TELE_DEVICE_ESC (0x20) // Electronic Speed Control
|
|
#define TELE_DEVICE_RSV_21 (0x21) // Reserved
|
|
#define TELE_DEVICE_FUEL (0x22) // Fuel Flow Meter
|
|
#define TELE_DEVICE_RSV_23 (0x23) // Reserved
|
|
#define TELE_DEVICE_ALPHA6 (0x24) // Alpha6 Stabilizer
|
|
#define TELE_DEVICE_RSV_25 (0x25) // Reserved
|
|
#define TELE_DEVICE_GPS_BINARY (0x26) // GPS, binary format
|
|
#define TELE_DEVICE_RSV_27 (0x27) // Reserved
|
|
#define TELE_DEVICE_RSV_28 (0x28) // Reserved
|
|
#define TELE_DEVICE_RSV_29 (0x29) // Reserved
|
|
#define TELE_DEVICE_RSV_2A (0x2A) // Reserved
|
|
#define TELE_DEVICE_RSV_2B (0x2B) // Reserved
|
|
#define TELE_DEVICE_RSV_2C (0x2C) // Reserved
|
|
#define TELE_DEVICE_RSV_2D (0x2D) // Reserved
|
|
#define TELE_DEVICE_RSV_2E (0x2E) // Reserved
|
|
#define TELE_DEVICE_RSV_2F (0x2F) // Reserved
|
|
//#define DO_NOT_USE (0x30) // Internal ST sensor
|
|
//#define DO_NOT_USE (0x32) // Internal ST sensor
|
|
#define TELE_DEVICE_RSV_33 (0x33) // Reserved
|
|
#define TELE_DEVICE_FP_MAH (0x34) // Flight Battery Capacity (Dual)
|
|
#define TELE_DEVICE_RSV_35 (0x35) // Reserved
|
|
#define TELE_DEVICE_DIGITAL_AIR (0x36) // Digital Inputs & Tank Pressure
|
|
#define TELE_DEVICE_RSV_37 (0x37) // Reserved
|
|
#define TELE_DEVICE_STRAIN (0x38) // Thrust/Strain Gauge
|
|
#define TELE_DEVICE_RSV_39 (0x39) // Reserved
|
|
#define TELE_DEVICE_LIPOMON (0x3A) // 6S Cell Monitor (LiPo taps)
|
|
#define TELE_DEVICE_RSV_3B (0x3B) // Reserved
|
|
#define TELE_DEVICE_RSV_3C (0x3C) // Reserved
|
|
#define TELE_DEVICE_RSV_3D (0x3D) // Reserved
|
|
#define TELE_DEVICE_RSV_3E (0x3E) // Reserved
|
|
#define TELE_DEVICE_LIPOMON_14 (0x3F) // 14S Cell Monitor (LiPo taps)
|
|
#define TELE_DEVICE_VARIO_S (0x40) // Vario
|
|
#define TELE_DEVICE_RSV_41 (0x41) // Reserved
|
|
#define TELE_DEVICE_SMARTBATT (0x42) // Spektrum SMART Battery (multiple structs)
|
|
#define TELE_DEVICE_RSV_43 (0x43) // Reserved
|
|
#define TELE_DEVICE_RSV_44 (0x44) // Reserved
|
|
#define TELE_DEVICE_RSV_45 (0x45) // Reserved
|
|
#define TELE_DEVICE_RSV_46 (0x46) // Reserved
|
|
#define TELE_DEVICE_RSV_47 (0x47) // Reserved
|
|
#define TELE_DEVICE_RSV_48 (0x48) // Reserved
|
|
#define TELE_DEVICE_RSV_49 (0x49) // Reserved
|
|
#define TELE_DEVICE_RSV_4A (0x4A) // Reserved
|
|
#define TELE_DEVICE_RSV_4B (0x4B) // Reserved
|
|
#define TELE_DEVICE_RSV_4C (0x4C) // Reserved
|
|
#define TELE_DEVICE_RSV_4D (0x4D) // Reserved
|
|
#define TELE_DEVICE_RSV_4E (0x4E) // Reserved
|
|
#define TELE_DEVICE_RSV_4F (0x4F) // Reserved
|
|
#define TELE_DEVICE_USER_16SU (0x50) // User-Defined, STRU_TELE_USER_16SU
|
|
#define TELE_DEVICE_RSV_51 (0x51) // Reserved
|
|
#define TELE_DEVICE_USER_16SU32U (0x52) // User-Defined, STRU_TELE_USER_16SU32U
|
|
#define TELE_DEVICE_RSV_53 (0x53) // Reserved
|
|
#define TELE_DEVICE_USER_16SU32S (0x54) // User-Defined, STRU_TELE_USER_16SU32S
|
|
#define TELE_DEVICE_RSV_55 (0x55) // Reserved
|
|
#define TELE_DEVICE_USER_16U32SU (0x56) // User-Defined, STRU_TELE_USER_16U32SU
|
|
#define TELE_DEVICE_RSV_57 (0x57) // Reserved
|
|
#define TELE_DEVICE_RSV_58 (0x58) // Reserved
|
|
#define TELE_DEVICE_MULTICYLINDER (0x59) // Multi-cylinder temp sensor
|
|
#define TELE_DEVICE_RSV_5A (0x5A) // Reserved
|
|
#define TELE_DEVICE_RSV_5B (0x5B) // Reserved
|
|
#define TELE_DEVICE_RSV_5C (0x5C) // Reserved
|
|
#define TELE_DEVICE_RSV_5D (0x5D) // Reserved
|
|
#define TELE_DEVICE_RSV_5E (0x5E) // Reserved
|
|
#define TELE_DEVICE_RSV_5F (0x5F) // Reserved
|
|
#define TELE_DEVICE_VSPEAK (0x60) // Reserved for V-Speak
|
|
#define TELE_DEVICE_SMOKE_EL (0x61) // Reserved for Smoke-EL.de
|
|
#define TELE_DEVICE_CROSSFIRE (0x62) // Reserved for Crossfire devices
|
|
#define TELE_DEVICE_RSV_63 (0x63) // Reserved
|
|
#define TELE_DEVICE_RSV_64 (0x64) // Reserved
|
|
#define TELE_DEVICE_RSV_65 (0x65) // Reserved
|
|
#define TELE_DEVICE_EXTRF (0x66) // Reserved for Generic External RF sources
|
|
#define TELE_DEVICE_RSV_67 (0x67) // Reserved
|
|
#define TELE_DEVICE_RSV_68 (0x68) // Reserved
|
|
#define TELE_DEVICE_RSV_69 (0x69) // Reserved
|
|
#define TELE_DEVICE_RSV_6A (0x6A) // Reserved
|
|
//#define DO_NOT_USE (0x6B) // DO NOT USE!
|
|
#define TELE_DEVICE_RSV_6C (0x6C) // Reserved
|
|
#define TELE_DEVICE_RSV_6D (0x6D) // Reserved
|
|
#define TELE_DEVICE_RSV_6E (0x6E) // Reserved
|
|
#define TELE_DEVICE_RSV_6F (0x6F) // Reserved
|
|
#define TELE_DEVICE_RSV_70 (0x70) // Reserved
|
|
#define TELE_XRF_LINKSTATUS (0x71) // External RF Link Status
|
|
#define TELE_DEVICE_RSV_72 (0x72) // Reserved
|
|
#define TELE_DEVICE_RSV_73 (0x73) // Reserved
|
|
#define TELE_DEVICE_RSV_74 (0x74) // Reserved
|
|
#define TELE_DEVICE_RSV_75 (0x75) // Reserved
|
|
#define TELE_DEVICE_RSV_76 (0x76) // Reserved
|
|
#define TELE_DEVICE_RSV_77 (0x77) // Reserved
|
|
#define TELE_DEVICE_RSV_78 (0x78) // Reserved
|
|
#define TELE_DEVICE_RSV_79 (0x79) // Reserved
|
|
#define TELE_DEVICE_RSV_7A (0x7A) // Reserved
|
|
#define TELE_DEVICE_ALT_ZERO (0x7B) // Pseudo-device setting Altitude "zero"
|
|
#define TELE_DEVICE_RTC (0x7C) // Pseudo-device giving timestamp
|
|
#define TELE_DEVICE_RPM (0x7E) // RPM sensor
|
|
#define TELE_DEVICE_QOS (0x7F) // RxV + flight log data
|
|
#define TELE_DEVICE_MAX (0x7F) // Last address available
|
|
|
|
#define TELE_DEVICE_SHORTRANGE (0x80) // OR this bit to indicate data is from a short-range telemetry device (e.g. TM1100)
|
|
|
|
#define TELE_DEVICE_MAX_PROGRAM (0x70) // Last programmable address when using sID
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// TELEMETRY
|
|
// DEVICE-SPECIFIC STRUCTURES
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// THIRD-PARTY 16-BIT DATA SIGNED/UNSIGNED
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x50
|
|
UINT8 sID; // Secondary ID
|
|
INT16 sField1, // Signed 16-bit data fields
|
|
sField2,
|
|
sField3;
|
|
UINT16 uField1, // Unsigned 16-bit data fields
|
|
uField2,
|
|
uField3,
|
|
uField4;
|
|
} STRU_TELE_USER_16SU;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// THIRD-PARTY 16-BIT SIGNED/UNSIGNED AND 32-BIT UNSIGNED
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x52
|
|
UINT8 sID; // Secondary ID
|
|
INT16 sField1, // Signed 16-bit data fields
|
|
sField2;
|
|
UINT16 uField1, // Unsigned 16-bit data fields
|
|
uField2,
|
|
uField3;
|
|
UINT32 u32Field; // Unsigned 32-bit data field
|
|
} STRU_TELE_USER_16SU32U;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// THIRD-PARTY 16-BIT SIGNED/UNSIGNED AND 32-BIT SIGNED
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x54
|
|
UINT8 sID; // Secondary ID
|
|
INT16 sField1, // Signed 16-bit data fields
|
|
sField2;
|
|
UINT16 uField1, // Unsigned 16-bit data fields
|
|
uField2,
|
|
uField3;
|
|
INT32 s32Field; // Signed 32-bit data field
|
|
} STRU_TELE_USER_16SU32S;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// THIRD-PARTY 16-BIT UNSIGNED AND 32-BIT SIGNED/UNSIGNED
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x56
|
|
UINT8 sID; // Secondary ID
|
|
UINT16 uField1; // Unsigned 16-bit data field
|
|
INT32 s32Field; // Signed 32-bit data field
|
|
UINT32 u32Field1, // Unsigned 32-bit data fields
|
|
u32Field2;
|
|
} STRU_TELE_USER_16U32SU;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// POWERBOX
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x0A
|
|
UINT8 sID; // Secondary ID
|
|
UINT16 volt1; // Volts, 0.01v
|
|
UINT16 volt2; // Volts, 0.01v
|
|
UINT16 capacity1; // mAh, 1mAh
|
|
UINT16 capacity2; // mAh, 1mAh
|
|
UINT16 spare16_1;
|
|
UINT16 spare16_2;
|
|
UINT8 spare;
|
|
UINT8 alarms; // Alarm bitmask (see below)
|
|
} STRU_TELE_POWERBOX;
|
|
|
|
#define TELE_PBOX_ALARM_VOLTAGE_1 (0x01)
|
|
#define TELE_PBOX_ALARM_VOLTAGE_2 (0x02)
|
|
#define TELE_PBOX_ALARM_CAPACITY_1 (0x04)
|
|
#define TELE_PBOX_ALARM_CAPACITY_2 (0x08)
|
|
//#define TELE_PBOX_ALARM_RPM (0x10)
|
|
//#define TELE_PBOX_ALARM_TEMPERATURE (0x20)
|
|
#define TELE_PBOX_ALARM_RESERVED_1 (0x40)
|
|
#define TELE_PBOX_ALARM_RESERVED_2 (0x80)
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// VOLTAGE
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x01
|
|
UINT8 sID; // Secondary ID
|
|
UINT16 volts; // 0.01V increments
|
|
} STRU_TELE_HV;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// TEMPERATURE
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x02
|
|
UINT8 sID; // Secondary ID
|
|
INT16 temperature; // Temperature in degrees Fahrenheit
|
|
} STRU_TELE_TEMP;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// RX CAPACITY METER
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x18
|
|
UINT8 sID; // Secondary ID
|
|
INT16 current_A; // Instantaneous current, 0.01A (0-328.7A) 7FFF-> no data
|
|
UINT16 chargeUsed_A; // Integrated mAh used, 0.1mAh (0-3276.6mAh)
|
|
UINT16 volts_A; // Volts, 0.01V increments (0-16.00V)
|
|
INT16 current_B; // Instantaneous current, 0.01A (0-328.7A) 7FFF-> no data/sensor B
|
|
UINT16 chargeUsed_B; // Integrated mAh used, 0.1mAh (0-3276.6mAh)
|
|
UINT16 volts_B; // Volts, 0.01V increments (0-16.00V)
|
|
UINT8 alerts, // Bit mapped alert conditions (see below)
|
|
highCharge; // High nybble is extra bits for chargeUsed_B, Low is for chargeUsed_A
|
|
} STRU_TELE_RX_MAH;
|
|
|
|
#define RXMAH_PS_ALERT_NONE (0) // No alarms
|
|
#define RXMAH_PS_ALERT_RF_INT (1 << 0) // A or internal Remote failure
|
|
#define RXMAH_PS_ALERT_RF_ANT1 (1 << 1) // B remote power fault
|
|
#define RXMAH_PS_ALERT_RF_ANT2 (1 << 2) // L remote power fault
|
|
#define RXMAH_PS_ALERT_RF_ANT3 (1 << 3) // R remote power fault
|
|
#define RXMAH_PS_ALERT_OVERVOLT_A (1 << 4) // Battery A is over voltage
|
|
#define RXMAH_PS_ALERT_OVERVOLT_B (1 << 5) // Battery A is over voltage
|
|
#define RXMAH_PS_ALERT_RFU1 (1 << 6)
|
|
#define RXMAH_PS_ALERT_RFU2 (1 << 7)
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// HIGH-CURRENT
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x03
|
|
UINT8 sID; // Secondary ID
|
|
INT16 current, // Range: +/- 150A Resolution: 300A / 2048 = 0.196791 A/count
|
|
dummy; // TBD
|
|
} STRU_TELE_IHIGH;
|
|
|
|
#define IHIGH_RESOLUTION_FACTOR ((FP32)(0.196791))
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// SIMPLE VARIO
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x40
|
|
UINT8 sID; // Secondary ID
|
|
INT16 altitude; // .1m increments
|
|
INT16 delta_0250ms, // change in altitude last 250ms, 0.1m/s increments
|
|
delta_0500ms, // change in altitude last 500ms, 0.1m/s increments
|
|
delta_1000ms, // change in altitude last 1.0 seconds, 0.1m/s increments
|
|
delta_1500ms, // change in altitude last 1.5 seconds, 0.1m/s increments
|
|
delta_2000ms, // change in altitude last 2.0 seconds, 0.1m/s increments
|
|
delta_3000ms; // change in altitude last 3.0 seconds, 0.1m/s increments
|
|
} STRU_TELE_VARIO_S;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// ALTIMETER
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier;
|
|
UINT8 sID; // Secondary ID
|
|
INT16 altitude; // .1m increments
|
|
INT16 maxAltitude; // .1m increments
|
|
} STRU_TELE_ALT; // Eagle Tree Sensor
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// AIRSPEED
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier;
|
|
UINT8 sID; // Secondary ID
|
|
UINT16 airspeed; // 1 km/h increments
|
|
UINT16 maxAirspeed; // 1 km/h increments
|
|
} STRU_TELE_SPEED; // Eagle Tree Sensor
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// LAP TIMER
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier;
|
|
UINT8 sID; // Secondary ID
|
|
UINT8 lapNumber; // Lap last finished
|
|
UINT8 gateNumber; // Last gate passed
|
|
UINT32 lastLapTime; // Time of lap in 1ms increments (NOT duration)
|
|
UINT32 gateTime; // Duration between last 2 gates
|
|
UINT8 unused[4];
|
|
} STRU_TELE_LAPTIMER;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// TEXT GENERATOR
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier;
|
|
UINT8 sID; // Secondary ID
|
|
UINT8 lineNumber; // Line number to display (0 = title, 1-8 for general, 254 = Refresh backlight, 255 = Erase all text on screen)
|
|
char text[13]; // 0-terminated text when < 13 chars
|
|
} STRU_TELE_TEXTGEN;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// VIDEO TRANSMITTER (VTX)
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// VTX spec subject to change. Refer to Spektrum VTX Interfacing document for latest info
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier;
|
|
UINT8 sID; // Secondary ID
|
|
UINT8 band; // VTX Band (0 = Fatshark, 1 = Raceband, 2 = E, 3 = B, 4 = A, 5-7 = Reserved)
|
|
UINT8 channel; // VTX Channel (0-7)
|
|
UINT8 pit; // Pit/Race mode (0 = Race, 1 = Pit). Race = (normal operating) mode. Pit = (reduced power) mode. When PIT is set, it overrides all other power settings.
|
|
UINT8 power; // VTX Power (0 = Off, 1 = 1mw to 14mW, 2 = 15mW to 25mW, 3 = 26mW to 99mW, 4 = 100mW to 299mW, 5 = 300mW to 600mW, 6 = 601mW+, 7 = manual control)
|
|
UINT16 powerDec; // VTX Power as a decimal 1mw/unit
|
|
UINT8 region; // Region (0 = USA, 1 = EU, 0xFF = Not Provided)
|
|
UINT8 unused[7]; // reserved
|
|
} STRU_TELE_VTX;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// ESC
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Uses big-endian byte order
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x20
|
|
UINT8 sID; // Secondary ID
|
|
UINT16 RPM; // Electrical RPM, 10RPM (0-655340 RPM) 0xFFFF --> "No data"
|
|
UINT16 voltsInput; // Volts, 0.01v (0-655.34V) 0xFFFF --> "No data"
|
|
UINT16 tempFET; // Temperature, 0.1C (0-6553.4C) 0xFFFF --> "No data"
|
|
UINT16 currentMotor; // Current, 10mA (0-655.34A) 0xFFFF --> "No data"
|
|
UINT16 tempBEC; // Temperature, 0.1C (0-6553.4C) 0xFFFF --> "No data"
|
|
UINT8 currentBEC; // BEC Current, 100mA (0-25.4A) 0xFF ----> "No data"
|
|
UINT8 voltsBEC; // BEC Volts, 0.05V (0-12.70V) 0xFF ----> "No data"
|
|
UINT8 throttle; // 0.5% (0-100%) 0xFF ----> "No data"
|
|
UINT8 powerOut; // Power Output, 0.5% (0-127%) 0xFF ----> "No data"
|
|
} STRU_TELE_ESC;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// (Liquid) Fuel Flow/Capacity (Two Tanks/Engines)
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x22
|
|
UINT8 sID; // Secondary ID
|
|
UINT16 fuelConsumed_A; // Integrated fuel consumption, 0.1mL
|
|
UINT16 flowRate_A; // Instantaneous consumption, 0.01mL/min
|
|
UINT16 temp_A; // Temperature, 0.1C (0-655.34C)
|
|
UINT16 fuelConsumed_B; // Integrated fuel consumption, 0.1mL
|
|
UINT16 flowRate_B; // Instantaneous consumption, 0.01mL/min
|
|
UINT16 temp_B; // Temperature, 0.1C (0-655.34C)
|
|
UINT16 spare; // Not used
|
|
} STRU_TELE_FUEL;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Battery Current/Capacity (Flight Pack Capacity)
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// AK 2013-11-19 make struct align with 0x03 device
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x34
|
|
UINT8 sID; // Secondary ID
|
|
INT16 current_A; // Instantaneous current, 0.1A (0-3276.6A)
|
|
INT16 chargeUsed_A; // Integrated mAh used, 1mAh (0-32.766Ah)
|
|
UINT16 temp_A; // Temperature, 0.1C (0-150C, 0x7FFF indicates not populated)
|
|
INT16 current_B; // Instantaneous current, 0.1A (0-3276.6A)
|
|
INT16 chargeUsed_B; // Integrated mAh used, 1mAh (0-32.766Ah)
|
|
UINT16 temp_B; // Temperature, 0.1C (0-150C, 0x7FFF indicates not populated)
|
|
UINT16 spare; // Not used
|
|
} STRU_TELE_FP_MAH;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Digital Input Status (Retract Status) and Tank Pressure
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = TELE_DEVICE_DIGITAL_AIR
|
|
UINT8 sID; // Secondary ID
|
|
UINT16 digital; // Digital inputs (bit per input)
|
|
UINT16 spare1;
|
|
UINT16 pressure[4]; // Tank pressure, 0.1PSI (0-6553.4PSI), 0xFFFF = Not Installed
|
|
UINT16 spare2;
|
|
} STRU_TELE_DIGITAL_AIR;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Thrust/Strain Gauge
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x38
|
|
UINT8 sID; // Secondary ID
|
|
UINT16 strain_A, // Strain sensor A
|
|
strain_B, // Strain sensor B
|
|
strain_C, // Strain sensor D
|
|
strain_D; // Strain sensor C
|
|
} STRU_TELE_STRAIN;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// 6S LiPo Cell Monitor
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x3A
|
|
UINT8 sID; // Secondary ID
|
|
UINT16 cell[6]; // Voltage across cell 1, .01V steps
|
|
// 0x7FFF --> cell not present
|
|
UINT16 temp; // Temperature, 0.1C (0-655.34C)
|
|
} STRU_TELE_LIPOMON;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// 14S LiPo Cell Monitor
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x3F
|
|
UINT8 sID; // Secondary ID
|
|
UINT8 cell[14]; // Voltage across cell 1, .01V steps, excess of 2.56V
|
|
// (ie, 3.00V would report 300-256 = 44)
|
|
// 0xFF --> cell not present
|
|
} STRU_TELE_LIPOMON_14;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Smart Battery
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Uses little-endian byte order for all multi-byte fields
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x42
|
|
UINT8 sID; // Secondary ID
|
|
UINT8 typeChannel; // Upper nybble = Message type; Lower nybble = Battery number (0 or 1)
|
|
UINT8 msgData[13]; // Message-specific data, determined by upper nybble of typeChannel (see defs below)
|
|
} STRU_SMARTBATT_HEADER;
|
|
|
|
#define SMARTBATT_MSG_TYPE_MASK_BATTNUMBER (0x0F)
|
|
#define SMARTBATT_MSG_TYPE_MASK_MSGTYPE (0xF0)
|
|
|
|
#define SMARTBATT_MSG_TYPE_REALTIME (0x00)
|
|
#define SMARTBATT_MSG_TYPE_CELLS_1_6 (0x10)
|
|
#define SMARTBATT_MSG_TYPE_CELLS_7_12 (0x20)
|
|
#define SMARTBATT_MSG_TYPE_CELLS_13_18 (0x30)
|
|
#define SMARTBATT_MSG_TYPE_ID (0x80)
|
|
#define SMARTBATT_MSG_TYPE_LIMITS (0x90)
|
|
|
|
//...........................................................................
|
|
// Real-time battery data when current sense is available
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x42
|
|
UINT8 sID; // Secondary ID
|
|
UINT8 typeChannel; // Msg type = SMARTBATT_MSG_TYPE_REALTIME | Battery number (0 or 1)
|
|
INT8 temperature_C; // Temperature in degrees C, 1 degree increments (-128 = unavailable)
|
|
UINT32 dischargeCurrent_mA; // Amount of current being drawn from battery, in mA steps (0xFFFFFFFF = unavailable)
|
|
UINT16 batteryCapacityUsage_mAh; // Approximate battery capacity usage, in mAh (0xFFFF = unavailable)
|
|
UINT16 minCellVoltage_mV; // Minimum cell voltage of pack, in mV
|
|
UINT16 maxCellVoltage_mV; // Maximum cell voltage of pack, in mV
|
|
UINT8 rfu[2];
|
|
} STRU_SMARTBATT_REALTIME;
|
|
|
|
//...........................................................................
|
|
// Real-time cell voltage
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x42
|
|
UINT8 sID; // Secondary ID
|
|
UINT8 typeChannel; // Msg type = SMARTBATT_MSG_TYPE_CELLS_X_Y | Battery number (0 or 1)
|
|
INT8 temperature_C; // Temperature in degrees C, 1 degree increments (-128 = unavailable)
|
|
UINT16 cellVoltage_mV[6]; // Cell voltage of first 6 cells, in mV (0xFFFF = unavailable)
|
|
} STRU_SMARTBATT_CELLS;
|
|
|
|
//...........................................................................
|
|
// Smart Battery ID and general info
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x42
|
|
UINT8 sID; // Secondary ID
|
|
UINT8 typeChannel; // Msg type = SMARTBATT_MSG_TYPE_ID | Battery number (0 or 1)
|
|
UINT8 chemistry; // 0:LiHv, 1:LiPo, 2:LiIon, 3:LiFe, 4:Pb, 5:Ni-MH/Cd
|
|
UINT8 numOfCells; // Number of cells in the battery
|
|
UINT8 manufacturer; // 0:BattGo
|
|
UINT16 cycles; // Number of charge/discharge cycles recorded (0 = unavailable)
|
|
UINT8 uniqueID[8]; // Unique battery ID, manufacturer-specific
|
|
// 0: [0] = lower (first) byte of "Customer ID"
|
|
// [1-3] = lower 3 bytes of "Special Mark of Battery"
|
|
// [4-7] = 4-byte "Manufacturing Date"
|
|
} STRU_SMARTBATT_ID;
|
|
|
|
//...........................................................................
|
|
// Smart Battery Limits
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x42
|
|
UINT8 sID; // Secondary ID
|
|
UINT8 typeChannel; // Msg type = SMARTBATT_MSG_TYPE_LIMITS | Battery number (0 or 1)
|
|
UINT8 rfu;
|
|
UINT16 fullCapacity_mAh; // Fully charged battery capacity, in mAh
|
|
UINT16 dischargeCurrentRating; // Rated discharge current, in 0.1C
|
|
UINT16 overDischarge_mV; // Limit below which battery is likely damaged, in mV
|
|
UINT16 zeroCapacity_mV; // Voltage at which LVC protection should activate, in mV
|
|
UINT16 fullyCharged_mV; // Voltage reading expected when fully charged, in mV
|
|
INT8 minWorkingTemp; // Minimum working temperature in degrees C, 1 degree steps
|
|
INT8 maxWorkingTemp; // Maximum working temperature in degrees C, 1 degree steps
|
|
} STRU_SMARTBATT_LIMITS;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// ACCELEROMETER
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x14
|
|
UINT8 sID; // Secondary ID
|
|
INT16 GForceX; // force is reported as .01G increments
|
|
INT16 GForceY; // Range = +/-4000 (+/- 40G) in Pro model
|
|
INT16 GForceZ; // Range = +/-800 (+/- 8G) in Standard model
|
|
INT16 maxGForceX; // abs(max G X-axis) FORE/AFT
|
|
INT16 maxGForceY; // abs (max G Y-axis) LEFT/RIGHT
|
|
INT16 maxGForceZ; // max G Z-axis WING SPAR LOAD
|
|
INT16 minGForceZ; // min G Z-axis WING SPAR LOAD
|
|
} STRU_TELE_G_METER;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// SURFACE TILT (ATTITUDE) SENSOR
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x1C TELE_DEVICE_TILT
|
|
UINT8 sID; // Secondary ID
|
|
INT16 attQuatX; // Quaternion representing attitude using RHR. X component in Q14.
|
|
INT16 attQuatY; // Y component in Q14.
|
|
INT16 attQuatZ; // Z component in Q14.
|
|
INT16 attQuatW; // W component in Q14.
|
|
UINT16 spare[3];
|
|
} STRU_TELE_TILT;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// TURBINE
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x15
|
|
UINT8 sID; // Secondary ID
|
|
UINT8 status; // Table below
|
|
UINT8 throttle; // (BCD) xx Percent
|
|
UINT16 packVoltage; // (BCD) xx.yy
|
|
UINT16 pumpVoltage; // (BCD) xx.yy
|
|
UINT32 RPM; // (BCD)
|
|
UINT16 EGT; // (BCD) Temperature, Celsius
|
|
UINT8 offCondition; // Table below
|
|
UINT8 spare;
|
|
} STRU_TELE_JETCAT;
|
|
|
|
enum JETCAT_ECU_TURBINE_STATE { // ECU Status definitions
|
|
JETCAT_ECU_STATE_OFF = 0x00,
|
|
JETCAT_ECU_STATE_WAIT_for_RPM = 0x01, // (Stby/Start)
|
|
JETCAT_ECU_STATE_Ignite = 0x02,
|
|
JETCAT_ECU_STATE_Accelerate = 0x03,
|
|
JETCAT_ECU_STATE_Stabilise = 0x04,
|
|
JETCAT_ECU_STATE_Learn_HI = 0x05,
|
|
JETCAT_ECU_STATE_Learn_LO = 0x06,
|
|
JETCAT_ECU_STATE_UNDEFINED = 0x07,
|
|
JETCAT_ECU_STATE_Slow_Down = 0x08,
|
|
JETCAT_ECU_STATE_Manual = 0x09,
|
|
JETCAT_ECU_STATE_AutoOff = 0x10,
|
|
JETCAT_ECU_STATE_Run = 0x11, // (reg.)
|
|
JETCAT_ECU_STATE_Accleleration_delay = 0x12,
|
|
JETCAT_ECU_STATE_SpeedReg = 0x13, // (Speed Ctrl)
|
|
JETCAT_ECU_STATE_Two_Shaft_Regulate = 0x14, // (only for secondary shaft)
|
|
JETCAT_ECU_STATE_PreHeat1 = 0x15,
|
|
JETCAT_ECU_STATE_PreHeat2 = 0x16,
|
|
JETCAT_ECU_STATE_MainFStart = 0x17,
|
|
JETCAT_ECU_STATE_NotUsed = 0x18,
|
|
JETCAT_ECU_STATE_KeroFullOn = 0x19,
|
|
// undefined states 0x1A-0x1F
|
|
EVOJET_ECU_STATE_off = 0x20,
|
|
EVOJET_ECU_STATE_ignt = 0x21,
|
|
EVOJET_ECU_STATE_acce = 0x22,
|
|
EVOJET_ECU_STATE_run = 0x23,
|
|
EVOJET_ECU_STATE_cal = 0x24,
|
|
EVOJET_ECU_STATE_cool = 0x25,
|
|
EVOJET_ECU_STATE_fire = 0x26,
|
|
EVOJET_ECU_STATE_glow = 0x27,
|
|
EVOJET_ECU_STATE_heat = 0x28,
|
|
EVOJET_ECU_STATE_idle = 0x29,
|
|
EVOJET_ECU_STATE_lock = 0x2A,
|
|
EVOJET_ECU_STATE_rel = 0x2B,
|
|
EVOJET_ECU_STATE_spin = 0x2C,
|
|
EVOJET_ECU_STATE_stop = 0x2D,
|
|
// undefined states 0x2E-0x2F
|
|
HORNET_ECU_STATE_OFF = 0x30,
|
|
HORNET_ECU_STATE_SLOWDOWN = 0x31,
|
|
HORNET_ECU_STATE_COOL_DOWN = 0x32,
|
|
HORNET_ECU_STATE_AUTO = 0x33,
|
|
HORNET_ECU_STATE_AUTO_HC = 0x34,
|
|
HORNET_ECU_STATE_BURNER_ON = 0x35,
|
|
HORNET_ECU_STATE_CAL_IDLE = 0x36,
|
|
HORNET_ECU_STATE_CALIBRATE = 0x37,
|
|
HORNET_ECU_STATE_DEV_DELAY = 0x38,
|
|
HORNET_ECU_STATE_EMERGENCY = 0x39,
|
|
HORNET_ECU_STATE_FUEL_HEAT = 0x3A,
|
|
HORNET_ECU_STATE_FUEL_IGNITE = 0x3B,
|
|
HORNET_ECU_STATE_GO_IDLE = 0x3C,
|
|
HORNET_ECU_STATE_PROP_IGNITE = 0x3D,
|
|
HORNET_ECU_STATE_RAMP_DELAY = 0x3E,
|
|
HORNET_ECU_STATE_RAMP_UP = 0x3F,
|
|
HORNET_ECU_STATE_STANDBY = 0x40,
|
|
HORNET_ECU_STATE_STEADY = 0x41,
|
|
HORNET_ECU_STATE_WAIT_ACC = 0x42,
|
|
HORNET_ECU_STATE_ERROR = 0x43,
|
|
// undefined states 0x44-0x4F
|
|
XICOY_ECU_STATE_Temp_High = 0x50,
|
|
XICOY_ECU_STATE_Trim_Low = 0x51,
|
|
XICOY_ECU_STATE_Set_Idle = 0x52,
|
|
XICOY_ECU_STATE_Ready = 0x53,
|
|
XICOY_ECU_STATE_Ignition = 0x54,
|
|
XICOY_ECU_STATE_Fuel_Ramp = 0x55,
|
|
XICOY_ECU_STATE_Glow_Test = 0x56,
|
|
XICOY_ECU_STATE_Running = 0x57,
|
|
XICOY_ECU_STATE_Stop = 0x58,
|
|
XICOY_ECU_STATE_Flameout = 0x59,
|
|
XICOY_ECU_STATE_Speed_Low = 0x5A,
|
|
XICOY_ECU_STATE_Cooling = 0x5B,
|
|
XICOY_ECU_STATE_Igniter_Bad = 0x5C,
|
|
XICOY_ECU_STATE_Starter_F = 0x5D,
|
|
XICOY_ECU_STATE_Weak_Fuel = 0x5E,
|
|
XICOY_ECU_STATE_Start_On = 0x5F,
|
|
XICOY_ECU_STATE_Pre_Heat = 0x60,
|
|
XICOY_ECU_STATE_Battery = 0x61,
|
|
XICOY_ECU_STATE_Time_Out = 0x62,
|
|
XICOY_ECU_STATE_Overload = 0x63,
|
|
XICOY_ECU_STATE_Igniter_Fail = 0x64,
|
|
XICOY_ECU_STATE_Burner_On = 0x65,
|
|
XICOY_ECU_STATE_Starting = 0x66,
|
|
XICOY_ECU_STATE_SwitchOver = 0x67,
|
|
XICOY_ECU_STATE_Cal_Pump = 0x68,
|
|
XICOY_ECU_STATE_Pump_Limit = 0x69,
|
|
XICOY_ECU_STATE_No_Engine = 0x6A,
|
|
XICOY_ECU_STATE_Pwr_Boost = 0x6B,
|
|
XICOY_ECU_STATE_Run_Idle = 0x6C,
|
|
XICOY_ECU_STATE_Run_Max = 0x6D,
|
|
// undefined states 0x6e-0x73
|
|
JETCENT_ECU_STATE_STOP = 0x74,
|
|
JETCENT_ECU_STATE_GLOW_TEST = 0x75,
|
|
JETCENT_ECU_STATE_STARTER_TEST = 0x76,
|
|
JETCENT_ECU_STATE_PRIME_FUEL = 0x77,
|
|
JETCENT_ECU_STATE_PRIME_BURNER = 0x78,
|
|
JETCENT_ECU_STATE_MAN_COOL = 0x79,
|
|
JETCENT_ECU_STATE_AUTO_COOL = 0x7A,
|
|
JETCENT_ECU_STATE_IGN_HEAT = 0x7B,
|
|
JETCENT_ECU_STATE_IGNITION = 0x7C,
|
|
JETCENT_ECU_STATE_PREHEAT = 0x7D,
|
|
JETCENT_ECU_STATE_SWITCHOVER = 0x7E,
|
|
JETCENT_ECU_STATE_TO_IDLE = 0x7F,
|
|
JETCENT_ECU_STATE_RUNNING = 0x80,
|
|
JETCENT_ECU_STATE_STOP_ERROR = 0x81,
|
|
// undefined states 0x82-0x8F
|
|
SWIWIN_ECU_STATE_STOP = 0x90,
|
|
SWIWIN_ECU_STATE_READY = 0x91,
|
|
SWIWIN_ECU_STATE_IGNITION = 0x92,
|
|
SWIWIN_ECU_STATE_PREHEAT = 0x93,
|
|
SWIWIN_ECU_STATE_FUEL_RAMP = 0x94,
|
|
SWIWIN_ECU_STATE_RUNNING = 0x95,
|
|
SWIWIN_ECU_STATE_COOLING = 0x96,
|
|
SWIWIN_ECU_STATE_RESTART_SWOVER = 0x97,
|
|
SWIWIN_ECU_STATE_NOTUSED = 0x98,
|
|
// undefined states 0x99-0x9F
|
|
|
|
TURBINE_ECU_MAX_STATE = 0x9F
|
|
};
|
|
|
|
enum JETCAT_ECU_OFF_CONDITIONS { // ECU off conditions. Valid only when the ECUStatus = JETCAT_ECU_STATE_OFF
|
|
JETCAT_ECU_OFF_No_Off_Condition_defined = 0,
|
|
JETCAT_ECU_OFF_Shut_down_via_RC,
|
|
JETCAT_ECU_OFF_Overtemperature,
|
|
JETCAT_ECU_OFF_Ignition_timeout,
|
|
JETCAT_ECU_OFF_Acceleration_time_out,
|
|
JETCAT_ECU_OFF_Acceleration_too_slow,
|
|
JETCAT_ECU_OFF_Over_RPM,
|
|
JETCAT_ECU_OFF_Low_Rpm_Off,
|
|
JETCAT_ECU_OFF_Low_Battery,
|
|
JETCAT_ECU_OFF_Auto_Off,
|
|
JETCAT_ECU_OFF_Low_temperature_Off,
|
|
JETCAT_ECU_OFF_Hi_Temp_Off,
|
|
JETCAT_ECU_OFF_Glow_Plug_defective,
|
|
JETCAT_ECU_OFF_Watch_Dog_Timer,
|
|
JETCAT_ECU_OFF_Fail_Safe_Off,
|
|
JETCAT_ECU_OFF_Manual_Off, // (via GSU)
|
|
JETCAT_ECU_OFF_Power_fail, // (Battery fail)
|
|
JETCAT_ECU_OFF_Temp_Sensor_fail, // (only during startup)
|
|
JETCAT_ECU_OFF_Fuel_fail,
|
|
JETCAT_ECU_OFF_Prop_fail,
|
|
JETCAT_ECU_OFF_2nd_Engine_fail,
|
|
JETCAT_ECU_OFF_2nd_Engine_Diff_Too_High,
|
|
JETCAT_ECU_OFF_2nd_Engine_No_Comm,
|
|
JETCAT_ECU_MAX_OFF_COND,
|
|
// Jet Central
|
|
JETCENT_ECU_OFF_No_Off_Condition_defined = 24, // ECU off conditions. Valid only when the ECUStatus = JETCENT_ECU_STATE_STOP or JETCENT_ECU_STATE_STOP_ERROR or JETCENT_ECU_STATE_RUNNING
|
|
JETCENT_ECU_OFF_IGNITION_ERROR,
|
|
JETCENT_ECU_OFF_PREHEAT_ERROR,
|
|
JETCENT_ECU_OFF_SWITCHOVER_ERROR,
|
|
JETCENT_ECU_OFF_STARTER_MOTOR_ERROR,
|
|
JETCENT_ECU_OFF_TO_IDLE_ERROR,
|
|
JETCENT_ECU_OFF_ACCELERATION_ERROR,
|
|
JETCENT_ECU_OFF_IGNITER_BAD,
|
|
JETCENT_ECU_OFF_MIN_PUMP_OK,
|
|
JETCENT_ECU_OFF_MAX_PUMP_OK,
|
|
JETCENT_ECU_OFF_LOW_RX_BATTERY,
|
|
JETCENT_ECU_OFF_LOW_ECU_BATTERY,
|
|
JETCENT_ECU_OFF_NO_RX,
|
|
JETCENT_ECU_OFF_TRIM_DOWN,
|
|
JETCENT_ECU_OFF_TRIM_UP,
|
|
JETCENT_ECU_OFF_FAILSAFE,
|
|
JETCENT_ECU_OFF_FULL,
|
|
JETCENT_ECU_OFF_RX_SETUP_ERROR,
|
|
JETCENT_ECU_OFF_TEMP_SENSOR_ERROR,
|
|
JETCENT_ECU_OFF_COM_TURBINE_ERROR,
|
|
JETCENT_ECU_OFF_MAX_TEMP,
|
|
JETCENT_ECU_OFF_MAX_AMPS,
|
|
JETCENT_ECU_OFF_LOW_RPM,
|
|
JETCENT_ECU_OFF_ERROR_RPM_SENSOR,
|
|
JETCENT_ECU_OFF_MAX_PUMP,
|
|
JETCENT_ECU_MAX_OFF_COND
|
|
};
|
|
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x19
|
|
UINT8 sID; // Secondary ID
|
|
UINT16 FuelFlowRateMLMin; // (BCD) mL per Minute
|
|
UINT32 RestFuelVolumeInTankML; // (BCD) mL remaining in tank
|
|
UINT8 ECUbatteryPercent; // (BCD) % battery pack capacity remaining
|
|
// 7 bytes left
|
|
} STRU_TELE_JETCAT2;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// GPS
|
|
// Packed-BCD Type
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x16
|
|
UINT8 sID; // Secondary ID
|
|
UINT16 altitudeLow; // BCD, meters, format 3.1 (Low order of altitude)
|
|
UINT32 latitude; // BCD, format 4.4, Degrees * 100 + minutes, less than 100 degrees
|
|
UINT32 longitude; // BCD, format 4.4 , Degrees * 100 + minutes, flag indicates > 99 degrees
|
|
UINT16 course; // BCD, 3.1
|
|
UINT8 HDOP; // BCD, format 1.1
|
|
UINT8 GPSflags; // see definitions below
|
|
} STRU_TELE_GPS_LOC;
|
|
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x17
|
|
UINT8 sID; // Secondary ID
|
|
UINT16 speed; // BCD, knots, format 3.1
|
|
UINT32 UTC; // BCD, format HH:MM:SS.S, format 6.1
|
|
UINT8 numSats; // BCD, 0-99
|
|
UINT8 altitudeHigh; // BCD, meters, format 2.0 (High order of altitude)
|
|
} STRU_TELE_GPS_STAT;
|
|
|
|
// GPS flags definitions:
|
|
#define GPS_INFO_FLAGS_IS_NORTH_BIT (0)
|
|
#define GPS_INFO_FLAGS_IS_NORTH (1 << GPS_INFO_FLAGS_IS_NORTH_BIT)
|
|
#define GPS_INFO_FLAGS_IS_EAST_BIT (1)
|
|
#define GPS_INFO_FLAGS_IS_EAST (1 << GPS_INFO_FLAGS_IS_EAST_BIT)
|
|
#define GPS_INFO_FLAGS_LONGITUDE_GREATER_99_BIT (2)
|
|
#define GPS_INFO_FLAGS_LONGITUDE_GREATER_99 (1 << GPS_INFO_FLAGS_LONGITUDE_GREATER_99_BIT)
|
|
#define GPS_INFO_FLAGS_GPS_FIX_VALID_BIT (3)
|
|
#define GPS_INFO_FLAGS_GPS_FIX_VALID (1 << GPS_INFO_FLAGS_GPS_FIX_VALID_BIT)
|
|
#define GPS_INFO_FLAGS_GPS_DATA_RECEIVED_BIT (4)
|
|
#define GPS_INFO_FLAGS_GPS_DATA_RECEIVED (1 << GPS_INFO_FLAGS_GPS_DATA_RECEIVED_BIT)
|
|
#define GPS_INFO_FLAGS_3D_FIX_BIT (5)
|
|
#define GPS_INFO_FLAGS_3D_FIX (1 << GPS_INFO_FLAGS_3D_FIX_BIT)
|
|
#define GPS_INFO_FLAGS_NEGATIVE_ALT_BIT (7)
|
|
#define GPS_INFO_FLAGS_NEGATIVE_ALT (1 << GPS_INFO_FLAGS_NEGATIVE_ALT_BIT)
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// GPS
|
|
// Binary Type
|
|
//
|
|
// NOTE: Data resolution for all fields matches Crossfire EXCEPT speed.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x26
|
|
UINT8 sID; // Secondary ID
|
|
UINT16 altitude; // m, 1000m offset
|
|
INT32 latitude; // degree / 10,000,000
|
|
INT32 longitude; // degree / 10,000,000
|
|
UINT16 heading; // degree / 10
|
|
UINT8 groundSpeed; // km/h
|
|
UINT8 numSats; // count
|
|
} STRU_TELE_GPS_BINARY;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// AS3X Legacy Gain Report
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = TELE_DEVICE_AS3X_LEGACYGAIN
|
|
UINT8 sID; // Secondary ID
|
|
UINT8 gainRoll; // Configured normal gains per axis
|
|
UINT8 gainPitch;
|
|
UINT8 gainYaw;
|
|
UINT8 headRoll; // Configured heading hold gains per axis
|
|
UINT8 headPitch;
|
|
UINT8 headYaw;
|
|
UINT8 activeRoll; // Active gains per axis (as affected by FM channel)
|
|
UINT8 activePitch;
|
|
UINT8 activeYaw;
|
|
UINT8 flightMode; // bit 7 1 --> FM present in bits 0,1 except 0xFF --> not present
|
|
UINT8 unused[4];
|
|
} STRU_TELE_AS3X_LEGACY;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// AS6X Gain Report (AS3X Legacy + more fields)
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = TELE_DEVICE_AS6X_GAIN
|
|
UINT8 sID; // Secondary ID
|
|
UINT8 gainRoll; // Configured normal gains per axis
|
|
UINT8 gainPitch;
|
|
UINT8 gainYaw;
|
|
UINT8 headRoll; // Configured heading hold gains per axis
|
|
UINT8 headPitch;
|
|
UINT8 headYaw;
|
|
UINT8 activeRoll; // Active gains per axis (as affected by FM channel)
|
|
UINT8 activePitch;
|
|
UINT8 activeYaw;
|
|
UINT8 flightMode; // bit 7 1 --> FM present in bits 0,1 except 0xFF --> not present
|
|
// new fields go here:
|
|
UINT8 unused[4];
|
|
} STRU_TELE_AS6X_GAIN;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// GYRO
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x1A
|
|
UINT8 sID; // Secondary ID
|
|
INT16 gyroX; // Rotation rates of the body - Rate is about the X Axis which is defined out the nose of the vehicle.
|
|
INT16 gyroY; // Units are 0.1 deg/sec - Rate is about the Y Axis which is define out the right wing of the vehicle.
|
|
INT16 gyroZ; // Rate is about the Z axis which is defined down from the vehicle.
|
|
INT16 maxGyroX; // Max rates (absolute value)
|
|
INT16 maxGyroY;
|
|
INT16 maxGyroZ;
|
|
} STRU_TELE_GYRO;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Alpha6 Stabilizer
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x24
|
|
UINT8 sID; // Secondary ID
|
|
UINT16 volts; // 0.01V increments
|
|
UINT8 state_FM; // Flight Mode and System State (see below)
|
|
UINT8 gainRoll, // Roll Gain, high bit --> Heading Hold
|
|
gainPitch, // Pitch Gain
|
|
gainYaw; // Yaw Gain
|
|
INT16 attRoll, // Roll Attitude, 0.1degree, RHR
|
|
attPitch, // Pitch Attitude
|
|
attYaw; // Yaw Attitude
|
|
UINT16 spare;
|
|
} STRU_TELE_ALPHA6;
|
|
|
|
#define GBOX_STATE_BOOT (0x00) // Alpha6 State - Boot
|
|
#define GBOX_STATE_INIT (0x01) // Init
|
|
#define GBOX_STATE_READY (0x02) // Ready
|
|
#define GBOX_STATE_SENSORFAULT (0x03) // Sensor Fault
|
|
#define GBOX_STATE_POWERFAULT (0x04) // Power Fault
|
|
#define GBOX_STATE_MASK (0x0F)
|
|
|
|
#define GBOX_FMODE_FM0 (0x00) // FM0 through FM4
|
|
#define GBOX_FMODE_FM1 (0x10)
|
|
#define GBOX_FMODE_FM2 (0x20)
|
|
#define GBOX_FMODE_FM3 (0x30)
|
|
#define GBOX_FMODE_FM4 (0x40)
|
|
#define GBOX_FMODE_PANIC (0x50)
|
|
#define GBOX_FMODE_MASK (0xF0)
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// ATTITUDE & MAG COMPASS
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x1B
|
|
UINT8 sID; // Secondary ID
|
|
INT16 attRoll; // Attitude, 3 axes. Roll is a rotation about the X Axis of the vehicle using the RHR.
|
|
INT16 attPitch; // Units are 0.1 deg - Pitch is a rotation about the Y Axis of the vehicle using the RHR.
|
|
INT16 attYaw; // Yaw is a rotation about the Z Axis of the vehicle using the RHR.
|
|
INT16 magX; // Magnetic Compass, 3 axes
|
|
INT16 magY; // Units are 0.1mG
|
|
INT16 magZ; //
|
|
UINT16 heading; // Heading, 0.1deg
|
|
} STRU_TELE_ATTMAG;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Altitude "Zero" Message
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x7B
|
|
UINT8 sID; // Secondary ID
|
|
UINT8 spare[2];
|
|
UINT32 altOffset; // Altitude "zero" log
|
|
} STRU_TELE_ALT_ZERO;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Real-Time Clock
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x7C
|
|
UINT8 sID; // Secondary ID
|
|
UINT8 spare[6];
|
|
UINT64 UTC64; // Linux 64-bit time_t for post-2038 date compatibility
|
|
} STRU_TELE_RTC;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// V-Speak (Placeholder)
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x61
|
|
UINT8 sID; // Secondary ID
|
|
UINT8 spare[14]; // Format TBD by V-Speak
|
|
} STRU_TELE_V_SPEAK;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// www.Smoke-EL.de
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x61
|
|
UINT8 sID; // Secondary ID
|
|
UINT16 batteryV; // 0.01V, Range 0.00-70.00V
|
|
UINT16 countdown; // 0.01s, Range 0.00-30.00s
|
|
INT16 GForce; // 0.01g, Range = +/-8.00g
|
|
UINT8 cutoff; // 1 count, Range 0-9
|
|
UINT8 connected; // 0=not connected, 1=connected, x = TBD
|
|
UINT16 spare[3];
|
|
} STRU_TELE_SMOKE_EL;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// MULTI-CYLINDER SENSOR
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = TELE_DEVICE_MULTICYLINDER
|
|
UINT8 sID; // Secondary ID
|
|
UINT8 temperature[9]; // Temperature, 1C increments, Offset = 30C, 0xFF = NO DATA
|
|
// 0x00 = 30C (86F)
|
|
// 0x01 = 31C ... (88F)
|
|
// 0xFE = 284C (543F)
|
|
// 0xFF = NO SENSOR ATTACHED. Note that sensors must be installed cylinder 1-9 in sequence!
|
|
UINT8 throttlePct; // Throttle percent (0-100% typical, 0xFF = NO DATA)
|
|
UINT16 RPM; // 4 RPM increments, Offset = 400RPM, range 404-16776.
|
|
// 0x000 = 0 RPM
|
|
// 0x001 = 404 RPM
|
|
// 0x002 = 408 RPM
|
|
// 0xFFE = 16776 RPM
|
|
// 0xFFF = NO SENSOR ATTACHED
|
|
// NOTE: HI NYBBLE RESERVED, set to 0xF to mark "NO DATA" for now
|
|
UINT8 batteryV; // Voltage, 0.1V increments, Offset = 3.5V, 0xFF = NO DATA
|
|
// 0x00 = 3.5V
|
|
// 0x01 = 3.6V
|
|
// 0xFE = 28.9V
|
|
// 0xFF = NO SENSOR ATTACHED
|
|
UINT8 spare; // 0xFF --> no data
|
|
} STRU_TELE_MULTI_TEMP;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Transmitter Frame Data
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x7D
|
|
UINT8 sID; // Secondary ID
|
|
UINT16 chanData[7]; // Channel Data array
|
|
} STRU_TELE_FRAMEDATA;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// AHRS Monitor
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = TELE_DEVICE_AHRS
|
|
UINT8 sID; // Secondary ID
|
|
INT16 attRoll; // Attitude, 3 axes. Roll is a rotation about the X Axis of the vehicle using the RHR.
|
|
INT16 attPitch; // Units are 0.1 deg - Pitch is a rotation about the Y Axis of the vehicle using the RHR.
|
|
INT16 attYaw; // Roll is a rotation about the Z Axis of the vehicle using the RHR.
|
|
INT16 altitude; // .1m increments
|
|
UINT8 waypoint; // Waypoint number
|
|
UINT8 spare8;
|
|
UINT16 spare16[2];
|
|
} STRU_TELE_AHRS; // AHRS data from rx
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// FLIGHT MODE
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x05 TELE_DEVICE_FLITECTRL
|
|
UINT8 sID; // Secondary ID
|
|
UINT8 fMode, // Current flight mode (low nybble)
|
|
spare8;
|
|
UINT16 spare[6]; // Growth
|
|
// Ideas -
|
|
// arming status in a bitmap
|
|
// time in state
|
|
} STRU_TELE_FLITECTRL;
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Crossfire QOS
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = TELE_XRF_LINKSTATUS
|
|
UINT8 sID; // Secondary ID
|
|
UINT8 ant1, // dBm * -1
|
|
ant2,
|
|
quality; // %
|
|
INT8 SNR; // dB
|
|
UINT8 activeAnt, // ant1=0, ant2=1
|
|
RFmode, // 4fps=0, 50fps, 150Hz
|
|
upPower, // 0mW=0, 10mW, 25mW, 100mW, 500mW, 1000mW, 2000mW
|
|
downlink, // dBm * -1
|
|
qualityDown; // %
|
|
INT8 SNRdown; // dB
|
|
} STRU_TELE_XF_QOS;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// RPM/Volts/Temperature
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Uses big-endian byte order
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x7E
|
|
UINT8 sID; // Secondary ID
|
|
UINT16 microseconds; // microseconds between pulse leading edges
|
|
UINT16 volts; // 0.01V increments (typically flight pack voltage)
|
|
INT16 temperature; // Temperature in degrees F. 0x7FFF = "No Data"
|
|
INT8 dBm_A, // Avg RSSI in dBm (<-1 = dBm, 0 = no data, >0 = % range) -- (legacy)antenna A in dBm
|
|
dBm_B; // Avg RSSI in % (<-1 = dBm, 0 = no data, >0 = % range) -- (legacy)antenna B in dBm
|
|
// Note: Legacy use as antenna A/B dBm values is still supported. If only 1 antenna, set B = A.
|
|
// The "no data" value is 0, but -1 (0xFF) is treated the same for backwards compatibility
|
|
UINT16 spare[2];
|
|
} STRU_TELE_RPM;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// QoS DATA
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// NOTE: AR6410-series send:
|
|
// id = 7F
|
|
// sID = 0
|
|
// A = 0
|
|
// B = 0
|
|
// L = 0
|
|
// R = 0
|
|
// F = fades
|
|
// H = holds
|
|
// rxV = 0xFFFF
|
|
//
|
|
typedef struct
|
|
{
|
|
UINT8 identifier; // Source device = 0x7F
|
|
UINT8 sID; // Secondary ID
|
|
UINT16 A; // Internal/base receiver fades. 0xFFFF = "No data"
|
|
UINT16 B; // Remote receiver fades. 0xFFFF = "No data"
|
|
UINT16 L; // Third receiver fades. 0xFFFF = "No data"
|
|
UINT16 R; // Fourth receiver fades. 0xFFFF = "No data"
|
|
UINT16 F; // Frame losses. 0xFFFF = "No data"
|
|
UINT16 H; // Holds. 0xFFFF = "No data"
|
|
UINT16 rxVoltage; // Volts, .01V increment. 0xFFFF = "No data"
|
|
} STRU_TELE_QOS;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// UNION OF ALL DEVICE MESSAGES
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
typedef union
|
|
{
|
|
UINT16 raw[8];
|
|
STRU_TELE_QOS qos;
|
|
STRU_TELE_RPM rpm;
|
|
STRU_TELE_HV hv;
|
|
STRU_TELE_TEMP temp;
|
|
STRU_TELE_IHIGH amps;
|
|
STRU_TELE_ALT alt;
|
|
STRU_TELE_SPEED speed;
|
|
STRU_TELE_ESC escSPM;
|
|
STRU_TELE_VARIO_S varioSimple;
|
|
STRU_TELE_G_METER accel;
|
|
STRU_TELE_JETCAT jetcat;
|
|
STRU_TELE_JETCAT2 jetcat2;
|
|
STRU_TELE_GPS_LOC gpsloc;
|
|
STRU_TELE_GPS_STAT gpsstat;
|
|
STRU_TELE_GPS_BINARY gpsbin;
|
|
STRU_TELE_AS3X_LEGACY as3x;
|
|
STRU_TELE_AS6X_GAIN as6x;
|
|
STRU_TELE_GYRO gyro;
|
|
STRU_TELE_ALPHA6 alpha6;
|
|
STRU_TELE_ATTMAG attMag;
|
|
STRU_TELE_POWERBOX powerBox;
|
|
STRU_TELE_RX_MAH rxMAH;
|
|
STRU_TELE_FP_MAH fpMAH;
|
|
STRU_TELE_ESC esc;
|
|
STRU_TELE_FUEL fuel;
|
|
STRU_TELE_DIGITAL_AIR digAir;
|
|
STRU_TELE_STRAIN strain;
|
|
STRU_TELE_LIPOMON lipomon;
|
|
STRU_TELE_LIPOMON_14 lipomon14;
|
|
STRU_SMARTBATT_HEADER smartBatt_header;
|
|
STRU_SMARTBATT_REALTIME smartBatt_realtime;
|
|
STRU_SMARTBATT_CELLS smartBatt_cells;
|
|
STRU_SMARTBATT_ID smartBatt_ID;
|
|
STRU_SMARTBATT_LIMITS smartBatt_limits;
|
|
STRU_TELE_USER_16SU user_16SU;
|
|
STRU_TELE_USER_16SU32U user_16SU32U;
|
|
STRU_TELE_USER_16SU32S user_16SU32S;
|
|
STRU_TELE_USER_16U32SU user_16U32SU;
|
|
STRU_TELE_TEXTGEN textgen;
|
|
STRU_TELE_VTX vtx;
|
|
STRU_TELE_V_SPEAK vSpeak;
|
|
STRU_TELE_SMOKE_EL smoke_el;
|
|
STRU_TELE_MULTI_TEMP multiCylinder;
|
|
STRU_TELE_FLITECTRL fControl;
|
|
STRU_TELE_TILT tilt;
|
|
STRU_TELE_XF_QOS xfire;
|
|
} UN_TELEMETRY; // All telemetry messages
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
//
|
|
// sID Field Functionality
|
|
//
|
|
//////////////////////////////////////////////////////////////////
|
|
//
|
|
// if .sID == 0x00 then .identifier = device type (TELE_DEVICE_xxx) and address I2C bus
|
|
// if .sID != 0x00 then .sID = device type and .identifer = address on I2C bus
|
|
|
|
#endif
|