1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-25 09:15:38 +03:00

[Crossfire] New frame ATTITUDE added

This commit is contained in:
Bertrand Songis 2016-06-04 12:36:37 +02:00
parent 068fa45a06
commit 5767be27b6
18 changed files with 129 additions and 24 deletions

View file

@ -359,6 +359,7 @@ enum TelemetryUnit {
UNIT_RPMS,
UNIT_G,
UNIT_DEGREE,
UNIT_RADIANS,
UNIT_MILLILITERS,
UNIT_FLOZ,
UNIT_HOURS,
@ -370,6 +371,7 @@ enum TelemetryUnit {
UNIT_DATETIME,
UNIT_GPS,
UNIT_BITFIELD,
UNIT_TEXT,
// Internal units (not stored in sensor unit)
UNIT_GPS_LONGITUDE,
UNIT_GPS_LATITUDE,

View file

@ -48,30 +48,38 @@ enum CrossfireSensorIndexes {
GPS_HEADING_INDEX,
GPS_ALTITUDE_INDEX,
GPS_SATELLITES_INDEX,
UNKNOW_INDEX,
ATTITUDE_PITCH_INDEX,
ATTITUDE_ROLL_INDEX,
ATTITUDE_YAW_INDEX,
FLIGHT_MODE_INDEX,
UNKNOWN_INDEX,
};
const CrossfireSensor crossfireSensors[] = {
{LINK_ID, 0, ZSTR_RX_RSSI1, UNIT_DB, 0},
{LINK_ID, 1, ZSTR_RX_RSSI2, UNIT_DB, 0},
{LINK_ID, 2, ZSTR_RX_QUALITY, UNIT_PERCENT, 0},
{LINK_ID, 3, ZSTR_RX_SNR, UNIT_DB, 0},
{LINK_ID, 4, ZSTR_ANTENNA, UNIT_RAW, 0},
{LINK_ID, 5, ZSTR_RF_MODE, UNIT_RAW, 0},
{LINK_ID, 6, ZSTR_TX_POWER, UNIT_MILLIWATTS, 0},
{LINK_ID, 7, ZSTR_TX_RSSI, UNIT_DB, 0},
{LINK_ID, 8, ZSTR_TX_QUALITY, UNIT_PERCENT, 0},
{LINK_ID, 9, ZSTR_TX_SNR, UNIT_DB, 0},
{BATTERY_ID, 0, ZSTR_BATT, UNIT_VOLTS, 1},
{BATTERY_ID, 1, ZSTR_CURR, UNIT_AMPS, 1},
{BATTERY_ID, 2, ZSTR_CAPACITY, UNIT_MAH, 0},
{GPS_ID, 0, ZSTR_GPS, UNIT_GPS_LATITUDE, 0},
{GPS_ID, 0, ZSTR_GPS, UNIT_GPS_LONGITUDE, 0},
{GPS_ID, 2, ZSTR_GSPD, UNIT_KMH, 1},
{GPS_ID, 3, ZSTR_HDG, UNIT_DEGREE, 3},
{GPS_ID, 4, ZSTR_ALT, UNIT_METERS, 0},
{GPS_ID, 5, ZSTR_SATELLITES, UNIT_RAW, 0},
{0, 0, "UNKNOWN", UNIT_RAW, 0},
{LINK_ID, 0, ZSTR_RX_RSSI1, UNIT_DB, 0},
{LINK_ID, 1, ZSTR_RX_RSSI2, UNIT_DB, 0},
{LINK_ID, 2, ZSTR_RX_QUALITY, UNIT_PERCENT, 0},
{LINK_ID, 3, ZSTR_RX_SNR, UNIT_DB, 0},
{LINK_ID, 4, ZSTR_ANTENNA, UNIT_RAW, 0},
{LINK_ID, 5, ZSTR_RF_MODE, UNIT_RAW, 0},
{LINK_ID, 6, ZSTR_TX_POWER, UNIT_MILLIWATTS, 0},
{LINK_ID, 7, ZSTR_TX_RSSI, UNIT_DB, 0},
{LINK_ID, 8, ZSTR_TX_QUALITY, UNIT_PERCENT, 0},
{LINK_ID, 9, ZSTR_TX_SNR, UNIT_DB, 0},
{BATTERY_ID, 0, ZSTR_BATT, UNIT_VOLTS, 1},
{BATTERY_ID, 1, ZSTR_CURR, UNIT_AMPS, 1},
{BATTERY_ID, 2, ZSTR_CAPACITY, UNIT_MAH, 0},
{GPS_ID, 0, ZSTR_GPS, UNIT_GPS_LATITUDE, 0},
{GPS_ID, 0, ZSTR_GPS, UNIT_GPS_LONGITUDE, 0},
{GPS_ID, 2, ZSTR_GSPD, UNIT_KMH, 1},
{GPS_ID, 3, ZSTR_HDG, UNIT_DEGREE, 3},
{GPS_ID, 4, ZSTR_ALT, UNIT_METERS, 0},
{GPS_ID, 5, ZSTR_SATELLITES, UNIT_RAW, 0},
{ATTITUDE_ID, 0, ZSTR_PITCH, UNIT_RADIANS, 3},
{ATTITUDE_ID, 1, ZSTR_ROLL, UNIT_RADIANS, 3},
{ATTITUDE_ID, 2, ZSTR_YAW, UNIT_RADIANS, 3},
{FLIGHT_MODE_ID, 2, ZSTR_FLIGHT_MODE, UNIT_TEXT, 0},
{0, 0, "UNKNOWN", UNIT_RAW, 0},
};
const CrossfireSensor & getCrossfireSensor(uint8_t id, uint8_t subId)
@ -82,8 +90,12 @@ const CrossfireSensor & getCrossfireSensor(uint8_t id, uint8_t subId)
return crossfireSensors[BATT_VOLTAGE_INDEX+subId];
else if (id == GPS_ID)
return crossfireSensors[GPS_LATITUDE_INDEX+subId];
else if (id == ATTITUDE_ID)
return crossfireSensors[ATTITUDE_PITCH_INDEX+subId];
else if (id == FLIGHT_MODE_ID)
return crossfireSensors[FLIGHT_MODE_INDEX];
else
return crossfireSensors[UNKNOW_INDEX];
return crossfireSensors[UNKNOWN_INDEX];
}
void processCrossfireTelemetryValue(uint8_t index, uint32_t value)
@ -140,6 +152,7 @@ void processCrossfireTelemetryFrame()
if (getCrossfireTelemetryValue<1>(17, value))
processCrossfireTelemetryValue(GPS_SATELLITES_INDEX, value);
break;
case LINK_ID:
telemetryStreaming = TELEMETRY_TIMEOUT10ms;
for (int i=0; i<10; i++) {
@ -151,6 +164,7 @@ void processCrossfireTelemetryFrame()
}
}
break;
case BATTERY_ID:
if (getCrossfireTelemetryValue<2>(3, value))
processCrossfireTelemetryValue(BATT_VOLTAGE_INDEX, value);
@ -159,6 +173,20 @@ void processCrossfireTelemetryFrame()
if (getCrossfireTelemetryValue<3>(7, value))
processCrossfireTelemetryValue(BATT_CAPACITY_INDEX, value);
break;
case ATTITUDE_ID:
if (getCrossfireTelemetryValue<2>(3, value))
processCrossfireTelemetryValue(ATTITUDE_PITCH_INDEX, value/10);
if (getCrossfireTelemetryValue<2>(5, value))
processCrossfireTelemetryValue(ATTITUDE_ROLL_INDEX, value/10);
if (getCrossfireTelemetryValue<2>(7, value))
processCrossfireTelemetryValue(ATTITUDE_YAW_INDEX, value/10);
break;
case FLIGHT_MODE_ID:
// TODO
break;
}
}

View file

@ -29,6 +29,8 @@
#define BATTERY_ID 0x08
#define LINK_ID 0x14
#define CHANNELS_ID 0x16
#define ATTITUDE_ID 0x1E
#define FLIGHT_MODE_ID 0x21
void processCrossfireTelemetryData(uint8_t data);
void crossfireSetDefault(int index, uint8_t id, uint8_t subId);

View file

@ -1256,3 +1256,7 @@
#define ZSTR_TX_RSSI "TRSS"
#define ZSTR_TX_QUALITY "TQly"
#define ZSTR_TX_SNR "TSNR"
#define ZSTR_PITCH "Ptch"
#define ZSTR_ROLL "Roll"
#define ZSTR_YAW "Yaw"
#define ZSTR_FLIGHT_MODE "FM"

View file

@ -1259,3 +1259,7 @@
#define ZSTR_TX_RSSI "TRSS"
#define ZSTR_TX_QUALITY "TQly"
#define ZSTR_TX_SNR "TSNR"
#define ZSTR_PITCH "Ptch"
#define ZSTR_ROLL "Roll"
#define ZSTR_YAW "Yaw"
#define ZSTR_FLIGHT_MODE "FM"

View file

@ -1272,3 +1272,7 @@
#define ZSTR_TX_RSSI "TRSS"
#define ZSTR_TX_QUALITY "TQly"
#define ZSTR_TX_SNR "TSNR"
#define ZSTR_PITCH "Ptch"
#define ZSTR_ROLL "Roll"
#define ZSTR_YAW "Yaw"
#define ZSTR_FLIGHT_MODE "FM"

View file

@ -1218,3 +1218,7 @@
#define ZSTR_TX_RSSI "TRSS"
#define ZSTR_TX_QUALITY "TQly"
#define ZSTR_TX_SNR "TSNR"
#define ZSTR_PITCH "Ptch"
#define ZSTR_ROLL "Roll"
#define ZSTR_YAW "Yaw"
#define ZSTR_FLIGHT_MODE "FM"

View file

@ -1218,3 +1218,7 @@
#define ZSTR_TX_RSSI "TRSS"
#define ZSTR_TX_QUALITY "TQly"
#define ZSTR_TX_SNR "TSNR"
#define ZSTR_PITCH "Ptch"
#define ZSTR_ROLL "Roll"
#define ZSTR_YAW "Yaw"
#define ZSTR_FLIGHT_MODE "FM"

View file

@ -1245,3 +1245,7 @@
#define ZSTR_TX_RSSI "TRSS"
#define ZSTR_TX_QUALITY "TQly"
#define ZSTR_TX_SNR "TSNR"
#define ZSTR_PITCH "Ptch"
#define ZSTR_ROLL "Roll"
#define ZSTR_YAW "Yaw"
#define ZSTR_FLIGHT_MODE "PV"

View file

@ -1254,3 +1254,7 @@
#define ZSTR_TX_RSSI "TRSS"
#define ZSTR_TX_QUALITY "TQly"
#define ZSTR_TX_SNR "TSNR"
#define ZSTR_PITCH "Ptch"
#define ZSTR_ROLL "Roll"
#define ZSTR_YAW "Yaw"
#define ZSTR_FLIGHT_MODE "FM"

View file

@ -1269,3 +1269,7 @@
#define ZSTR_TX_RSSI "TRSS"
#define ZSTR_TX_QUALITY "TQly"
#define ZSTR_TX_SNR "TSNR"
#define ZSTR_PITCH "Ptch"
#define ZSTR_ROLL "Roll"
#define ZSTR_YAW "Yaw"
#define ZSTR_FLIGHT_MODE "FM"

View file

@ -1256,3 +1256,7 @@
#define ZSTR_TX_RSSI "TRSS"
#define ZSTR_TX_QUALITY "TQly"
#define ZSTR_TX_SNR "TSNR"
#define ZSTR_PITCH "Ptch"
#define ZSTR_ROLL "Roll"
#define ZSTR_YAW "Yaw"
#define ZSTR_FLIGHT_MODE "FM"

View file

@ -1215,3 +1215,7 @@
#define ZSTR_TX_RSSI "TRSS"
#define ZSTR_TX_QUALITY "TQly"
#define ZSTR_TX_SNR "TSNR"
#define ZSTR_PITCH "Ptch"
#define ZSTR_ROLL "Roll"
#define ZSTR_YAW "Yaw"
#define ZSTR_FLIGHT_MODE "FM"

View file

@ -1271,3 +1271,7 @@
#define ZSTR_TX_RSSI "TRSS"
#define ZSTR_TX_QUALITY "TQly"
#define ZSTR_TX_SNR "TSNR"
#define ZSTR_PITCH "Ptch"
#define ZSTR_ROLL "Roll"
#define ZSTR_YAW "Yaw"
#define ZSTR_FLIGHT_MODE "FM"

View file

@ -33,10 +33,12 @@ for i, s in enumerate(["volt", "volty", u"voltů", "voltu",
"procento", "procenta", "procent", "procenta",
u"miliampérhodina", u"miliampérhodiny", u"miliampérhodin", u"miliampérhodiny",
"vat", "vaty", u"vatů", "vatu",
"milivat", "milivaty", u"milivatů", "milivatu",
"decibel", "decibely", u"decibelů", "decibelu",
u"otáčka za minutu", u"otáčky za minutu", u"otáček za minutu", u"otáčky za minutu",
u"", u"", u"", u""
u"stupeň", u"stupně", u"stupňů", u"stupně",
u"", u"", u"", u"",
u"mililitr", u"mililitry", u"mililitrů", "mililitru",
u"dutá unce", u"duté unce", u"dutých uncí", u"duté unce",
"hodina", "hodiny", "hodin", "hodiny",

View file

@ -17,7 +17,7 @@ for i, s in enumerate(["", "Volt", "Ampere", "MilliAmpere", "Knoten",
"Meter pro sekunde", "Fuesse pro sekunde",
"kilometer pro stunde", "Meilen pro Stunde", "Meter",
"Fuesse", "Grad", "Grad Fahrenheit", "Prozent",
"Milliampere pro stunde", "Watt", "db", "R P M", "g",
"Milliampere pro stunde", "Watt", "Milli Watt", "db", "R P M", "g", "degree", "radians",
"Milliliter", "Unze", "Uhr", "Minuten", "Secunden"]):
systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 110 + i)))
for s, f, a in [(u"Sender ist inaktiv,bitte Ueberpruefen Sie", "inactiv", 486),

View file

@ -34,6 +34,7 @@ for i, s in enumerate(["volt", "volts",
"r p m", "r p m",
"g", "g",
"degree", "degrees",
"radian", "radians",
"milliliter", "milliliters",
"fluid ounce", "fluid ounces",
"hour", "hours",

View file

@ -15,7 +15,33 @@ for i, s in enumerate(["une", "onze", "vingt et une", "trente et une", "quarante
systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 110 + i)))
for i, s in enumerate(["virgule", "et", "moins", "minuit", "midi"]):
systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 119 + i)))
for i, s in enumerate([u"volts", u"ampères", u"milli ampères", u"knots", u"mètres seconde", u"pieds par seconde", u"kilomètre heure", u"miles par heure", u"mètres", u"pieds", u"degrés", u"degrés fahrenheit", u"pourcents", u"milli ampères / heure", u"watt", u"milli watt", u"db", u"tours minute", u"g", u"degrés", u"millilitres", u"onces", u"heure", u"minute", u"seconde"]):
for i, s in enumerate([u"volts",
u"ampères",
u"milli ampères",
u"knots",
u"mètres seconde",
u"pieds par seconde",
u"kilomètre heure",
u"miles par heure",
u"mètres",
u"pieds",
u"degrés",
u"degrés fahrenheit",
u"pourcents",
u"milli ampères / heure",
u"watt",
u"milli watt",
u"db",
u"tours minute",
u"g",
u"degrés",
u"radians",
u"millilitres",
u"onces",
u"heure",
u"minute",
u"seconde"
]):
systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 125 + i)))
for i, s in enumerate(["virgule 0", "virgule 1", "virgule 2", "virgule 3", "virgule 4", "virgule 5", "virgule 6", "virgule 7", "virgule 8", "virgule 9"]):
systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 180 + i)))