From afd31035064bbc4f48042ec4712fdcbcab65300b Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Thu, 7 Dec 2017 18:48:10 +0100 Subject: [PATCH] Update multi protocols (#5461) * Update multi protocols * SFHSS also has failsafe implemented * Show failsafe setting in Companion * Fix missing protocol names * Update failsafe format and only show bind when module reports to support it --- companion/src/modeledit/setup.cpp | 2 ++ companion/src/modelprinter.cpp | 2 +- companion/src/multiprotocols.cpp | 14 +++++++---- companion/src/radiodata.h | 5 +++- radio/src/gui/gui_common.h | 2 +- radio/src/gui/gui_common_arm.cpp | 16 +++++++++---- radio/src/myeeprom.h | 5 +++- radio/src/pulses/multi_arm.cpp | 40 +++++++++++++++---------------- radio/src/telemetry/multi.cpp | 8 ++++++- radio/src/telemetry/multi.h | 3 +++ radio/src/translations.cpp | 1 + radio/src/translations.h | 1 + radio/src/translations/cz.h.txt | 3 ++- radio/src/translations/de.h.txt | 3 ++- radio/src/translations/en.h.txt | 3 ++- radio/src/translations/es.h.txt | 3 ++- radio/src/translations/fi.h.txt | 3 ++- radio/src/translations/fr.h.txt | 3 ++- radio/src/translations/it.h.txt | 3 ++- radio/src/translations/nl.h.txt | 3 ++- radio/src/translations/pl.h.txt | 3 ++- radio/src/translations/pt.h.txt | 3 ++- radio/src/translations/se.h.txt | 3 ++- 23 files changed, 86 insertions(+), 46 deletions(-) diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index 4a2a77bce..27788a841 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -410,6 +410,8 @@ void ModulePanel::update() module.channelsCount = 16; if (multiProtocols.getProtocol(module.multi.rfProtocol).optionsstr != nullptr) mask |= MASK_MULTIOPTION; + if (multiProtocols.getProtocol(module.multi.rfProtocol).hasFailsafe) + mask |= MASK_FAILSAFES; break; case PULSES_OFF: break; diff --git a/companion/src/modelprinter.cpp b/companion/src/modelprinter.cpp index f0887a5e6..dca0221c7 100644 --- a/companion/src/modelprinter.cpp +++ b/companion/src/modelprinter.cpp @@ -132,7 +132,7 @@ QString ModelPrinter::printMultiRfProtocol(int rfProtocol, bool custom) static const char *strings[] = { "FlySky", "Hubsan", "FrSky", "Hisky", "V2x2", "DSM", "Devo", "YD717", "KN", "SymaX", "SLT", "CX10", "CG023", "Bayang", "ESky", "MT99XX", "MJXQ", "Shenqi", "FY326", "SFHSS", "J6 PRO","FQ777","Assan","Hontai","OLRS", - "FlySky AFHDS2A", "Q2x2", "Walkera", "Q303", "GW008", "DM002" + "FlySky AFHDS2A", "Q2x2", "Walkera", "Q303", "GW008", "DM002", "CABELL", "Esky 150", "H8 3D" }; if (custom) return "Custom - proto " + QString::number(rfProtocol); diff --git a/companion/src/multiprotocols.cpp b/companion/src/multiprotocols.cpp index 86a3e0f8e..8cc5016a4 100644 --- a/companion/src/multiprotocols.cpp +++ b/companion/src/multiprotocols.cpp @@ -45,8 +45,8 @@ static const QStringList STR_SUBTYPE_YD717 {"YD717", "Skywalker", "Syma X2", " static const QStringList STR_SUBTYPE_SYMAX {"Standard", "Syma X5C"}; static const QStringList STR_SUBTYPE_SLT {"SLT", "Vista"}; static const QStringList STR_SUBTYPE_CX10 {"Green", "Blue", "DM007", "-", "JC3015a", "JC3015b", "MK33041", "Q242"}; -static const QStringList STR_SUBTYPE_CG023 {"CG023", "YD829", "H8 3D"}; -static const QStringList STR_SUBTYPE_BAYANG {"Bayang", "H8S3D", "X16 AH"}; +static const QStringList STR_SUBTYPE_CG023 {"CG023", "YD829"}; +static const QStringList STR_SUBTYPE_BAYANG {"Bayang", "H8S3D", "X16 AH", "IRDRONE"}; static const QStringList STR_SUBTYPE_KN {"WLtoys", "FeiLun"}; static const QStringList STR_SUBTYPE_MT99 {"MT99", "H7", "YZ", "LS", "FY805"}; static const QStringList STR_SUBTYPE_MJXQ {"WLH08", "X600", "X800", "H26D", "E010", "H26WH"}; @@ -56,6 +56,8 @@ static const QStringList STR_SUBTYPE_AFHDS2A {"PWM and IBUS", "PPM and IBUS", "P static const QStringList STR_SUBTYPE_Q2X2 {"Q222", "Q242", "Q282"}; static const QStringList STR_SUBTYPE_WK2x01 {"WK2801", "WK2401", "W6_5_1", "W6_6_1", "W6_HEL", "W6_HEL_I"}; static const QStringList STR_SUBTYPE_Q303 {"Q303", "CX35", "CX10D", "CX10WD"}; +static const QStringList STR_SUBTYPE_CABELL {"CABELL V3","C TELEM","-","-","-","-","F_SAFE","UNBIND"}; +static const QStringList STR_SUBTYPE_H83D {"H8_3D","H20H","H20Mini","H30Mini"}; static const QStringList NO_SUBTYPE {STR_MULTI_DEFAULT}; @@ -73,18 +75,20 @@ const Multiprotocols multiProtocols { {MM_RF_PROTO_SYMAX, 1, false, STR_SUBTYPE_SYMAX, nullptr}, {MM_RF_PROTO_SLT, 1, false, STR_SUBTYPE_SLT, nullptr}, {MM_RF_PROTO_CX10, 7, false, STR_SUBTYPE_CX10, nullptr}, - {MM_RF_PROTO_CG023, 2, false, STR_SUBTYPE_CG023, nullptr}, - {MM_RF_PROTO_BAYANG, 2, false, STR_SUBTYPE_BAYANG, STR_MULTI_TELEMETRY}, + {MM_RF_PROTO_CG023, 1, false, STR_SUBTYPE_CG023, nullptr}, + {MM_RF_PROTO_BAYANG, 3, false, STR_SUBTYPE_BAYANG, STR_MULTI_TELEMETRY}, {MM_RF_PROTO_MT99XX, 4, false, STR_SUBTYPE_MT99, nullptr}, {MM_RF_PROTO_MJXQ, 5, false, STR_SUBTYPE_MJXQ, nullptr}, {MM_RF_PROTO_FY326, 1, false, STR_SUBTYPE_FY326, nullptr}, - {MM_RF_PROTO_SFHSS, 0, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, + {MM_RF_PROTO_SFHSS, 0, true, NO_SUBTYPE, STR_MULTI_RFTUNE}, {MM_RF_PROTO_HONTAI, 2, false, STR_SUBTYPE_HONTAI, nullptr}, {MM_RF_PROTO_OLRS, 0, false, NO_SUBTYPE, STR_MULTI_RFPOWER}, {MM_RF_PROTO_FS_AFHDS2A, 3, true, STR_SUBTYPE_AFHDS2A, STR_MULTI_SERVOFREQ}, {MM_RF_PROTO_Q2X2, 2, false, STR_SUBTYPE_Q2X2, nullptr}, {MM_RF_PROTO_WK_2X01, 5, false, STR_SUBTYPE_WK2x01, nullptr}, {MM_RF_PROTO_Q303, 3, false, STR_SUBTYPE_Q303, nullptr}, + {MM_RF_PROTO_CABELL, 7, false, STR_SUBTYPE_CABELL, STR_MULTI_OPTION}, + {MM_RF_PROTO_H83D, 3, false, STR_SUBTYPE_H83D, nullptr}, {MM_RF_CUSTOM_SELECTED, 7, true, STR_SUBTYPE_CUSTOM, STR_MULTI_OPTION}, // Sentinel and default for protocols not listed above (MM_RF_CUSTOM is 0xff) diff --git a/companion/src/radiodata.h b/companion/src/radiodata.h index 6911adb43..3641b95d1 100644 --- a/companion/src/radiodata.h +++ b/companion/src/radiodata.h @@ -812,7 +812,10 @@ enum MultiModuleRFProtocols { MM_RF_PROTO_Q303, MM_RF_PROTO_GW008, MM_RF_PROTO_DM002, - MM_RF_PROTO_LAST=MM_RF_PROTO_DM002 + MM_RF_PROTO_CABELL, + MM_RF_PROTO_ESKY150, + MM_RF_PROTO_H83D, + MM_RF_PROTO_LAST=MM_RF_PROTO_H83D }; enum TrainerProtocol { diff --git a/radio/src/gui/gui_common.h b/radio/src/gui/gui_common.h index 8c2d4bfc3..7f910b695 100644 --- a/radio/src/gui/gui_common.h +++ b/radio/src/gui/gui_common.h @@ -128,7 +128,7 @@ void lcdDrawMMM(coord_t x, coord_t y, LcdFlags flags=0); #define MULTIMODULE_HAS_SUBTYPE(x) (getMultiProtocolDefinition(x)->maxSubtype > 0) #define MULTIMODULE_HASOPTIONS(x) (getMultiProtocolDefinition(x)->optionsstr != nullptr) #define MULTI_MAX_RX_NUM(x) (g_model.moduleData[x].getMultiProtocol(true) == MM_RF_PROTO_OLRS ? 4 : 15) -#define MULTIMODULE_HASFAILSAFE(x) (IS_MODULE_MULTIMODULE(x) && getMultiProtocolDefinition(g_model.moduleData[x].getMultiProtocol(true))->failsafe) +#define MULTIMODULE_HASFAILSAFE(x) (IS_MODULE_MULTIMODULE(x) && multiModuleStatus.isValid() && multiModuleStatus.supportsFailsafe()) #define MULTIMODULE_OPTIONS_ROW (IS_MODULE_MULTIMODULE(EXTERNAL_MODULE) && MULTIMODULE_HASOPTIONS(g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true))) ? (uint8_t) 0: HIDDEN_ROW // When using packed, the pointer in here end up not being aligned, which clang and gcc complain about diff --git a/radio/src/gui/gui_common_arm.cpp b/radio/src/gui/gui_common_arm.cpp index d64ecd7f0..7a828b878 100644 --- a/radio/src/gui/gui_common_arm.cpp +++ b/radio/src/gui/gui_common_arm.cpp @@ -657,7 +657,7 @@ const pm_char STR_SUBTYPE_SLT[] PROGMEM = "\005""SLT\0 ""Vista"; const pm_char STR_SUBTYPE_CX10[] PROGMEM = "\007""Green\0 ""Blue\0 ""DM007\0 ""-\0 ""JC3015a""JC3015b""MK33041""Q242\0 "; -const pm_char STR_SUBTYPE_CG023[] PROGMEM = "\005""CG023""YD829""H8 3d"; +const pm_char STR_SUBTYPE_CG023[] PROGMEM = "\005""CG023""YD829"; const pm_char STR_SUBTYPE_KN[] PROGMEM = "\006""WLtoys""FeiLun"; @@ -675,10 +675,14 @@ const pm_char STR_SUBTYPE_WK2x01[] PROGMEM = "\006""WK2801""WK2401""W6_5_1"" const pm_char STR_SUBTYPE_V2X2[] PROGMEM = "\006""V2x2\0 ""JXD506"; -const pm_char STR_SUBTYPE_BAYANG[] PROGMEM = "\006""Bayang""H8S3D\0""X16 AH\0"; +const pm_char STR_SUBTYPE_BAYANG[] PROGMEM = "\007""Bayang\0""H8S3D\0 ""X16 AH\0 ""irdrone"; const pm_char STR_SUBTYPE_FY326[] PROGMEM = "\005""FY326""FY319"; +const pm_char STR_SUBTYPE_CABELL[] PROGMEM = "\006""CAB_V3""C_TELM""-\0 ""-\0 ""-\0 ""-\0 ""F_SAFE""UNBIND"; + +const pm_char STR_SUBTYPE_H83D[] PROGMEM = "\006""H8_3D\0""H20H\0 ""H20Mini""H30Mini"; + const mm_protocol_definition multi_protocols[] = { {MM_RF_PROTO_FLYSKY, 4, false, STR_SUBTYPE_FLYSKY, nullptr}, @@ -692,18 +696,20 @@ const mm_protocol_definition multi_protocols[] = { {MM_RF_PROTO_SYMAX, 1, false, STR_SUBTYPE_SYMAX, nullptr}, {MM_RF_PROTO_SLT, 1, false, STR_SUBTYPE_SLT, nullptr}, {MM_RF_PROTO_CX10, 7, false, STR_SUBTYPE_CX10, nullptr}, - {MM_RF_PROTO_CG023, 2, false, STR_SUBTYPE_CG023, nullptr}, - {MM_RF_PROTO_BAYANG, 2, false, STR_SUBTYPE_BAYANG, STR_MULTI_TELEMETRY}, + {MM_RF_PROTO_CG023, 1, false, STR_SUBTYPE_CG023, nullptr}, + {MM_RF_PROTO_BAYANG, 3, false, STR_SUBTYPE_BAYANG, STR_MULTI_TELEMETRY}, {MM_RF_PROTO_MT99XX, 4, false, STR_SUBTYPE_MT99, nullptr}, {MM_RF_PROTO_MJXQ, 5, false, STR_SUBTYPE_MJXQ, nullptr}, {MM_RF_PROTO_FY326, 1, false, STR_SUBTYPE_FY326, nullptr}, - {MM_RF_PROTO_SFHSS, 0, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, + {MM_RF_PROTO_SFHSS, 0, true, NO_SUBTYPE, STR_MULTI_RFTUNE}, {MM_RF_PROTO_HONTAI, 2, false, STR_SUBTYPE_HONTAI, nullptr}, {MM_RF_PROTO_OLRS, 0, false, NO_SUBTYPE, STR_MULTI_RFPOWER}, {MM_RF_PROTO_FS_AFHDS2A, 3, true, STR_SUBTYPE_AFHDS2A, STR_MULTI_SERVOFREQ}, {MM_RF_PROTO_Q2X2, 2, false, STR_SUBTYPE_Q2X2, nullptr}, {MM_RF_PROTO_WK_2X01, 5, false, STR_SUBTYPE_WK2x01, nullptr}, {MM_RF_PROTO_Q303, 3, false, STR_SUBTYPE_Q303, nullptr}, + {MM_RF_PROTO_CABELL, 7, false, STR_SUBTYPE_CABELL, STR_MULTI_OPTION}, + {MM_RF_PROTO_H83D, 3, false, STR_SUBTYPE_H83D, nullptr}, {MM_RF_CUSTOM_SELECTED, 7, true, NO_SUBTYPE, STR_MULTI_OPTION}, // Sentinel and default for protocols not listed above (MM_RF_CUSTOM is 0xff) diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index f83800fa4..bf9516a8f 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -537,7 +537,10 @@ enum MultiModuleRFProtocols { MM_RF_PROTO_Q303, MM_RF_PROTO_GW008, MM_RF_PROTO_DM002, - MM_RF_PROTO_LAST= MM_RF_PROTO_DM002 + MM_RF_PROTO_CABELL, + MM_RF_PROTO_ESKY150, + MM_RF_PROTO_H83D, + MM_RF_PROTO_LAST= MM_RF_PROTO_H83D }; enum MMDSM2Subtypes { diff --git a/radio/src/pulses/multi_arm.cpp b/radio/src/pulses/multi_arm.cpp index cfdab43e8..a25fbe7b9 100644 --- a/radio/src/pulses/multi_arm.cpp +++ b/radio/src/pulses/multi_arm.cpp @@ -34,7 +34,7 @@ #define MULTI_CHANS 16 #define MULTI_CHAN_BITS 11 -void sendFrameProtocolHeader(uint8_t port); +static void sendFrameProtocolHeader(uint8_t port, bool failsafe); void sendChannels(uint8_t port); @@ -54,17 +54,6 @@ static void sendSetupFrame() sendByteSbus(config); } -static void sendFailFailsafeHeader(uint8_t port) -{ - - // Old multi firmware will mark config messsages as invalid frame and throw them away - sendByteSbus('M'); - sendByteSbus('P'); - sendByteSbus(0x81); // Failsafe Data - sendByteSbus(23); // 22 byte channel + 1 byte mode - sendByteSbus(g_model.moduleData->failsafeMode); -} - static void sendFailsafeChannels(uint8_t port) { uint32_t bits = 0; @@ -73,11 +62,18 @@ static void sendFailsafeChannels(uint8_t port) for (int i = 0; i < MULTI_CHANS; i++) { int16_t failsafeValue = g_model.moduleData[port].failsafeChannels[i]; int pulseValue; + if (g_model.moduleData[port].failsafeMode == FAILSAFE_HOLD) + failsafeValue = FAILSAFE_CHANNEL_HOLD; + + if (g_model.moduleData[port].failsafeMode == FAILSAFE_NOPULSES) + failsafeValue = FAILSAFE_CHANNEL_NOPULSE; + + if (failsafeValue == FAILSAFE_CHANNEL_HOLD) { pulseValue = 0; } else if (failsafeValue == FAILSAFE_CHANNEL_NOPULSE) { - pulseValue = 2048; + pulseValue = 2047; } else { failsafeValue += 2 * PPM_CH_CENTER(g_model.moduleData[port].channelsStart + i) - 2 * PPM_CENTER; @@ -112,12 +108,12 @@ void setupPulsesMultimodule(uint8_t port) counter++; if (counter % 1000== 500) { sendSetupFrame(); - } else if (counter % 1000 == 0) { - sendFailFailsafeHeader(port); + } else if (counter % 1000 == 0 && g_model.moduleData[port].failsafeMode != FAILSAFE_NOT_SET && g_model.moduleData[port].failsafeMode != FAILSAFE_RECEIVER) { + sendFrameProtocolHeader(port, true); sendFailsafeChannels(port); } else { // Normal Frame - sendFrameProtocolHeader(port); + sendFrameProtocolHeader(port, false); sendChannels(port); } @@ -151,7 +147,7 @@ void sendChannels(uint8_t port) } } -void sendFrameProtocolHeader(uint8_t port) +void sendFrameProtocolHeader(uint8_t port, bool failsafe) {// byte 1+2, protocol information // Our enumeration starts at 0 @@ -218,11 +214,15 @@ void sendFrameProtocolHeader(uint8_t port) type = g_model.moduleData[port].getMultiProtocol(false); - // header, byte 0, 0x55 for proto 0-31 0x54 for 32-63 + uint8_t headerByte = 0x54; + if (failsafe) + headerByte = 0x56; + + // header, byte 0, 0x55 for proto 0-31 0x54 for 32-63 if (type <= 31) - sendByteSbus(0x55); + sendByteSbus(headerByte+1); else - sendByteSbus(0x54); + sendByteSbus(headerByte); // protocol byte diff --git a/radio/src/telemetry/multi.cpp b/radio/src/telemetry/multi.cpp index d135e655a..3e8b533d5 100644 --- a/radio/src/telemetry/multi.cpp +++ b/radio/src/telemetry/multi.cpp @@ -82,6 +82,7 @@ static void processMultiSyncPacket(const uint8_t *data) multiSyncStatus.target = data[5]; #if !defined(PPM_PIN_SERIAL) auto oldlag = multiSyncStatus.inputLag; + (void) oldlag; #endif multiSyncStatus.calcAdjustedRefreshRate(data[0] << 8 | data[1], data[2] << 8 | data[3]); @@ -272,7 +273,7 @@ void MultiModuleSyncStatus::getRefreshString(char *statusText) void MultiModuleStatus::getStatusString(char *statusText) { - if (get_tmr10ms() - lastUpdate > 200) { + if (!isValid()) { #if defined(PCBTARANIS) || defined(PCBHORUS) if (IS_INTERNAL_MODULE_ENABLED()) strcpy(statusText, STR_DISABLE_INTERNAL); @@ -293,6 +294,11 @@ void MultiModuleStatus::getStatusString(char *statusText) strcpy(statusText, STR_MODULE_NO_INPUT); return; } + else if(isWaitingforBind()) { + strcpy(statusText, STR_MODULE_WAITFORBIND); + return; + } + strcpy(statusText, "V"); appendInt(statusText, major); diff --git a/radio/src/telemetry/multi.h b/radio/src/telemetry/multi.h index 64425f805..7212e8400 100644 --- a/radio/src/telemetry/multi.h +++ b/radio/src/telemetry/multi.h @@ -122,6 +122,9 @@ struct MultiModuleStatus { void getStatusString(char* statusText); + inline bool isValid() { return (bool)(get_tmr10ms() - lastUpdate < 200); } + inline bool supportsFailsafe() { return (bool) (flags & 0x20); } + inline bool isWaitingforBind() { return (bool) (flags & 0x10); } inline bool isBinding() { return (bool) (flags & 0x08); } inline bool protocolValid() { return (bool) (flags & 0x04); } inline bool serialMode() { return (bool) (flags & 0x02); } diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index f49a4eec7..f5df1c3f2 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -482,6 +482,7 @@ const pm_char STR_MULTI_DSM_AUTODTECT[] PROGMEM = TR_MULTI_DSM_AUTODTECT; const pm_char STR_MULTI_LOWPOWER[] PROGMEM = TR_MULTI_LOWPOWER; const pm_char STR_MODULE_NO_SERIAL_MODE[] PROGMEM = TR_MODULE_NO_SERIAL_MODE; const pm_char STR_MODULE_NO_INPUT[] PROGMEM = TR_MODULE_NO_INPUT; +const pm_char STR_MODULE_WAITFORBIND[] PROGMEM = TR_MODULE_WAITFORBIND; const pm_char STR_MODULE_NO_TELEMETRY[] PROGMEM = TR_MODULE_NO_TELEMETRY; const pm_char STR_MODULE_BINDING[] PROGMEM = TR_MODULE_BINDING; const pm_char STR_PROTOCOL_INVALID[] PROGMEM = TR_PROTOCOL_INVALID; diff --git a/radio/src/translations.h b/radio/src/translations.h index 6442d2798..d82fe3cfd 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -612,6 +612,7 @@ extern const pm_char STR_MULTI_DSM_AUTODTECT[]; extern const pm_char STR_MULTI_LOWPOWER[]; extern const pm_char STR_MODULE_NO_SERIAL_MODE[]; extern const pm_char STR_MODULE_NO_INPUT[]; +extern const pm_char STR_MODULE_WAITFORBIND[]; extern const pm_char STR_MODULE_NO_TELEMETRY[]; extern const pm_char STR_MODULE_BINDING[]; extern const pm_char STR_PROTOCOL_INVALID[]; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 54a7a5dbd..a497afea0 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -108,7 +108,7 @@ #define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" #define LEN_MULTI_PROTOCOLS "\006" -#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0" +#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0""Cabell""Esky15""H8 3D\0" #define TR_MULTI_CUSTOM "Custom" @@ -865,6 +865,7 @@ #define TR_MODULE_NO_SERIAL_MODE TR("!serial mode", "Not in serial mode") #define TR_MODULE_NO_INPUT TR("No input", "No serial input") #define TR_MODULE_NO_TELEMETRY TR3( "No telemetry", "No MULTI_TELEMETRY", "No MULTI_TELEMETRY detected") +#define TR_MODULE_WAITFORBIND "Bind to load protocol" #define TR_MODULE_BINDING TR("Bind...","Binding") #define TR_BINDING_MODE1 "Ch1-8 Telem ON" #define TR_BINDING_MODE2 "Ch1-8 Telem OFF" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 5f6fe7e08..63e84d688 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -115,7 +115,7 @@ #define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" //LP45 =Low Power 4 und 5 Kanal #define LEN_MULTI_PROTOCOLS "\006" -#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0" +#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0""Cabell""Esky15""H8 3D\0" #define TR_MULTI_CUSTOM "Custom" @@ -886,6 +886,7 @@ #define TR_MODULE_NO_SERIAL_MODE TR("!serial mode", "Not in serial mode") #define TR_MODULE_NO_INPUT TR("No input", "No serial input") #define TR_MODULE_NO_TELEMETRY TR3( "No telmetry", "No MULTI_TELEMETRY", "No telemetry (enable MULTI_TELEMETRY)") +#define TR_MODULE_WAITFORBIND "Bind to load protocol" #define TR_MODULE_BINDING "Binding" #define TR_BINDING_MODE1 "Ch1-8 Telem ON" #define TR_BINDING_MODE2 "Ch1-8 Telem OFF" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 4c8fe925a..a8c10d648 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -114,7 +114,7 @@ #define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" #define LEN_MULTI_PROTOCOLS "\006" -#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0" +#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0""Cabell""Esky15""H8 3D\0" #define TR_MULTI_CUSTOM "Custom" @@ -869,6 +869,7 @@ #define TR_MODULE_NO_SERIAL_MODE TR("!serial mode", "Not in serial mode") #define TR_MODULE_NO_INPUT TR("No input", "No serial input") #define TR_MODULE_NO_TELEMETRY TR3("No telemetry", "No MULTI_TELEMETRY", "No MULTI_TELEMETRY detected") +#define TR_MODULE_WAITFORBIND "Bind to load protocol" #define TR_MODULE_BINDING TR("Bind...","Binding") #define TR_BINDING_MODE1 "Ch1-8 Telem ON" #define TR_BINDING_MODE2 "Ch1-8 Telem OFF" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index de449509e..5b13a4585 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -110,7 +110,7 @@ #define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" #define LEN_MULTI_PROTOCOLS "\006" -#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0" +#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0""Cabell""Esky15""H8 3D\0" #define TR_MULTI_CUSTOM "Custom" @@ -845,6 +845,7 @@ #define TR_MODULE_NO_SERIAL_MODE TR("!serial mode", "Not in serial mode") #define TR_MODULE_NO_INPUT TR("No input", "No serial input") #define TR_MODULE_NO_TELEMETRY TR3( "No telmetry", "No MULTI_TELEMETRY", "No telemetry (enable MULTI_TELEMETRY)") +#define TR_MODULE_WAITFORBIND "Bind to load protocol" #define TR_MODULE_BINDING "Binding" #define TR_BINDING_MODE1 "Ch1-8 Telem ON" #define TR_BINDING_MODE2 "Ch1-8 Telem OFF" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 5a51100c5..41dc85ad4 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -110,7 +110,7 @@ #define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" #define LEN_MULTI_PROTOCOLS "\006" -#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0" +#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0""Cabell""Esky15""H8 3D\0" #define TR_MULTI_CUSTOM "Custom" @@ -841,6 +841,7 @@ #define TR_MODULE_NO_SERIAL_MODE TR("!serial mode", "Not in serial mode") #define TR_MODULE_NO_INPUT TR("No input", "No serial input") #define TR_MODULE_NO_TELEMETRY TR3( "No telmetry", "No MULTI_TELEMETRY", "No telemetry (enable MULTI_TELEMETRY)") +#define TR_MODULE_WAITFORBIND "Bind to load protocol" #define TR_MODULE_BINDING "Binding" #define TR_BINDING_MODE1 "Ch1-8 Telem ON" #define TR_BINDING_MODE2 "Ch1-8 Telem OFF" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 68087f34e..1da19e22f 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -110,7 +110,7 @@ #define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" #define LEN_MULTI_PROTOCOLS "\006" -#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0" +#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0""Cabell""Esky15""H8 3D\0" #define TR_MULTI_CUSTOM "Perso" @@ -868,6 +868,7 @@ #define TR_MODULE_NO_SERIAL_MODE TR("Mode série?", "Pas en mode série") #define TR_MODULE_NO_INPUT TR("Pas de sign.", "Aucun signal série") #define TR_MODULE_NO_TELEMETRY TR3("Pas de télm.", "Télémétrie absente", "Télémétrie absente(act. MULTI_TELEMETRY)") +#define TR_MODULE_WAITFORBIND "Bind to load protocol" #define TR_MODULE_BINDING "Bind..." #define TR_BINDING_MODE1 "Ch1-8 Telem ON" #define TR_BINDING_MODE2 "Ch1-8 Telem OFF" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 8c82fe506..866eeaa21 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -110,7 +110,7 @@ #define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" #define LEN_MULTI_PROTOCOLS "\006" -#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0" +#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0""Cabell""Esky15""H8 3D\0" #define TR_MULTI_CUSTOM "Custom" @@ -870,6 +870,7 @@ #define TR_MODULE_NO_SERIAL_MODE TR("!serial mode", "Not in serial mode") #define TR_MODULE_NO_INPUT TR("No input", "No serial input") #define TR_MODULE_NO_TELEMETRY TR3( "No telmetry", "No MULTI_TELEMETRY", "No telemetry (enable MULTI_TELEMETRY)") +#define TR_MODULE_WAITFORBIND "Bind to load protocol" #define TR_MODULE_BINDING "Binding" #define TR_BINDING_MODE1 "Ch1-8 Telem ON" #define TR_BINDING_MODE2 "Ch1-8 Telem OFF" diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 7497bb8d2..a72d35672 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -115,7 +115,7 @@ #define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" #define LEN_MULTI_PROTOCOLS "\006" -#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0" +#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0""Cabell""Esky15""H8 3D\0" #define TR_MULTI_CUSTOM "Custom" @@ -868,6 +868,7 @@ #define TR_MODULE_NO_SERIAL_MODE TR("!serial mode", "Not in serial mode") #define TR_MODULE_NO_INPUT TR("No input", "No serial input") #define TR_MODULE_NO_TELEMETRY TR3( "No telmetry", "No MULTI_TELEMETRY", "No telemetry (enable MULTI_TELEMETRY)") +#define TR_MODULE_WAITFORBIND "Bind to load protocol" #define TR_MODULE_BINDING "Binding" #define TR_BINDING_MODE1 "Ch1-8 Telem ON" #define TR_BINDING_MODE2 "Ch1-8 Telem OFF" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index b632b86d5..c4bb57699 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -111,7 +111,7 @@ #define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" #define LEN_MULTI_PROTOCOLS "\006" -#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0" +#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0""Cabell""Esky15""H8 3D\0" #define TR_MULTI_CUSTOM "Custom" @@ -872,6 +872,7 @@ #define TR_MODULE_NO_SERIAL_MODE TR("!serial mode", "Not in serial mode") #define TR_MODULE_NO_INPUT TR("No input", "No serial input") #define TR_MODULE_NO_TELEMETRY TR3( "No telmetry", "No MULTI_TELEMETRY", "No telemetry (enable MULTI_TELEMETRY)") +#define TR_MODULE_WAITFORBIND "Bind to load protocol" #define TR_MODULE_BINDING "Binding" #define TR_BINDING_MODE1 "Ch1-8 Telem ON" #define TR_BINDING_MODE2 "Ch1-8 Telem OFF" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index ca22cd1a1..133eeeab4 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -110,7 +110,7 @@ #define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" #define LEN_MULTI_PROTOCOLS "\006" -#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0" +#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0""Cabell""Esky15""H8 3D\0" #define TR_MULTI_CUSTOM "Custom" @@ -847,6 +847,7 @@ #define TR_MODULE_NO_SERIAL_MODE TR("!serial mode", "Not in serial mode") #define TR_MODULE_NO_INPUT TR("No input", "No serial input") #define TR_MODULE_NO_TELEMETRY TR3( "No telmetry", "No MULTI_TELEMETRY", "No telemetry (enable MULTI_TELEMETRY)") +#define TR_MODULE_WAITFORBIND "Bind to load protocol" #define TR_MODULE_BINDING "Binding" #define TR_BINDING_MODE1 "Ch1-8 Telem ON" #define TR_BINDING_MODE2 "Ch1-8 Telem OFF" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index e5994c75f..f5060a1ec 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -110,7 +110,7 @@ #define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" #define LEN_MULTI_PROTOCOLS "\006" -#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0" +#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0""Cabell""Esky15""H8 3D\0" #define TR_MULTI_CUSTOM "Custom" @@ -884,6 +884,7 @@ #define TR_MODULE_NO_SERIAL_MODE TR("!serial mode", "Not in serial mode") #define TR_MODULE_NO_INPUT TR("No input", "No serial input") #define TR_MODULE_NO_TELEMETRY TR3( "No telmetry", "No MULTI_TELEMETRY", "No telemetry (enable MULTI_TELEMETRY)") +#define TR_MODULE_WAITFORBIND "Bind to load protocol" #define TR_MODULE_BINDING "Binding" #define TR_BINDING_MODE1 "Ch1-8 Telem ON" #define TR_BINDING_MODE2 "Ch1-8 Telem OFF"