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
This commit is contained in:
committed by
Bertrand Songis
parent
8b34c96a2d
commit
afd3103506
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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); }
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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[];
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user