diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h index 905db3994..82b4b9498 100644 --- a/radio/src/dataconstants.h +++ b/radio/src/dataconstants.h @@ -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, diff --git a/radio/src/telemetry/crossfire.cpp b/radio/src/telemetry/crossfire.cpp index 3d40dc2f0..192003d95 100644 --- a/radio/src/telemetry/crossfire.cpp +++ b/radio/src/telemetry/crossfire.cpp @@ -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; + } } diff --git a/radio/src/telemetry/crossfire.h b/radio/src/telemetry/crossfire.h index c2a93e627..f201800a6 100644 --- a/radio/src/telemetry/crossfire.h +++ b/radio/src/telemetry/crossfire.h @@ -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); diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 6affc551f..663cbedfe 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -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" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 939a42def..46cf0c29c 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -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" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 05ef2a713..834e1f8ef 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -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" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 387050ced..aedbb729e 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -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" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 023b1d992..e26f69855 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -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" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index ebe0a1920..4cfb54593 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -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" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 04ac51df5..66096f8f7 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -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" diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 95589d033..f5b9becde 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -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" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 40d687c9d..dc966c8b1 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -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" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index ecc05bb6e..65bb10576 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -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" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index ae4e44c72..983d30b29 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -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" diff --git a/radio/util/tts_cz.py b/radio/util/tts_cz.py index 37edcc211..459831e71 100755 --- a/radio/util/tts_cz.py +++ b/radio/util/tts_cz.py @@ -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"gé", u"gé", u"gé", u"gé" 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", diff --git a/radio/util/tts_de.py b/radio/util/tts_de.py index 8b3e6341e..d9533b628 100755 --- a/radio/util/tts_de.py +++ b/radio/util/tts_de.py @@ -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), diff --git a/radio/util/tts_en.py b/radio/util/tts_en.py index a8f598566..3ec9d9045 100755 --- a/radio/util/tts_en.py +++ b/radio/util/tts_en.py @@ -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", diff --git a/radio/util/tts_fr.py b/radio/util/tts_fr.py index 49f4722f2..611ea3ec3 100755 --- a/radio/util/tts_fr.py +++ b/radio/util/tts_fr.py @@ -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)))