mirror of
https://github.com/opentx/opentx.git
synced 2025-07-25 09:15:38 +03:00
Multimodule merge
This commit is contained in:
commit
cbec010f44
28 changed files with 5673 additions and 4759 deletions
|
@ -483,6 +483,7 @@ if(ARCH STREQUAL ARM)
|
|||
option(TRACE_FATFS "Traces FatFS enabled" OFF)
|
||||
option(TRACE_AUDIO "Traces audio enabled" OFF)
|
||||
option(DEBUG_TRACE_BUFFER "Debug Trace Screen" OFF)
|
||||
option(MULTIMODULE "DIY Multiprotocol TX Module (https://github.com/pascallanger/DIY-Multiprotocol-TX-Module)" OFF)
|
||||
option(SUPPORT_D16_EU_ONLY "XJT module only supports D16-EU and LR12-EU" OFF) # TODO rename to XJT_EU_ONLY
|
||||
if(TIMERS EQUAL 3)
|
||||
add_definitions(-DTIMERS=3)
|
||||
|
@ -528,6 +529,10 @@ if(ARCH STREQUAL ARM)
|
|||
set(SRC ${SRC} haptic.cpp)
|
||||
set(TARGET_SRC ${TARGET_SRC} haptic_driver.cpp)
|
||||
endif()
|
||||
if(MULTIMODULE)
|
||||
add_definitions(-DMULTIMODULE)
|
||||
set(SRC ${SRC} pulses/multi_arm.cpp)
|
||||
endif()
|
||||
add_definitions(-DCPUARM)
|
||||
add_definitions(-DFRSKY -DFRSKY_SPORT -DFRSKY_HUB -DGPS -DPXX -DDSM2)
|
||||
add_definitions(-DBOLD_FONT -DBATTGRAPH -DTHRTRACE)
|
||||
|
|
|
@ -686,13 +686,24 @@ PACK(struct ModuleData {
|
|||
int8_t rfProtocol:4;
|
||||
uint8_t channelsStart;
|
||||
int8_t channelsCount; // 0=8 channels
|
||||
uint8_t failsafeMode:7;
|
||||
uint8_t failsafeMode:4; //only 3 bits used
|
||||
uint8_t subType:3;
|
||||
uint8_t invertedSerial:1; // telemetry serial inverted from standard
|
||||
int16_t failsafeChannels[NUM_CHNOUT];
|
||||
int8_t ppmDelay:6;
|
||||
uint8_t ppmPulsePol:1; // For PXX: false = internal antenna, true = exetrnal antenna
|
||||
uint8_t ppmOutputType:1; // false = open drain, true = push pull
|
||||
int8_t ppmFrameLength;
|
||||
union {
|
||||
struct {
|
||||
int8_t delay:6;
|
||||
uint8_t pulsePol:1;
|
||||
uint8_t outputType:1; // false = open drain, true = push pull
|
||||
int8_t frameLength;
|
||||
} ppm;
|
||||
NOBACKUP(struct {
|
||||
uint8_t rfProtocol:6; // can be changed to rfProtocol if rfProtocol gets more bits, currently 6 bits used
|
||||
uint8_t autoBindMode:1;
|
||||
uint8_t lowPowerMode:1;
|
||||
int8_t optionValue;
|
||||
} multi);
|
||||
};
|
||||
});
|
||||
|
||||
/*
|
||||
|
|
|
@ -562,21 +562,21 @@ void menuModelSetup(uint8_t event)
|
|||
if (IS_MODULE_PPM(moduleIdx)) {
|
||||
lcd_putsLeft(y, STR_PPMFRAME);
|
||||
lcdDrawText(MODEL_SETUP_2ND_COLUMN+3*FW, y, STR_MS);
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, (int16_t)moduleData.ppmFrameLength*5 + 225, (menuHorizontalPosition<=0 ? attr : 0) | PREC1|LEFT);
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, (int16_t)moduleData.ppm.frameLength*5 + 225, (menuHorizontalPosition<=0 ? attr : 0) | PREC1|LEFT);
|
||||
lcdDrawChar(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, 'u');
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, (moduleData.ppmDelay*50)+300, (CURSOR_ON_LINE() || menuHorizontalPosition==1) ? attr : 0);
|
||||
lcdDrawChar(MODEL_SETUP_2ND_COLUMN+10*FW, y, moduleData.ppmPulsePol ? '+' : '-', (CURSOR_ON_LINE() || menuHorizontalPosition==2) ? attr : 0);
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, (moduleData.ppm.delay*50)+300, (CURSOR_ON_LINE() || menuHorizontalPosition==1) ? attr : 0);
|
||||
lcdDrawChar(MODEL_SETUP_2ND_COLUMN+10*FW, y, moduleData.ppm.pulsePol ? '+' : '-', (CURSOR_ON_LINE() || menuHorizontalPosition==2) ? attr : 0);
|
||||
|
||||
if (attr && (editMode>0 || p1valdiff)) {
|
||||
switch (menuHorizontalPosition) {
|
||||
case 0:
|
||||
CHECK_INCDEC_MODELVAR(event, moduleData.ppmFrameLength, -20, 35);
|
||||
CHECK_INCDEC_MODELVAR(event, moduleData.ppm.frameLength, -20, 35);
|
||||
break;
|
||||
case 1:
|
||||
CHECK_INCDEC_MODELVAR(event, moduleData.ppmDelay, -4, 10);
|
||||
CHECK_INCDEC_MODELVAR(event, moduleData.ppm.delay, -4, 10);
|
||||
break;
|
||||
case 2:
|
||||
CHECK_INCDEC_MODELVAR_ZERO(event, moduleData.ppmPulsePol, 1);
|
||||
CHECK_INCDEC_MODELVAR_ZERO(event, moduleData.ppm.pulsePol, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -633,20 +633,20 @@ bool menuModelSetup(evt_t event)
|
|||
ModuleData & moduleData = g_model.moduleData[moduleIdx];
|
||||
if (IS_MODULE_PPM(moduleIdx)) {
|
||||
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_PPMFRAME);
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, (int16_t)moduleData.ppmFrameLength*5 + 225, (menuHorizontalPosition<=0 ? attr : 0) | PREC1|LEFT, 0, NULL, STR_MS);
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN+90, y, (moduleData.ppmDelay*50)+300, (CURSOR_ON_LINE() || menuHorizontalPosition==1) ? attr|RIGHT : RIGHT, 0, NULL, "us");
|
||||
lcdDrawText(MODEL_SETUP_2ND_COLUMN+120, y, moduleData.ppmPulsePol ? "+" : "-", (CURSOR_ON_LINE() || menuHorizontalPosition==2) ? attr : 0);
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, (int16_t)moduleData.ppm.frameLength*5 + 225, (menuHorizontalPosition<=0 ? attr : 0) | PREC1|LEFT, 0, NULL, STR_MS);
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN+90, y, (moduleData.ppm.delay*50)+300, (CURSOR_ON_LINE() || menuHorizontalPosition==1) ? attr|RIGHT : RIGHT, 0, NULL, "us");
|
||||
lcdDrawText(MODEL_SETUP_2ND_COLUMN+120, y, moduleData.ppm.pulsePol ? "+" : "-", (CURSOR_ON_LINE() || menuHorizontalPosition==2) ? attr : 0);
|
||||
|
||||
if (attr && s_editMode>0) {
|
||||
switch (menuHorizontalPosition) {
|
||||
case 0:
|
||||
CHECK_INCDEC_MODELVAR(event, moduleData.ppmFrameLength, -20, 35);
|
||||
CHECK_INCDEC_MODELVAR(event, moduleData.ppm.frameLength, -20, 35);
|
||||
break;
|
||||
case 1:
|
||||
CHECK_INCDEC_MODELVAR(event, moduleData.ppmDelay, -4, 10);
|
||||
CHECK_INCDEC_MODELVAR(event, moduleData.ppm.delay, -4, 10);
|
||||
break;
|
||||
case 2:
|
||||
CHECK_INCDEC_MODELVAR_ZERO(event, moduleData.ppmPulsePol, 1);
|
||||
CHECK_INCDEC_MODELVAR_ZERO(event, moduleData.ppm.pulsePol, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -80,6 +80,10 @@ enum menuModelSetupItems {
|
|||
ITEM_MODEL_EXTERNAL_MODULE_CHANNELS,
|
||||
ITEM_MODEL_EXTERNAL_MODULE_BIND,
|
||||
ITEM_MODEL_EXTERNAL_MODULE_FAILSAFE,
|
||||
#ifdef MULTIMODULE
|
||||
ITEM_MODEL_EXTERNAL_MODULE_AUTOBIND,
|
||||
ITEM_MODEL_EXTERNAL_MODULE_LOWPOWER,
|
||||
#endif
|
||||
ITEM_MODEL_TRAINER_LABEL,
|
||||
ITEM_MODEL_TRAINER_MODE,
|
||||
ITEM_MODEL_TRAINER_CHANNELS,
|
||||
|
@ -188,12 +192,28 @@ int getSwitchWarningsCount()
|
|||
#define IS_D8_RX(x) (g_model.moduleData[x].rfProtocol == RF_PROTO_D8)
|
||||
#define IF_EXTERNAL_MODULE_XJT(x) (IS_MODULE_XJT(EXTERNAL_MODULE) ? (uint8_t)x : HIDDEN_ROW)
|
||||
#define INTERNAL_MODULE_CHANNELS_ROWS IF_INTERNAL_MODULE_ON(1)
|
||||
#define EXTERNAL_MODULE_CHANNELS_ROWS IF_EXTERNAL_MODULE_ON((IS_MODULE_DSM2(EXTERNAL_MODULE) || IS_MODULE_CROSSFIRE(EXTERNAL_MODULE)) ? (uint8_t)0 : (uint8_t)1)
|
||||
#define EXTERNAL_MODULE_CHANNELS_ROWS IF_EXTERNAL_MODULE_ON((IS_MODULE_DSM2(EXTERNAL_MODULE) || IS_MODULE_CROSSFIRE(EXTERNAL_MODULE) || IS_MODULE_MULTIMODULE(EXTERNAL_MODULE)) ? (uint8_t)0 : (uint8_t)1)
|
||||
#define TRAINER_CHANNELS_ROWS() IF_TRAINER_ON(1)
|
||||
#define PORT_CHANNELS_ROWS(x) (x==INTERNAL_MODULE ? INTERNAL_MODULE_CHANNELS_ROWS : (x==EXTERNAL_MODULE ? EXTERNAL_MODULE_CHANNELS_ROWS : TRAINER_CHANNELS_ROWS()))
|
||||
#define FAILSAFE_ROWS(x) (HAS_RF_PROTOCOL_FAILSAFE(g_model.moduleData[x].rfProtocol) ? (g_model.moduleData[x].failsafeMode==FAILSAFE_CUSTOM ? (uint8_t)1 : (uint8_t)0) : HIDDEN_ROW)
|
||||
#if defined MULTIMODULE
|
||||
#define MULTIMODULE_HASOPTIONS(x) (x == MM_RF_PROTO_HUBSAN || x == MM_RF_PROTO_FRSKY || x == MM_RF_PROTO_DSM2 || x >= MM_RF_PROTO_CUSTOM)
|
||||
#define MULTIMODULE_FAILSAFEROWS(x) (IS_MODULE_MULTIMODULE(x) && (MULTIMODULE_HASOPTIONS(g_model.moduleData[x].multi.rfProtocol))) ? (uint8_t) 1: HIDDEN_ROW
|
||||
#else
|
||||
#define MULTIMODULE_FAILSAFEROWS(x) HIDDEN_ROW
|
||||
#endif
|
||||
#define FAILSAFE_ROWS(x) (IS_MODULE_XJT(x) && HAS_RF_PROTOCOL_FAILSAFE(g_model.moduleData[x].rfProtocol) ? (g_model.moduleData[x].failsafeMode==FAILSAFE_CUSTOM ? (uint8_t)1 : (uint8_t)0) : MULTIMODULE_FAILSAFEROWS(x))
|
||||
#define TIMER_ROWS 2|NAVIGATION_LINE_BY_LINE, 0, CASE_PERSISTENT_TIMERS(0) 0, 0
|
||||
#define EXTERNAL_MODULE_MODE_ROWS (IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0
|
||||
#if defined(MULTIMODULE)
|
||||
|
||||
#define MULTIMODULE_HAS_SUBTYPE(x) (x == MM_RF_PROTO_FLYSKY || x == MM_RF_PROTO_FRSKY || x == MM_RF_PROTO_HISKY || x == MM_RF_PROTO_DSM2 || x == MM_RF_PROTO_YD717 || x == MM_RF_PROTO_KN || x == MM_RF_PROTO_SYMAX || x == MM_RF_PROTO_CX10 || x == MM_RF_PROTO_CG023 || x == MM_RF_PROTO_MT99XX || x == MM_RF_PROTO_MJXQ)
|
||||
#define MULTIMODULE_MODE_ROWS(x) (g_model.moduleData[x].multi.rfProtocol >= MM_RF_PROTO_CUSTOM ) ? (uint8_t) 3 :MULTIMODULE_HAS_SUBTYPE(g_model.moduleData[x].multi.rfProtocol) ? (uint8_t)2 : (uint8_t)1
|
||||
#define MULTIMODULE_MODULE_ROWS IS_MODULE_MULTIMODULE(EXTERNAL_MODULE) ? (uint8_t) 1 : HIDDEN_ROW, IS_MODULE_MULTIMODULE(EXTERNAL_MODULE) ? (uint8_t) 1 : HIDDEN_ROW,
|
||||
#else
|
||||
#define MULTIMODULE_MODE_ROWS(x) (uint8_t)0
|
||||
#define MULTIMODULE_MODULE_ROWS
|
||||
#endif
|
||||
#define EXTERNAL_MODULE_MODE_ROWS (IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : IS_MODULE_MULTIMODULE(EXTERNAL_MODULE) ? MULTIMODULE_MODE_ROWS(EXTERNAL_MODULE) : (uint8_t)0
|
||||
|
||||
#if TIMERS == 1
|
||||
#define TIMERS_ROWS TIMER_ROWS
|
||||
#elif TIMERS == 2
|
||||
|
@ -211,6 +231,7 @@ int getSwitchWarningsCount()
|
|||
#define TOPLCD_ROWS
|
||||
#endif
|
||||
|
||||
|
||||
void menuModelSetup(uint8_t event)
|
||||
{
|
||||
horzpos_t l_posHorz = menuHorizontalPosition;
|
||||
|
@ -225,9 +246,9 @@ void menuModelSetup(uint8_t event)
|
|||
IF_INTERNAL_MODULE_ON(IS_MODULE_XJT(INTERNAL_MODULE) ? (HAS_RF_PROTOCOL_MODELINDEX(g_model.moduleData[INTERNAL_MODULE].rfProtocol) ? (uint8_t)2 : (uint8_t)1) : (IS_MODULE_PPM(INTERNAL_MODULE) ? (uint8_t)1 : HIDDEN_ROW)),
|
||||
IF_INTERNAL_MODULE_ON((IS_MODULE_XJT(INTERNAL_MODULE)) ? FAILSAFE_ROWS(INTERNAL_MODULE) : HIDDEN_ROW),
|
||||
LABEL(ExternalModule),
|
||||
(IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0,
|
||||
(IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE) || IS_MODULE_MULTIMODULE(EXTERNALE_MODULE)) ? (uint8_t)1 : (uint8_t)0,
|
||||
EXTERNAL_MODULE_CHANNELS_ROWS,
|
||||
(IS_MODULE_XJT(EXTERNAL_MODULE) && !HAS_RF_PROTOCOL_MODELINDEX(g_model.moduleData[EXTERNAL_MODULE].rfProtocol)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW,
|
||||
(IS_MODULE_XJT(EXTERNAL_MODULE) && !HAS_RF_PROTOCOL_MODELINDEX(g_model.moduleData[EXTERNAL_MODULE].rfProtocol)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE) || IS_MODULE_MULTIMODULE(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW,
|
||||
IF_EXTERNAL_MODULE_XJT(FAILSAFE_ROWS(EXTERNAL_MODULE)),
|
||||
LABEL(Trainer), 0, TRAINER_CHANNELS_ROWS(), IF_TRAINER_ON(2)});
|
||||
#else
|
||||
|
@ -241,8 +262,8 @@ void menuModelSetup(uint8_t event)
|
|||
LABEL(ExternalModule),
|
||||
EXTERNAL_MODULE_MODE_ROWS,
|
||||
EXTERNAL_MODULE_CHANNELS_ROWS,
|
||||
(IS_MODULE_XJT(EXTERNAL_MODULE) && !HAS_RF_PROTOCOL_MODELINDEX(g_model.moduleData[EXTERNAL_MODULE].rfProtocol)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW,
|
||||
IF_EXTERNAL_MODULE_XJT(FAILSAFE_ROWS(EXTERNAL_MODULE)),
|
||||
(IS_MODULE_XJT(EXTERNAL_MODULE) && !HAS_RF_PROTOCOL_FAILSAFE(g_model.moduleData[EXTERNAL_MODULE].rfProtocol)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE) || IS_MODULE_MULTIMODULE(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW,
|
||||
FAILSAFE_ROWS(EXTERNAL_MODULE), MULTIMODULE_MODULE_ROWS
|
||||
LABEL(Trainer), 0, TRAINER_CHANNELS_ROWS(), IF_TRAINER_ON(2)});
|
||||
#endif
|
||||
MENU_CHECK(STR_MENUSETUP, menuTabModel, e_ModelSetup, ITEM_MODEL_SETUP_MAX);
|
||||
|
@ -665,6 +686,52 @@ void menuModelSetup(uint8_t event)
|
|||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+5*FW, y, STR_XJT_PROTOCOLS, 1+g_model.moduleData[EXTERNAL_MODULE].rfProtocol, menuHorizontalPosition==1 ? attr : 0);
|
||||
else if (IS_MODULE_DSM2(EXTERNAL_MODULE))
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+5*FW, y, STR_DSM_PROTOCOLS, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, menuHorizontalPosition==1 ? attr : 0);
|
||||
#if defined(MULTIMODULE)
|
||||
else if (IS_MODULE_MULTIMODULE(EXTERNAL_MODULE)) {
|
||||
int8_t multi_rfProto = min(g_model.moduleData[EXTERNAL_MODULE].multi.rfProtocol, (uint8_t) MM_RF_PROTO_CUSTOM);
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+5*FW, y, STR_MULTI_PROTOCOLS, multi_rfProto, menuHorizontalPosition==1 ? attr : 0);
|
||||
|
||||
switch(multi_rfProto) {
|
||||
case MM_RF_PROTO_FLYSKY:
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+11*FW, y, STR_SUBTYPE_FLYSKY, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0);
|
||||
break;
|
||||
case MM_RF_PROTO_FRSKY:
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+11*FW, y, STR_XJT_PROTOCOLS, g_model.moduleData[EXTERNAL_MODULE].subType+1, menuHorizontalPosition==2 ? attr : 0);
|
||||
break;
|
||||
case MM_RF_PROTO_HISKY:
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+10*FW, y, STR_SUBTYPE_HISKY, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0);
|
||||
break;
|
||||
case MM_RF_PROTO_DSM2:
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+11*FW, y, STR_DSM_PROTOCOLS, g_model.moduleData[EXTERNAL_MODULE].subType+1, menuHorizontalPosition==2 ? attr : 0);
|
||||
break;
|
||||
case MM_RF_PROTO_YD717:
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+10*FW, y, STR_SUBTYPE_YD717, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0);
|
||||
break;
|
||||
case MM_RF_PROTO_KN:
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+11*FW, y, STR_SUBTYPE_KN, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0);
|
||||
break;
|
||||
case MM_RF_PROTO_SYMAX:
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+11*FW, y, STR_SUBTYPE_SYMAX, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0);
|
||||
break;
|
||||
case MM_RF_PROTO_CX10:
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+10*FW, y, STR_SUBTYPE_CX10, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0);
|
||||
break;
|
||||
case MM_RF_PROTO_CG023:
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+10*FW, y, STR_SUBTYPE_CG023, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0);
|
||||
break;
|
||||
case MM_RF_PROTO_MT99XX:
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+11*FW, y, STR_SUBTYPE_MT99, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0);
|
||||
break;
|
||||
case MM_RF_PROTO_MJXQ:
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+11*FW, y, STR_SUBTYPE_MJXQ, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0);
|
||||
break;
|
||||
case MM_RF_PROTO_CUSTOM:
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN+14*FW, y, g_model.moduleData[EXTERNAL_MODULE].multi.rfProtocol & 0x1f, menuHorizontalPosition==2 ? attr : 0, 2);
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN+16*FW, y, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==3 ? attr : 0, 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (attr && s_editMode>0) {
|
||||
switch (menuHorizontalPosition) {
|
||||
case 0:
|
||||
|
@ -678,12 +745,52 @@ void menuModelSetup(uint8_t event)
|
|||
case 1:
|
||||
if (IS_MODULE_DSM2(EXTERNAL_MODULE))
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, DSM2_PROTO_LP45, DSM2_PROTO_DSMX);
|
||||
else if (IS_MODULE_MULTIMODULE(EXTERNAL_MODULE)) {
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].multi.rfProtocol, MM_RF_PROTO_FIRST, MM_RF_PROTO_LAST);
|
||||
if (checkIncDec_Ret)
|
||||
g_model.moduleData[EXTERNAL_MODULE].subType=0;
|
||||
}
|
||||
else
|
||||
g_model.moduleData[EXTERNAL_MODULE].rfProtocol = checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, RF_PROTO_X16, RF_PROTO_LAST, EE_MODEL, isRfProtocolAvailable);
|
||||
if (checkIncDec_Ret) {
|
||||
g_model.moduleData[EXTERNAL_MODULE].channelsStart = 0;
|
||||
g_model.moduleData[EXTERNAL_MODULE].channelsCount = 0;
|
||||
}
|
||||
break;
|
||||
#if defined(MULTIMODULE)
|
||||
case 2:
|
||||
switch (min(g_model.moduleData[EXTERNAL_MODULE].multi.rfProtocol, (uint8_t) MM_RF_PROTO_CUSTOM)) {
|
||||
case MM_RF_PROTO_HISKY:
|
||||
case MM_RF_PROTO_DSM2:
|
||||
case MM_RF_PROTO_SYMAX:
|
||||
case MM_RF_PROTO_KN:
|
||||
case MM_RF_PROTO_FRSKY:
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 1);
|
||||
break;
|
||||
case MM_RF_PROTO_CG023:
|
||||
case MM_RF_PROTO_MT99XX:
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 2);
|
||||
break;
|
||||
case MM_RF_PROTO_FLYSKY:
|
||||
case MM_RF_PROTO_MJXQ:
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 3);
|
||||
break;
|
||||
case MM_RF_PROTO_YD717:
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 4);
|
||||
break;
|
||||
case MM_RF_PROTO_CX10:
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 7);
|
||||
break;
|
||||
case MM_RF_PROTO_CUSTOM:
|
||||
g_model.moduleData[EXTERNAL_MODULE].multi.rfProtocol = 0x20 | checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].multi.rfProtocol & 0x1f, 1, 31, EE_MODEL);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
// Custom protocol, third column is subtype
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 7);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -737,21 +844,21 @@ void menuModelSetup(uint8_t event)
|
|||
if (IS_MODULE_PPM(moduleIdx)) {
|
||||
lcd_putsLeft(y, STR_PPMFRAME);
|
||||
lcdDrawText(MODEL_SETUP_2ND_COLUMN+3*FW, y, STR_MS);
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, (int16_t)moduleData.ppmFrameLength*5 + 225, (menuHorizontalPosition<=0 ? attr : 0) | PREC1|LEFT);
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, (int16_t)moduleData.ppm.frameLength*5 + 225, (menuHorizontalPosition<=0 ? attr : 0) | PREC1|LEFT);
|
||||
lcdDrawChar(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, 'u');
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, (moduleData.ppmDelay*50)+300, (CURSOR_ON_LINE() || menuHorizontalPosition==1) ? attr : 0);
|
||||
lcdDrawChar(MODEL_SETUP_2ND_COLUMN+10*FW, y, moduleData.ppmPulsePol ? '+' : '-', (CURSOR_ON_LINE() || menuHorizontalPosition==2) ? attr : 0);
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, (moduleData.ppm.delay*50)+300, (CURSOR_ON_LINE() || menuHorizontalPosition==1) ? attr : 0);
|
||||
lcdDrawChar(MODEL_SETUP_2ND_COLUMN+10*FW, y, moduleData.ppm.pulsePol ? '+' : '-', (CURSOR_ON_LINE() || menuHorizontalPosition==2) ? attr : 0);
|
||||
|
||||
if (attr && s_editMode>0) {
|
||||
switch (menuHorizontalPosition) {
|
||||
case 0:
|
||||
CHECK_INCDEC_MODELVAR(event, moduleData.ppmFrameLength, -20, 35);
|
||||
CHECK_INCDEC_MODELVAR(event, moduleData.ppm.frameLength, -20, 35);
|
||||
break;
|
||||
case 1:
|
||||
CHECK_INCDEC_MODELVAR(event, moduleData.ppmDelay, -4, 10);
|
||||
CHECK_INCDEC_MODELVAR(event, moduleData.ppm.delay, -4, 10);
|
||||
break;
|
||||
case 2:
|
||||
CHECK_INCDEC_MODELVAR_ZERO(event, moduleData.ppmPulsePol, 1);
|
||||
CHECK_INCDEC_MODELVAR_ZERO(event, moduleData.ppm.pulsePol, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -767,11 +874,13 @@ void menuModelSetup(uint8_t event)
|
|||
else {
|
||||
lcd_putsLeft(y, STR_RXNUM);
|
||||
}
|
||||
if (IS_MODULE_XJT(moduleIdx) || IS_MODULE_DSM2(moduleIdx)) {
|
||||
if (IS_MODULE_XJT(moduleIdx) || IS_MODULE_DSM2(moduleIdx) || IS_MODULE_MULTIMODULE(moduleIdx)) {
|
||||
if (xOffsetBind) lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId[moduleIdx], (l_posHorz==0 ? attr : 0) | LEADING0|LEFT, 2);
|
||||
if (attr && l_posHorz==0) {
|
||||
if (s_editMode>0) {
|
||||
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId[moduleIdx], IS_MODULE_DSM2(moduleIdx) ? 20 : 63);
|
||||
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId[moduleIdx],
|
||||
IS_MODULE_DSM2(moduleIdx) ? 20 :
|
||||
IS_MODULE_MULTIMODULE(moduleIdx) ? 15 : 63);
|
||||
if (checkIncDec_Ret) {
|
||||
modelHeaders[g_eeGeneral.currModel].modelId[moduleIdx] = g_model.header.modelId[moduleIdx];
|
||||
}
|
||||
|
@ -827,8 +936,39 @@ void menuModelSetup(uint8_t event)
|
|||
}
|
||||
}
|
||||
}
|
||||
#if defined(MULTIMODULE)
|
||||
else if (IS_MODULE_MULTIMODULE(moduleIdx)) {
|
||||
switch (g_model.moduleData[moduleIdx].multi.rfProtocol) {
|
||||
case MM_RF_PROTO_FRSKY:
|
||||
lcd_putsLeft(y, STR_MULTI_RFTUNE);
|
||||
break;
|
||||
case MM_RF_PROTO_HUBSAN:
|
||||
lcd_putsLeft(y, STR_MULTI_VIDFREQ);
|
||||
break;
|
||||
case MM_RF_PROTO_DSM2:
|
||||
g_model.moduleData[moduleIdx].multi.optionValue = selectMenuItem(MODEL_SETUP_2ND_COLUMN, y, STR_MULTI_DSMFRAME, STR_OPTIONS_DSM, g_model.moduleData[moduleIdx].multi.optionValue, 0, 12, attr, event);
|
||||
break;
|
||||
default:
|
||||
lcd_putsLeft(y, STR_MULTI_OPTION);
|
||||
break;
|
||||
}
|
||||
if (g_model.moduleData[moduleIdx].multi.rfProtocol != MM_RF_PROTO_DSM2) {
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, g_model.moduleData[moduleIdx].multi.optionValue, LEFT | attr);
|
||||
if (attr)
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, -128, 127);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
#if defined(MULTIMODULE)
|
||||
case ITEM_MODEL_EXTERNAL_MODULE_AUTOBIND:
|
||||
g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = editCheckBox(g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode, MODEL_SETUP_2ND_COLUMN, y, STR_MULTI_AUTOBIND, attr, event);
|
||||
break;
|
||||
case ITEM_MODEL_EXTERNAL_MODULE_LOWPOWER:
|
||||
g_model.moduleData[EXTERNAL_MODULE].multi.lowPowerMode = editCheckBox(g_model.moduleData[EXTERNAL_MODULE].multi.lowPowerMode, MODEL_SETUP_2ND_COLUMN, y, STR_MULTI_LOWPOWER, attr, event);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
#define GVAR_VALUE(gv, fm) g_model.flightModeData[fm].gvars[gv]
|
||||
#endif
|
||||
|
||||
#define SET_DEFAULT_PPM_FRAME_LENGTH(idx) g_model.moduleData[idx].ppmFrameLength = 4 * max((int8_t)0, g_model.moduleData[idx].channelsCount)
|
||||
#define SET_DEFAULT_PPM_FRAME_LENGTH(idx) g_model.moduleData[idx].ppm.frameLength = 4 * max((int8_t)0, g_model.moduleData[idx].channelsCount)
|
||||
|
||||
#if defined(PCBTARANIS) || defined(PCBHORUS)
|
||||
#define IS_TRAINER_EXTERNAL_MODULE() (g_model.trainerMode == TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE || g_model.trainerMode == TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE)
|
||||
|
@ -466,11 +466,14 @@ enum Protocols {
|
|||
PROTO_CROSSFIRE,
|
||||
#endif
|
||||
#if defined(IRPROTOS)
|
||||
// we will need 4 bytes for proto :(
|
||||
// we will need 4 bits for proto :(
|
||||
PROTO_SILV,
|
||||
PROTO_TRAC09,
|
||||
PROTO_PICZ,
|
||||
PROTO_SWIFT,
|
||||
#endif
|
||||
#if defined(MULTIMODULE)
|
||||
PROTO_MULTIMODULE,
|
||||
#endif
|
||||
PROTO_MAX,
|
||||
PROTO_NONE
|
||||
|
@ -484,6 +487,31 @@ enum RFProtocols {
|
|||
RF_PROTO_LAST = RF_PROTO_LR12
|
||||
};
|
||||
|
||||
enum MultiModuleRFProtocols {
|
||||
MM_RF_PROTO_FLYSKY=0,
|
||||
MM_RF_PROTO_FIRST=MM_RF_PROTO_FLYSKY,
|
||||
MM_RF_PROTO_HUBSAN,
|
||||
MM_RF_PROTO_FRSKY,
|
||||
MM_RF_PROTO_HISKY,
|
||||
MM_RF_PROTO_V2X2,
|
||||
MM_RF_PROTO_DSM2,
|
||||
MM_RF_PROTO_DEVO,
|
||||
MM_RF_PROTO_YD717,
|
||||
MM_RF_PROTO_KN,
|
||||
MM_RF_PROTO_SYMAX,
|
||||
MM_RF_PROTO_SLT,
|
||||
MM_RF_PROTO_CX10,
|
||||
MM_RF_PROTO_CG023,
|
||||
MM_RF_PROTO_BAYANG,
|
||||
MM_RF_PROTO_ESky,
|
||||
MM_RF_PROTO_MT99XX,
|
||||
MM_RF_PROTO_MJXQ,
|
||||
MM_RF_PROTO_SHENQI,
|
||||
MM_RF_PROTO_FY326,
|
||||
MM_RF_PROTO_CUSTOM,
|
||||
MM_RF_PROTO_LAST= MM_RF_PROTO_CUSTOM
|
||||
};
|
||||
|
||||
#define HAS_RF_PROTOCOL_FAILSAFE(rf) ((rf) == RF_PROTO_X16)
|
||||
#define HAS_RF_PROTOCOL_MODELINDEX(rf) (((rf) == RF_PROTO_X16) || ((rf) == RF_PROTO_LR12))
|
||||
|
||||
|
@ -502,6 +530,9 @@ enum ModuleTypes {
|
|||
#endif
|
||||
#if defined(CROSSFIRE)
|
||||
MODULE_TYPE_CROSSFIRE,
|
||||
#endif
|
||||
#if defined(MULTIMODULE)
|
||||
MODULE_TYPE_MULTIMODULE,
|
||||
#endif
|
||||
MODULE_TYPE_COUNT
|
||||
};
|
||||
|
|
|
@ -461,6 +461,11 @@ void memswap(void * a, void * b, uint8_t size);
|
|||
#else
|
||||
#define IS_MODULE_CROSSFIRE(idx) (false)
|
||||
#endif
|
||||
#if defined(MULTIMODULE)
|
||||
#define IS_MODULE_MULTIMODULE(idx) (idx==EXTERNAL_MODULE && g_model.moduleData[EXTERNAL_MODULE].type==MODULE_TYPE_MULTIMODULE)
|
||||
#else
|
||||
#define IS_MODULE_MULTIMODULE(idx) (false)
|
||||
#endif
|
||||
#if defined(TARANIS_INTERNAL_PPM)
|
||||
#define MAX_INTERNAL_MODULE_CHANNELS() ((g_model.moduleData[INTERNAL_MODULE].type == MODULE_TYPE_XJT) ? maxChannelsXJT[1+g_model.moduleData[0].rfProtocol] : maxChannelsModules[g_model.moduleData[INTERNAL_MODULE].type])
|
||||
#else
|
||||
|
@ -468,7 +473,7 @@ void memswap(void * a, void * b, uint8_t size);
|
|||
#endif
|
||||
#define MAX_EXTERNAL_MODULE_CHANNELS() ((g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_XJT) ? maxChannelsXJT[1+g_model.moduleData[1].rfProtocol] : maxChannelsModules[g_model.moduleData[EXTERNAL_MODULE].type])
|
||||
#define MAX_CHANNELS(idx) (idx==INTERNAL_MODULE ? MAX_INTERNAL_MODULE_CHANNELS() : (idx==EXTERNAL_MODULE ? MAX_EXTERNAL_MODULE_CHANNELS() : MAX_TRAINER_CHANNELS()))
|
||||
#define NUM_CHANNELS(idx) (IS_MODULE_CROSSFIRE(idx) ? CROSSFIRE_CHANNELS_COUNT : (8+g_model.moduleData[idx].channelsCount))
|
||||
#define NUM_CHANNELS(idx) ((IS_MODULE_CROSSFIRE(idx) || IS_MODULE_MULTIMODULE(idx)) ? CROSSFIRE_CHANNELS_COUNT : (8+g_model.moduleData[idx].channelsCount))
|
||||
#elif defined(PCBSKY9X) && !defined(REVA)
|
||||
#define IS_MODULE_PPM(idx) (idx==TRAINER_MODULE || idx==EXTRA_MODULE || (idx==EXTERNAL_MODULE && g_model.moduleData[EXTERNAL_MODULE].type==MODULE_TYPE_PPM))
|
||||
#define IS_MODULE_XJT(idx) (idx==EXTERNAL_MODULE && g_model.moduleData[EXTERNAL_MODULE].type==MODULE_TYPE_XJT)
|
||||
|
|
186
radio/src/pulses/multi_arm.cpp
Normal file
186
radio/src/pulses/multi_arm.cpp
Normal file
|
@ -0,0 +1,186 @@
|
|||
/*
|
||||
* Copyright (C) OpenTX
|
||||
*
|
||||
* Based on code named
|
||||
* th9x - http://code.google.com/p/th9x
|
||||
* er9x - http://code.google.com/p/er9x
|
||||
* gruvin9x - http://code.google.com/p/gruvin9x
|
||||
*
|
||||
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include "opentx.h"
|
||||
|
||||
// for the MULTI protocol definition
|
||||
// see https://github.com/pascallanger/DIY-Multiprotocol-TX-Module
|
||||
// file Multiprotocol/multiprotocol.h
|
||||
|
||||
|
||||
|
||||
/* The protocol is heavily inspired by the DSM2 protocol, so reuse some the definitions where they are identical */
|
||||
|
||||
#define MULTI_SEND_BIND (1 << 7)
|
||||
#define MULTI_SEND_RANGECHECK (1 << 5)
|
||||
#define MULTI_SEND_AUTOBIND (1 << 6)
|
||||
|
||||
|
||||
#define BITLEN_MULTI (10*2) //100000 Baud => 10uS per bit
|
||||
|
||||
#if defined(PPM_PIN_HW_SERIAL)
|
||||
static void sendByteMulti(uint8_t b)
|
||||
{
|
||||
uint8_t parity = 1;
|
||||
|
||||
putDsm2SerialBit(0); // Start bit
|
||||
for (uint8_t i=0; i<8; i++) { // 8 data Bits
|
||||
putDsm2SerialBit(b & 1);
|
||||
parity = parity ^ (b & 1);
|
||||
b >>= 1;
|
||||
}
|
||||
putDsm2SerialBit(parity); // Even Parity bit
|
||||
|
||||
putDsm2SerialBit(1); // Stop bit
|
||||
putDsm2SerialBit(1); // Stop bit
|
||||
}
|
||||
#else
|
||||
static void _send_level(uint8_t v)
|
||||
{
|
||||
/* Copied over from DSM, this looks doubious and in my logic analyzer
|
||||
output the low->high is about 2 ns late */
|
||||
if (modulePulsesData[EXTERNAL_MODULE].dsm2.index == 0)
|
||||
v -= 2;
|
||||
else
|
||||
v += 2;
|
||||
|
||||
modulePulsesData[EXTERNAL_MODULE].dsm2.value += v;
|
||||
*modulePulsesData[EXTERNAL_MODULE].dsm2.ptr++ = modulePulsesData[EXTERNAL_MODULE].dsm2.value;
|
||||
modulePulsesData[EXTERNAL_MODULE].dsm2.index = (modulePulsesData[EXTERNAL_MODULE].dsm2.index+1) % 2;
|
||||
}
|
||||
|
||||
static void sendByteMulti(uint8_t b) //max 11 changes 0 10 10 10 10 P 1
|
||||
{
|
||||
bool lev = 0;
|
||||
uint8_t parity = 1;
|
||||
|
||||
uint8_t len = BITLEN_MULTI; //max val: 10*20 < 256
|
||||
for (uint8_t i=0; i<=9; i++) { //8Bits + 1Parity + Stop=1
|
||||
bool nlev = b & 1; //lsb first
|
||||
parity = parity ^ nlev;
|
||||
if (lev == nlev) {
|
||||
len += BITLEN_MULTI;
|
||||
}
|
||||
else {
|
||||
_send_level(len);
|
||||
len = BITLEN_MULTI;
|
||||
lev = nlev;
|
||||
}
|
||||
b = (b>>1) | 0x80; //shift in ones for stop bit and parity
|
||||
if (i==7)
|
||||
b = b ^ parity; // lowest bit is one from previous line
|
||||
}
|
||||
_send_level(len+2*BITLEN_MULTI); // 2Stop bits
|
||||
}
|
||||
#endif
|
||||
|
||||
// This is the data stream to send, prepare after 19.5 mS
|
||||
// Send after 22.5 mS
|
||||
|
||||
//static uint8_t *Dsm2_pulsePtr = pulses2MHz.pbyte ;
|
||||
|
||||
|
||||
#define MULTI_CHANS 16
|
||||
#define MULTI_CHAN_BITS 11
|
||||
void setupPulsesMultimodule(unsigned int port)
|
||||
{
|
||||
|
||||
#if defined(PPM_PIN_HW_SERIAL)
|
||||
modulePulsesData[EXTERNAL_MODULE].dsm2.serialByte = 0 ;
|
||||
modulePulsesData[EXTERNAL_MODULE].dsm2.serialBitCount = 0 ;
|
||||
#else
|
||||
modulePulsesData[EXTERNAL_MODULE].dsm2.value = 0;
|
||||
modulePulsesData[EXTERNAL_MODULE].dsm2.index = 1;
|
||||
#endif
|
||||
|
||||
modulePulsesData[EXTERNAL_MODULE].dsm2.ptr = modulePulsesData[EXTERNAL_MODULE].dsm2.pulses;
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
modulePulsesData[EXTERNAL_MODULE].dsm2.value = 100;
|
||||
*modulePulsesData[EXTERNAL_MODULE].dsm2.ptr++ = modulePulsesData[EXTERNAL_MODULE].dsm2.value;
|
||||
#endif
|
||||
|
||||
// header, byte 0, always 0x55
|
||||
sendByteMulti(0x55);
|
||||
|
||||
// byte 1+2, protocol information
|
||||
|
||||
int type = g_model.moduleData[port].multi.rfProtocol +1;
|
||||
int subtype = g_model.moduleData[port].subType;
|
||||
|
||||
uint8_t protoByte=0;
|
||||
if (moduleFlag[port] == MODULE_BIND)
|
||||
protoByte |= MULTI_SEND_BIND;
|
||||
else if (moduleFlag[port] == MODULE_RANGECHECK)
|
||||
protoByte |= MULTI_SEND_RANGECHECK;
|
||||
|
||||
// rfProtocol
|
||||
// 15 for Multimodule is FrskyX or D16 which we map as a subprotocol of 3 (FrSky)
|
||||
// all protos > frskyx are therefore also off by one
|
||||
if (type >=15)
|
||||
type= type +1;
|
||||
|
||||
if (g_model.moduleData[port].multi.rfProtocol == MM_RF_PROTO_FRSKY) {
|
||||
if(subtype == 1)
|
||||
type = 3;
|
||||
else
|
||||
type = 15;
|
||||
subtype = 0;
|
||||
}
|
||||
|
||||
if (g_model.moduleData[port].multi.rfProtocol >= MM_RF_PROTO_CUSTOM)
|
||||
type = g_model.moduleData[port].multi.rfProtocol & 0x1f;
|
||||
|
||||
protoByte |= (type & 0x1f) | (g_model.moduleData[port].multi.autoBindMode << 6);
|
||||
sendByteMulti(protoByte);
|
||||
|
||||
|
||||
// power always set to high (0 << 7)
|
||||
sendByteMulti((g_model.header.modelId[port] & 0x0f)
|
||||
| ((subtype & 0x7) << 4)
|
||||
| (g_model.moduleData[port].multi.lowPowerMode << 7)
|
||||
);
|
||||
|
||||
|
||||
|
||||
//TODO: option_protocol, use same default as multi module
|
||||
// byte 3
|
||||
sendByteMulti(g_model.moduleData[port].multi.optionValue);
|
||||
|
||||
uint32_t bits = 0;
|
||||
uint8_t bitsavailable = 0;
|
||||
|
||||
// byte 4-25, channels 0..2047
|
||||
// ?? Range for pulses (channelsOutputs) is [-1024:+1024]
|
||||
for (int i=0; i<MULTI_CHANS; i++) {
|
||||
int channel = g_model.moduleData[port].channelsStart+i;
|
||||
int value = channelOutputs[channel] + 2*PPM_CH_CENTER(channel) - 2*PPM_CENTER;
|
||||
|
||||
bits |= limit(0, 1024 + value, 2047) << bitsavailable;
|
||||
bitsavailable += MULTI_CHAN_BITS;
|
||||
while (bitsavailable >= 8) {
|
||||
sendByteMulti((uint8_t) (bits & 0xff));
|
||||
bits >>= 8;
|
||||
bitsavailable -= 8;
|
||||
}
|
||||
}
|
||||
|
||||
putDsm2Flush();
|
||||
}
|
|
@ -35,8 +35,8 @@ void setupPulsesPPM(unsigned int port) // Don't enable interru
|
|||
// TODO move register stuff to driver
|
||||
register Pwm *pwmptr = PWM;
|
||||
uint32_t pwmCh = (port == EXTERNAL_MODULE ? 3 : 1);
|
||||
pwmptr->PWM_CH_NUM[pwmCh].PWM_CDTYUPD = (g_model.moduleData[port].ppmDelay * 50 + 300) * 2; //Stoplen *2
|
||||
if (g_model.moduleData[port].ppmPulsePol)
|
||||
pwmptr->PWM_CH_NUM[pwmCh].PWM_CDTYUPD = (g_model.moduleData[port].ppm.delay * 50 + 300) * 2; //Stoplen *2
|
||||
if (g_model.moduleData[port].ppm.pulsePol)
|
||||
pwmptr->PWM_CH_NUM[pwmCh].PWM_CMR &= ~0x00000200 ; // CPOL
|
||||
else
|
||||
pwmptr->PWM_CH_NUM[pwmCh].PWM_CMR |= 0x00000200 ; // CPOL
|
||||
|
@ -48,7 +48,7 @@ void setupPulsesPPM(unsigned int port) // Don't enable interru
|
|||
ppmPulsesData->ptr = ptr;
|
||||
|
||||
int32_t rest = 22500u * 2;
|
||||
rest += (int32_t(g_model.moduleData[port].ppmFrameLength)) * 1000;
|
||||
rest += (int32_t(g_model.moduleData[port].ppm.frameLength)) * 1000;
|
||||
for (uint32_t i=firstCh; i<lastCh; i++) {
|
||||
int16_t v = limit((int16_t)-PPM_range, channelOutputs[i], (int16_t)PPM_range) + 2*PPM_CH_CENTER(i);
|
||||
rest -= v;
|
||||
|
@ -61,19 +61,19 @@ void setupPulsesPPM(unsigned int port) // Don't enable interru
|
|||
|
||||
#if !defined(PCBSKY9X)
|
||||
rest -= 1000;
|
||||
uint32_t ppmDelay = (g_model.moduleData[port].ppmDelay * 50 + 300) * 2;
|
||||
uint32_t ppmDelay = (g_model.moduleData[port].ppm.delay * 50 + 300) * 2;
|
||||
// set idle time, ppm delay and ppm polarity
|
||||
if (port == TRAINER_MODULE) {
|
||||
set_trainer_ppm_parameters(rest, ppmDelay, !g_model.moduleData[TRAINER_MODULE].ppmPulsePol); // ppmPulsePol: 0 - positive, 1 - negative
|
||||
set_trainer_ppm_parameters(rest, ppmDelay, !g_model.moduleData[TRAINER_MODULE].ppm.pulsePol); // ppmPulsePol: 0 - positive, 1 - negative
|
||||
}
|
||||
else if (port == EXTERNAL_MODULE) {
|
||||
set_external_ppm_parameters(rest, ppmDelay, !g_model.moduleData[EXTERNAL_MODULE].ppmPulsePol);
|
||||
set_external_ppm_parameters(rest, ppmDelay, !g_model.moduleData[EXTERNAL_MODULE].ppm.pulsePol);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(TARANIS_INTERNAL_PPM)
|
||||
else if (port == INTERNAL_MODULE) {
|
||||
set_internal_ppm_parameters(rest, ppmDelay, !g_model.moduleData[INTERNAL_MODULE].ppmPulsePol);
|
||||
set_internal_ppm_parameters(rest, ppmDelay, !g_model.moduleData[INTERNAL_MODULE].ppm.pulsePol);
|
||||
}
|
||||
#endif // #if defined(TARANIS_INTERNAL_PPM)
|
||||
}
|
||||
|
|
|
@ -68,6 +68,16 @@ enum ModuleFlag
|
|||
#define IS_DSM2_SERIAL_PROTOCOL(protocol) (0)
|
||||
#endif
|
||||
|
||||
#if defined(MULTIMODULE)
|
||||
#define IS_MULTIMODULE_PROTOCOL(protocol) (protocol==PROTO_MULTIMODULE)
|
||||
#if !defined(DSM2)
|
||||
#error You need to enable DSM2 = PPM for MULTIMODULE support
|
||||
#endif
|
||||
#else
|
||||
#define IS_MULTIMODULE_PROTOCOL(protocol) (0)
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(CPUARM)
|
||||
#include "pulses_arm.h"
|
||||
#else
|
||||
|
|
|
@ -64,6 +64,11 @@ void setupPulses(unsigned int port)
|
|||
case MODULE_TYPE_XJT:
|
||||
required_protocol = PROTO_PXX;
|
||||
break;
|
||||
#if defined(MULTIMODULE)
|
||||
case MODULE_TYPE_MULTIMODULE:
|
||||
required_protocol = PROTO_MULTIMODULE;
|
||||
break;
|
||||
#endif
|
||||
#if defined(PCBTARANIS) && defined(DSM2)
|
||||
case MODULE_TYPE_DSM2:
|
||||
required_protocol = limit<uint8_t>(PROTO_DSM2_LP45, PROTO_DSM2_LP45+g_model.moduleData[EXTERNAL_MODULE].rfProtocol, PROTO_DSM2_DSMX);
|
||||
|
@ -123,6 +128,11 @@ void setupPulses(unsigned int port)
|
|||
case PROTO_CROSSFIRE:
|
||||
disable_crossfire(port);
|
||||
break;
|
||||
#endif
|
||||
#if defined(MULTIMODULE)
|
||||
case PROTO_MULTIMODULE:
|
||||
disable_dsm2(port);
|
||||
break;
|
||||
#endif
|
||||
case PROTO_PPM:
|
||||
disable_ppm(port);
|
||||
|
@ -149,6 +159,11 @@ void setupPulses(unsigned int port)
|
|||
case PROTO_CROSSFIRE:
|
||||
init_crossfire(port);
|
||||
break;
|
||||
#endif
|
||||
#if defined(MULTIMODULE)
|
||||
case PROTO_MULTIMODULE:
|
||||
init_dsm2(port);
|
||||
break;
|
||||
#endif
|
||||
case PROTO_PPM:
|
||||
init_ppm(port);
|
||||
|
@ -182,6 +197,11 @@ void setupPulses(unsigned int port)
|
|||
}
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#if defined(MULTIMODULE)
|
||||
case PROTO_MULTIMODULE:
|
||||
setupPulsesMultimodule(port);
|
||||
break;
|
||||
#endif
|
||||
case PROTO_PPM:
|
||||
setupPulsesPPM(port);
|
||||
|
|
|
@ -88,11 +88,16 @@ union TrainerPulsesData {
|
|||
|
||||
extern ModulePulsesData modulePulsesData[NUM_MODULES];
|
||||
extern TrainerPulsesData trainerPulsesData;
|
||||
extern const uint16_t CRCTable[];
|
||||
|
||||
void setupPulses(unsigned int port);
|
||||
void setupPulsesDSM2(unsigned int port);
|
||||
void setupPulsesMultimodule(unsigned int port);
|
||||
void setupPulsesPXX(unsigned int port);
|
||||
void setupPulsesPPM(unsigned int port);
|
||||
void sendByteDsm2(uint8_t b);
|
||||
void putDsm2Flush();
|
||||
void putDsm2SerialBit(uint8_t bit);
|
||||
|
||||
void createCrossfireFrame(uint8_t * frame, int16_t * pulses);
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
//This file was auto-generated by generate_datacopy.py script on Fri Mar 25 14:17:31 2016. Do not edit this file!
|
||||
//This file was auto-generated by generate_datacopy.py script on Fri Mar 25 14:26:09 2016. Do not edit this file!
|
||||
|
||||
|
||||
|
||||
|
@ -194,10 +194,7 @@ void copyModuleData(A * dest, B * src)
|
|||
dest->failsafeMode = src->failsafeMode;
|
||||
dest->invertedSerial = src->invertedSerial;
|
||||
memcpy(dest->failsafeChannels, src->failsafeChannels, sizeof(dest->failsafeChannels));
|
||||
dest->ppmDelay = src->ppmDelay;
|
||||
dest->ppmPulsePol = src->ppmPulsePol;
|
||||
dest->ppmOutputType = src->ppmOutputType;
|
||||
dest->ppmFrameLength = src->ppmFrameLength;
|
||||
copyModuleData_ppm(&dest->ppm, &src->ppm);
|
||||
}
|
||||
|
||||
template <class A, class B>
|
||||
|
@ -338,3 +335,12 @@ void copyTelemetrySensor_custom(A * dest, B * src)
|
|||
dest->ratio = src->ratio;
|
||||
dest->offset = src->offset;
|
||||
}
|
||||
|
||||
template <class A, class B>
|
||||
void copyModuleData_ppm(A * dest, B * src)
|
||||
{
|
||||
dest->delay = src->delay;
|
||||
dest->pulsePol = src->pulsePol;
|
||||
dest->outputType = src->outputType;
|
||||
dest->frameLength = src->frameLength;
|
||||
}
|
||||
|
|
|
@ -871,9 +871,9 @@ void ConvertModel_216_to_217(ModelData & model)
|
|||
for (int j=0; j<NUM_CHNOUT; j++) {
|
||||
newModel.moduleData[i].failsafeChannels[j] = oldModel.moduleData[i].failsafeChannels[j];
|
||||
}
|
||||
newModel.moduleData[i].ppmDelay = oldModel.moduleData[i].ppmDelay;
|
||||
newModel.moduleData[i].ppmFrameLength = oldModel.moduleData[i].ppmFrameLength;
|
||||
newModel.moduleData[i].ppmPulsePol = oldModel.moduleData[i].ppmPulsePol;
|
||||
newModel.moduleData[i].ppm.delay = oldModel.moduleData[i].ppmDelay;
|
||||
newModel.moduleData[i].ppm.frameLength = oldModel.moduleData[i].ppmFrameLength;
|
||||
newModel.moduleData[i].ppm.pulsePol = oldModel.moduleData[i].ppmPulsePol;
|
||||
}
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
|
|
|
@ -27,7 +27,7 @@ void module_output_active()
|
|||
pioptr->PIO_ABCDSR[1] |= PIO_PA17 ; // Peripheral C
|
||||
pioptr->PIO_PDR = PIO_PA17 ; // Disable bit A17 Assign to peripheral
|
||||
#if defined(REVX)
|
||||
if (g_model.moduleData[EXTERNAL_MODULE].ppmOutputType) {
|
||||
if (g_model.moduleData[EXTERNAL_MODULE].ppm.OutputType) {
|
||||
pioptr->PIO_MDDR = PIO_PA17 ; // Push Pull O/p in A17
|
||||
}
|
||||
else {
|
||||
|
@ -52,13 +52,13 @@ void init_main_ppm(uint32_t period, uint32_t out_enable)
|
|||
pwmptr = PWM ;
|
||||
// PWM3 for PPM output
|
||||
pwmptr->PWM_CH_NUM[3].PWM_CMR = 0x0004000B ; // CLKA
|
||||
if (!g_model.moduleData[EXTERNAL_MODULE].ppmPulsePol) {
|
||||
if (!g_model.moduleData[EXTERNAL_MODULE].ppm.pulsePol) {
|
||||
pwmptr->PWM_CH_NUM[3].PWM_CMR |= 0x00000200 ; // CPOL
|
||||
}
|
||||
pwmptr->PWM_CH_NUM[3].PWM_CPDR = period ; // Period in half uS
|
||||
pwmptr->PWM_CH_NUM[3].PWM_CPDRUPD = period ; // Period in half uS
|
||||
pwmptr->PWM_CH_NUM[3].PWM_CDTY = g_model.moduleData[EXTERNAL_MODULE].ppmDelay*100+600; // Duty in half uS
|
||||
pwmptr->PWM_CH_NUM[3].PWM_CDTYUPD = g_model.moduleData[EXTERNAL_MODULE].ppmDelay*100+600; // Duty in half uS
|
||||
pwmptr->PWM_CH_NUM[3].PWM_CDTY = g_model.moduleData[EXTERNAL_MODULE].ppm.delay*100+600; // Duty in half uS
|
||||
pwmptr->PWM_CH_NUM[3].PWM_CDTYUPD = g_model.moduleData[EXTERNAL_MODULE].ppm.delay*100+600; // Duty in half uS
|
||||
pwmptr->PWM_ENA = PWM_ENA_CHID3 ; // Enable channel 3
|
||||
pwmptr->PWM_IER1 = PWM_IER1_CHID3 ;
|
||||
|
||||
|
@ -66,13 +66,13 @@ void init_main_ppm(uint32_t period, uint32_t out_enable)
|
|||
// PWM1 for PPM2
|
||||
configure_pins(PIO_PC15, PIN_PERIPHERAL | PIN_INPUT | PIN_PER_B | PIN_PORTC | PIN_NO_PULLUP ) ;
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CMR = 0x0000000B ; // CLKB
|
||||
if (!g_model.moduleData[EXTRA_MODULE].ppmPulsePol) {
|
||||
if (!g_model.moduleData[EXTRA_MODULE].ppm.pulsePol) {
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CMR |= 0x00000200 ; // CPOL
|
||||
}
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CPDR = period ; // Period
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CPDRUPD = period ; // Period
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CDTY = g_model.moduleData[EXTRA_MODULE].ppmDelay*100+600 ; // Duty
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CDTYUPD = g_model.moduleData[EXTRA_MODULE].ppmDelay*100+600 ; // Duty
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CDTY = g_model.moduleData[EXTRA_MODULE].ppm.delay*100+600 ; // Duty
|
||||
pwmptr->PWM_CH_NUM[1].PWM_CDTYUPD = g_model.moduleData[EXTRA_MODULE].ppm.delay*100+600 ; // Duty
|
||||
pwmptr->PWM_ENA = PWM_ENA_CHID1 ; // Enable channel 1
|
||||
pwmptr->PWM_IER1 = PWM_IER1_CHID1 ;
|
||||
#endif
|
||||
|
|
|
@ -32,7 +32,7 @@ static void intmodulePxxStop( void ) ;
|
|||
#endif
|
||||
static void extmodulePxxStart( void ) ;
|
||||
static void extmodulePxxStop( void ) ;
|
||||
#if defined(DSM2)
|
||||
#if defined(DSM2) || defined(MULTIMODULE)
|
||||
static void extmoduleDsm2Start( void ) ;
|
||||
static void extmoduleDsm2Stop( void ) ;
|
||||
#endif
|
||||
|
@ -61,7 +61,7 @@ void disable_pxx(uint32_t port)
|
|||
extmodulePxxStop() ;
|
||||
}
|
||||
|
||||
#if defined(DSM2)
|
||||
#if defined(DSM2) || defined(MULTIMODULE)
|
||||
void init_dsm2(uint32_t port)
|
||||
{
|
||||
if (port == EXTERNAL_MODULE) {
|
||||
|
@ -469,7 +469,7 @@ static void extmodulePxxStop()
|
|||
}
|
||||
}
|
||||
|
||||
#if defined(DSM2)
|
||||
#if defined(DSM2) || defined(MULTIMODULE)
|
||||
static void extmoduleDsm2Start()
|
||||
{
|
||||
EXTERNAL_MODULE_ON();
|
||||
|
@ -589,7 +589,9 @@ extern "C" void TIM8_CC_IRQHandler()
|
|||
EXTMODULE_TIMER->DIER |= TIM_DIER_CC2IE ; // Enable this interrupt
|
||||
}
|
||||
#if defined(DSM2)
|
||||
else if (s_current_protocol[EXTERNAL_MODULE] >= PROTO_DSM2_LP45 && s_current_protocol[EXTERNAL_MODULE] <= PROTO_DSM2_DSMX) {
|
||||
else if ((s_current_protocol[EXTERNAL_MODULE] >= PROTO_DSM2_LP45 && s_current_protocol[EXTERNAL_MODULE] <= PROTO_DSM2_DSMX) || IS_MULTIMODULE_PROTOCOL (s_current_protocol[EXTERNAL_MODULE]))
|
||||
|
||||
{
|
||||
DMA2_Stream2->CR &= ~DMA_SxCR_EN ; // Disable DMA
|
||||
DMA2->LIFCR = DMA_LIFCR_CTCIF2 | DMA_LIFCR_CHTIF2 | DMA_LIFCR_CTEIF2 | DMA_LIFCR_CDMEIF2 | DMA_LIFCR_CFEIF2 ; // Write ones to clear bits
|
||||
DMA2_Stream2->M0AR = CONVERT_PTR_UINT(&modulePulsesData[EXTERNAL_MODULE].dsm2.pulses[1]);
|
||||
|
|
|
@ -107,6 +107,19 @@ const pm_char STR_OPEN9X[] PROGMEM =
|
|||
ISTR(TARANIS_PROTOCOLS)
|
||||
ISTR(XJT_PROTOCOLS)
|
||||
ISTR(DSM_PROTOCOLS)
|
||||
#if defined(MULTIMODULE)
|
||||
ISTR(MULTI_PROTOCOLS)
|
||||
ISTR(SUBTYPE_FLYSKY)
|
||||
ISTR(SUBTYPE_HISKY)
|
||||
ISTR(SUBTYPE_YD717)
|
||||
ISTR(SUBTYPE_SYMAX)
|
||||
ISTR(SUBTYPE_CX10)
|
||||
ISTR(SUBTYPE_CG023)
|
||||
ISTR(SUBTYPE_KN)
|
||||
ISTR(SUBTYPE_MT99)
|
||||
ISTR(SUBTYPE_MJXQ)
|
||||
ISTR(OPTIONS_DSM)
|
||||
#endif
|
||||
ISTR(VOLTSRC)
|
||||
ISTR(CURVE_TYPES)
|
||||
ISTR(VSENSORTYPES)
|
||||
|
@ -436,6 +449,15 @@ const pm_char STR_ABOUT_US[] PROGMEM = TR_ABOUT_US;
|
|||
const pm_char STR_SETUP_SCREENS[] PROGMEM = TR_SETUP_SCREENS;
|
||||
#endif
|
||||
|
||||
#if defined(MULTIMODULE)
|
||||
const pm_char STR_MULTI_RFTUNE[] PROGMEM = TR_MULTI_RFTUNE;
|
||||
const pm_char STR_MULTI_VIDFREQ[] PROGMEM = TR_MULTI_VIDFREQ;
|
||||
const pm_char STR_MULTI_OPTION[] PROGMEM = TR_MULTI_OPTION;
|
||||
const pm_char STR_MULTI_AUTOBIND[] PROGMEM = TR_MULTI_AUTOBIND;
|
||||
const pm_char STR_MULTI_LOWPOWER[] PROGMEM = TR_MULTI_LOWPOWER;
|
||||
const pm_char STR_MULTI_DSMFRAME[] PROGMEM = TR_MULTI_DSMFRAME;
|
||||
#endif
|
||||
|
||||
const pm_char STR_RESET_BTN[] PROGMEM = TR_RESET_BTN;
|
||||
|
||||
#if defined(SDCARD)
|
||||
|
@ -719,5 +741,3 @@ const pm_char STR_MENU_INVERT[] PROGMEM = TR_MENU_INVERT;
|
|||
const pm_char STR_ABOUT_PARENTS_3[] PROGMEM = TR_ABOUT_PARENTS_3;
|
||||
const pm_char STR_ABOUT_PARENTS_4[] PROGMEM = TR_ABOUT_PARENTS_4;
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
@ -189,7 +189,22 @@ extern const pm_char STR_OPEN9X[];
|
|||
#define OFS_TARANIS_PROTOCOLS (OFS_VTRAINERMODES + sizeof(TR_VTRAINERMODES))
|
||||
#define OFS_XJT_PROTOCOLS (OFS_TARANIS_PROTOCOLS + sizeof(TR_TARANIS_PROTOCOLS))
|
||||
#define OFS_DSM_PROTOCOLS (OFS_XJT_PROTOCOLS + sizeof(TR_XJT_PROTOCOLS))
|
||||
#if defined(MULTIMODULE)
|
||||
#define OFS_MULTI_PROTOCOLS (OFS_DSM_PROTOCOLS + sizeof(TR_DSM_PROTOCOLS))
|
||||
#define OFS_SUBTYPE_FLYSKY (OFS_MULTI_PROTOCOLS + sizeof(TR_MULTI_PROTOCOLS))
|
||||
#define OFS_SUBTYPE_HISKY (OFS_SUBTYPE_FLYSKY + sizeof(TR_SUBTYPE_FLYSKY))
|
||||
#define OFS_SUBTYPE_YD717 (OFS_SUBTYPE_HISKY + sizeof(TR_SUBTYPE_HISKY))
|
||||
#define OFS_SUBTYPE_SYMAX (OFS_SUBTYPE_YD717 + sizeof(TR_SUBTYPE_YD717))
|
||||
#define OFS_SUBTYPE_CX10 (OFS_SUBTYPE_SYMAX + sizeof(TR_SUBTYPE_SYMAX))
|
||||
#define OFS_SUBTYPE_CG023 (OFS_SUBTYPE_CX10 + sizeof(TR_SUBTYPE_CX10))
|
||||
#define OFS_SUBTYPE_KN (OFS_SUBTYPE_CG023 + sizeof(TR_SUBTYPE_CG023))
|
||||
#define OFS_SUBTYPE_MT99 (OFS_SUBTYPE_KN + sizeof(TR_SUBTYPE_KN))
|
||||
#define OFS_SUBTYPE_MJXQ (OFS_SUBTYPE_MT99 + sizeof(TR_SUBTYPE_MT99))
|
||||
#define OFS_OPTIONS_DSM (OFS_SUBTYPE_MJXQ + sizeof(TR_SUBTYPE_MJXQ))
|
||||
#define OFS_VOLTSRC (OFS_OPTIONS_DSM + sizeof(TR_OPTIONS_DSM))
|
||||
#else
|
||||
#define OFS_VOLTSRC (OFS_DSM_PROTOCOLS + sizeof(TR_DSM_PROTOCOLS))
|
||||
#endif
|
||||
#define OFS_CURVE_TYPES (OFS_VOLTSRC + sizeof(TR_VOLTSRC))
|
||||
#define OFS_VSENSORTYPES (OFS_CURVE_TYPES + sizeof(TR_CURVE_TYPES))
|
||||
#define OFS_VFORMULAS (OFS_VSENSORTYPES + sizeof(TR_VSENSORTYPES))
|
||||
|
@ -305,6 +320,19 @@ extern const pm_char STR_OPEN9X[];
|
|||
#define STR_TARANIS_PROTOCOLS (STR_OPEN9X + OFS_TARANIS_PROTOCOLS)
|
||||
#define STR_XJT_PROTOCOLS (STR_OPEN9X + OFS_XJT_PROTOCOLS)
|
||||
#define STR_DSM_PROTOCOLS (STR_OPEN9X + OFS_DSM_PROTOCOLS)
|
||||
#if defined(MULTIMODULE)
|
||||
#define STR_MULTI_PROTOCOLS (STR_OPEN9X + OFS_MULTI_PROTOCOLS)
|
||||
#define STR_SUBTYPE_FLYSKY (STR_OPEN9X + OFS_SUBTYPE_FLYSKY)
|
||||
#define STR_SUBTYPE_HISKY (STR_OPEN9X + OFS_SUBTYPE_HISKY)
|
||||
#define STR_SUBTYPE_YD717 (STR_OPEN9X + OFS_SUBTYPE_YD717)
|
||||
#define STR_SUBTYPE_SYMAX (STR_OPEN9X + OFS_SUBTYPE_SYMAX)
|
||||
#define STR_SUBTYPE_CX10 (STR_OPEN9X + OFS_SUBTYPE_CX10)
|
||||
#define STR_SUBTYPE_CG023 (STR_OPEN9X + OFS_SUBTYPE_CG023)
|
||||
#define STR_SUBTYPE_KN (STR_OPEN9X + OFS_SUBTYPE_KN)
|
||||
#define STR_SUBTYPE_MT99 (STR_OPEN9X + OFS_SUBTYPE_MT99)
|
||||
#define STR_SUBTYPE_MJXQ (STR_OPEN9X + OFS_SUBTYPE_MJXQ)
|
||||
#define STR_OPTIONS_DSM (STR_OPEN9X + OFS_OPTIONS_DSM)
|
||||
#endif
|
||||
#define STR_CURVE_TYPES (STR_OPEN9X + OFS_CURVE_TYPES)
|
||||
#define STR_VSENSORTYPES (STR_OPEN9X + OFS_VSENSORTYPES)
|
||||
#define STR_VFORMULAS (STR_OPEN9X + OFS_VFORMULAS)
|
||||
|
@ -532,6 +560,14 @@ extern const pm_char STR_GF[];
|
|||
extern const pm_char STR_FAS_OFFSET[];
|
||||
#endif
|
||||
|
||||
#if defined(MULTIMODULE)
|
||||
extern const pm_char STR_MULTI_OPTION[];
|
||||
extern const pm_char STR_MULTI_VIDFREQ[];
|
||||
extern const pm_char STR_MULTI_RFTUNE[];
|
||||
extern const pm_char STR_MULTI_AUTOBIND[];
|
||||
extern const pm_char STR_MULTI_LOWPOWER[];
|
||||
extern const pm_char STR_MULTI_DSMFRAME[];
|
||||
#endif
|
||||
#if defined(DSM2) || defined(PXX)
|
||||
extern const pm_char STR_RXNUM[];
|
||||
#endif
|
||||
|
|
|
@ -95,7 +95,7 @@
|
|||
#define TR_COUNTRYCODES TR("US""JP""EU", "Amerika\0""Japonsko""Evropa\0 ")
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS "Vyp\0""PPM\0""XJT\0""DSM2""CRSF"
|
||||
#define TR_TARANIS_PROTOCOLS "Vyp\0""PPM\0""XJT\0""DSM2""CRSF""MULT"
|
||||
|
||||
#define LEN_XJT_PROTOCOLS "\004"
|
||||
#define TR_XJT_PROTOCOLS "Vyp\0""D16\0""D8\0 ""LR12"
|
||||
|
@ -103,6 +103,44 @@
|
|||
#define LEN_DSM_PROTOCOLS "\004"
|
||||
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX"
|
||||
|
||||
#define LEN_MULTI_PROTOCOLS "\006"
|
||||
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM2\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""Custom"
|
||||
|
||||
#define LEN_SUBTYPE_FLYSKY "\004"
|
||||
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912"
|
||||
|
||||
// SUBTYPE FOR FRSKY use TR_XJT_PROTOCOLS with offset +1
|
||||
|
||||
|
||||
#define LEN_SUBTYPE_HISKY "\005"
|
||||
#define TR_SUBTYPE_HISKY "HiSky""HK310"
|
||||
|
||||
// SUBTYPE FOR DSMX use TR_DSM_PROTOCOLS with offset +1
|
||||
|
||||
#define LEN_SUBTYPE_YD717 "\007"
|
||||
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""SYMAX2\0""XINXUN\0""NIHUI\0 "
|
||||
|
||||
#define LEN_SUBTYPE_SYMAX "\003"
|
||||
#define TR_SUBTYPE_SYMAX "Std""5c\0"
|
||||
|
||||
#define LEN_SUBTYPE_CX10 "\007"
|
||||
#define TR_SUBTYPE_CX10 "Green\0 ""Blue\0 ""DM007\0 ""Q282\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
|
||||
|
||||
#define LEN_SUBTYPE_CG023 "\005"
|
||||
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
|
||||
|
||||
#define LEN_SUBTYPE_KN "\006"
|
||||
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
|
||||
|
||||
#define LEN_SUBTYPE_MT99 "\004"
|
||||
#define TR_SUBTYPE_MT99 "MT99""H7\0 ""YZ\0 "
|
||||
|
||||
#define LEN_SUBTYPE_MJXQ "\005"
|
||||
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D"
|
||||
|
||||
#define LEN_OPTIONS_DSM "\011"
|
||||
#define TR_OPTIONS_DSM " 4ch 22ms"" 5ch 22ms"" 6ch 22ms"" 7ch 22ms"" 4ch 11ms"" 5ch 11ms"" 6ch 11ms"" 7ch 11ms"" 8ch 22ms"" 9ch 22ms""10ch 22ms""11ch 22ms""12ch 22ms"
|
||||
|
||||
#define LEN_VTRIMINC "\007"
|
||||
#define TR_VTRIMINC "Expo\0 ""ExJemný""Jemný\0 ""Střední""Hrubý\0 "
|
||||
|
||||
|
@ -796,6 +834,12 @@
|
|||
#else
|
||||
#define TR_RXNUM "RX číslo"
|
||||
#endif
|
||||
#define TR_MULTI_RFTUNE INDENT "RF Freq. fine tune"
|
||||
#define TR_MULTI_VIDFREQ INDENT "Video frequency"
|
||||
#define TR_MULTI_DSMFRAME INDENT "DSM frame format"
|
||||
#define TR_MULTI_OPTION INDENT "Option value"
|
||||
#define TR_MULTI_AUTOBIND INDENT "Autobind"
|
||||
#define TR_MULTI_LOWPOWER INDENT "Low power mode"
|
||||
#define TR_SYNCMENU "[Sync]"
|
||||
#define TR_LIMIT INDENT"Limit"
|
||||
#define TR_MINRSSI "Min Rssi"
|
||||
|
|
|
@ -95,7 +95,7 @@
|
|||
#define TR_COUNTRYCODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0")
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS "AUS\0""PPM\0""XJT\0""DSM?""CRSF"
|
||||
#define TR_TARANIS_PROTOCOLS "AUS\0""PPM\0""XJT\0""DSM?""CRSF""MULT"
|
||||
|
||||
#if defined(MODULE_D16_EU_ONLY_SUPPORT)
|
||||
#define LEN_XJT_PROTOCOLS "\007"
|
||||
|
@ -108,6 +108,43 @@
|
|||
#define LEN_DSM_PROTOCOLS "\004"
|
||||
#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""Custom"
|
||||
|
||||
#define LEN_SUBTYPE_FLYSKY "\004"
|
||||
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912"
|
||||
|
||||
// SUBTYPE für FRSKY nutzt TR_XJT_PROTOCOLS mit Offset +1
|
||||
|
||||
#define LEN_SUBTYPE_HISKY "\005"
|
||||
#define TR_SUBTYPE_HISKY "HiSky""HK310"
|
||||
|
||||
// SUBTYPE für DSMX nutzt TR_DSM_PROTOCOLS mit Offset +1
|
||||
|
||||
#define LEN_SUBTYPE_YD717 "\007"
|
||||
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""SYMAX2\0""XINXUN\0""NIHUI\0 "
|
||||
|
||||
#define LEN_SUBTYPE_SYMAX "\003"
|
||||
#define TR_SUBTYPE_SYMAX "Std""5c\0"
|
||||
|
||||
#define LEN_SUBTYPE_CX10 "\007"
|
||||
#define TR_SUBTYPE_CX10 "Grün\0 ""Blau\0 ""DM007\0 ""Q282\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
|
||||
|
||||
#define LEN_SUBTYPE_CG023 "\005"
|
||||
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
|
||||
|
||||
#define LEN_SUBTYPE_KN "\006"
|
||||
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
|
||||
|
||||
#define LEN_SUBTYPE_MT99 "\004"
|
||||
#define TR_SUBTYPE_MT99 "MT99""H7\0 ""YZ\0 "
|
||||
|
||||
#define LEN_SUBTYPE_MJXQ "\005"
|
||||
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D"
|
||||
|
||||
#define LEN_OPTIONS_DSM "\011"
|
||||
#define TR_OPTIONS_DSM " 4ch 22ms"" 5ch 22ms"" 6ch 22ms"" 7ch 22ms"" 4ch 11ms"" 5ch 11ms"" 6ch 11ms"" 7ch 11ms"" 8ch 22ms"" 9ch 22ms""10ch 22ms""11ch 22ms""12ch 22ms"
|
||||
|
||||
#define LEN_VTRIMINC TR("\007", "\014") // ursprüglich "\006", "\013"
|
||||
#define TR_VTRIMINC TR("Expo ""ExFein ""Fein ""Mittel ""Grob ", "Exponentiell""Extrafein ""Fein ""Mittel ""Grob ")
|
||||
|
||||
|
@ -800,6 +837,12 @@
|
|||
#else
|
||||
#define TR_RXNUM "Empf Nr."
|
||||
#endif
|
||||
#define TR_MULTI_RFTUNE INDENT "Frequenzfeineinst."
|
||||
#define TR_MULTI_VIDFREQ INDENT "Videofrequenz"
|
||||
#define TR_MULTI_DSMFRAME INDENT "DSM Rahmenformat"
|
||||
#define TR_MULTI_OPTION INDENT "Optionswert"
|
||||
#define TR_MULTI_AUTOBIND INDENT "Autobind"
|
||||
#define TR_MULTI_LOWPOWER INDENT "Niedrige Leistung"
|
||||
#define TR_SYNCMENU "Sync [MENU]"
|
||||
#define TR_LIMIT INDENT "Grenzen"
|
||||
#define TR_MINRSSI "Min. RSSI"
|
||||
|
|
|
@ -95,7 +95,7 @@
|
|||
#define TR_COUNTRYCODES TR("US""JP""EU", "America""Japan\0 ""Europe\0")
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT"
|
||||
|
||||
#define LEN_XJT_PROTOCOLS "\004"
|
||||
#define TR_XJT_PROTOCOLS "OFF\0""D16\0""D8\0 ""LR12"
|
||||
|
@ -103,6 +103,44 @@
|
|||
#define LEN_DSM_PROTOCOLS "\004"
|
||||
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX"
|
||||
|
||||
#define LEN_MULTI_PROTOCOLS "\006"
|
||||
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM2\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""Custom"
|
||||
|
||||
#define LEN_SUBTYPE_FLYSKY "\004"
|
||||
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912"
|
||||
|
||||
// SUBTYPE FOR FRSKY use TR_XJT_PROTOCOLS with offset +1
|
||||
|
||||
|
||||
#define LEN_SUBTYPE_HISKY "\005"
|
||||
#define TR_SUBTYPE_HISKY "HiSky""HK310"
|
||||
|
||||
// SUBTYPE FOR DSMX use TR_DSM_PROTOCOLS with offset +1
|
||||
|
||||
#define LEN_SUBTYPE_YD717 "\007"
|
||||
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""SYMAX2\0""XINXUN\0""NIHUI\0 "
|
||||
|
||||
#define LEN_SUBTYPE_SYMAX "\003"
|
||||
#define TR_SUBTYPE_SYMAX "Std""5c\0"
|
||||
|
||||
#define LEN_SUBTYPE_CX10 "\007"
|
||||
#define TR_SUBTYPE_CX10 "Green\0 ""Blue\0 ""DM007\0 ""Q282\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
|
||||
|
||||
#define LEN_SUBTYPE_CG023 "\005"
|
||||
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
|
||||
|
||||
#define LEN_SUBTYPE_KN "\006"
|
||||
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
|
||||
|
||||
#define LEN_SUBTYPE_MT99 "\004"
|
||||
#define TR_SUBTYPE_MT99 "MT99""H7\0 ""YZ\0 "
|
||||
|
||||
#define LEN_SUBTYPE_MJXQ "\005"
|
||||
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D"
|
||||
|
||||
#define LEN_OPTIONS_DSM "\011"
|
||||
#define TR_OPTIONS_DSM " 4ch 22ms"" 5ch 22ms"" 6ch 22ms"" 7ch 22ms"" 4ch 11ms"" 5ch 11ms"" 6ch 11ms"" 7ch 11ms"" 8ch 22ms"" 9ch 22ms""10ch 22ms""11ch 22ms""12ch 22ms"
|
||||
|
||||
#define LEN_VTRIMINC TR("\006", "\013")
|
||||
#define TR_VTRIMINC TR("Expo\0 ""ExFine""Fine\0 ""Medium""Coarse", "Exponential""Extra Fine\0""Fine\0 ""Medium\0 ""Coarse\0 ")
|
||||
|
||||
|
@ -795,7 +833,6 @@
|
|||
#define TR_MENUINPUTS "STICKS"
|
||||
#define TR_MENULIMITS "SERVOS"
|
||||
#endif
|
||||
|
||||
#define TR_MENUCURVES "CURVES"
|
||||
#define TR_MENUCURVE "CURVE"
|
||||
#define TR_MENULOGICALSWITCH "LOGICAL SWITCH"
|
||||
|
@ -811,6 +848,12 @@
|
|||
#else
|
||||
#define TR_RXNUM "RxNum"
|
||||
#endif
|
||||
#define TR_MULTI_RFTUNE INDENT "RF Freq. fine tune"
|
||||
#define TR_MULTI_VIDFREQ INDENT "Video frequency"
|
||||
#define TR_MULTI_DSMFRAME INDENT "DSM frame format"
|
||||
#define TR_MULTI_OPTION INDENT "Option value"
|
||||
#define TR_MULTI_AUTOBIND INDENT "Autobind"
|
||||
#define TR_MULTI_LOWPOWER INDENT "Low power mode"
|
||||
#define TR_SYNCMENU "[Sync]"
|
||||
#define TR_LIMIT INDENT "Limit"
|
||||
#define TR_MINRSSI "Min Rssi"
|
||||
|
|
|
@ -95,7 +95,7 @@
|
|||
#define TR_COUNTRYCODES TR("US""JP""EU", "America""Japon\0 ""Europa\0")
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT"
|
||||
|
||||
#define LEN_XJT_PROTOCOLS "\004"
|
||||
#define TR_XJT_PROTOCOLS "OFF\0""D16\0""D8\0 ""LR12"
|
||||
|
@ -103,6 +103,44 @@
|
|||
#define LEN_DSM_PROTOCOLS "\004"
|
||||
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX"
|
||||
|
||||
#define LEN_MULTI_PROTOCOLS "\006"
|
||||
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM2\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""Custom"
|
||||
|
||||
#define LEN_SUBTYPE_FLYSKY "\004"
|
||||
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912"
|
||||
|
||||
// SUBTYPE FOR FRSKY use TR_XJT_PROTOCOLS with offset +1
|
||||
|
||||
|
||||
#define LEN_SUBTYPE_HISKY "\005"
|
||||
#define TR_SUBTYPE_HISKY "HiSky""HK310"
|
||||
|
||||
// SUBTYPE FOR DSMX use TR_DSM_PROTOCOLS with offset +1
|
||||
|
||||
#define LEN_SUBTYPE_YD717 "\007"
|
||||
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""SYMAX2\0""XINXUN\0""NIHUI\0 "
|
||||
|
||||
#define LEN_SUBTYPE_SYMAX "\003"
|
||||
#define TR_SUBTYPE_SYMAX "Std""5c\0"
|
||||
|
||||
#define LEN_SUBTYPE_CX10 "\007"
|
||||
#define TR_SUBTYPE_CX10 "Green\0 ""Blue\0 ""DM007\0 ""Q282\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
|
||||
|
||||
#define LEN_SUBTYPE_CG023 "\005"
|
||||
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
|
||||
|
||||
#define LEN_SUBTYPE_KN "\006"
|
||||
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
|
||||
|
||||
#define LEN_SUBTYPE_MT99 "\004"
|
||||
#define TR_SUBTYPE_MT99 "MT99""H7\0 ""YZ\0 "
|
||||
|
||||
#define LEN_SUBTYPE_MJXQ "\005"
|
||||
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D"
|
||||
|
||||
#define LEN_OPTIONS_DSM "\011"
|
||||
#define TR_OPTIONS_DSM " 4ch 22ms"" 5ch 22ms"" 6ch 22ms"" 7ch 22ms"" 4ch 11ms"" 5ch 11ms"" 6ch 11ms"" 7ch 11ms"" 8ch 22ms"" 9ch 22ms""10ch 22ms""11ch 22ms""12ch 22ms"
|
||||
|
||||
#define LEN_VTRIMINC TR("\006", "\013")
|
||||
#define TR_VTRIMINC TR("Expo ""ExFino""Fino ""Medio ""Grueso", "Exponencial""Extra Fino ""Fino ""Medio ""Grueso ")
|
||||
|
||||
|
@ -757,6 +795,12 @@
|
|||
#define TR_MENUSTAT "STATS"
|
||||
#define TR_MENUDEBUG "DEBUG"
|
||||
#define TR_RXNUM TR("RxNum", INDENT"Receptor No.")
|
||||
#define TR_MULTI_RFTUNE INDENT "RF Freq. fine tune"
|
||||
#define TR_MULTI_VIDFREQ INDENT "Video frequency"
|
||||
#define TR_MULTI_DSMFRAME INDENT "DSM frame format"
|
||||
#define TR_MULTI_OPTION INDENT "Option value"
|
||||
#define TR_MULTI_AUTOBIND INDENT "Autobind"
|
||||
#define TR_MULTI_LOWPOWER INDENT "Low power mode"
|
||||
#define TR_SYNCMENU "Sync " TR_ENTER
|
||||
#define TR_LIMIT INDENT"Limite"
|
||||
#define TR_MINRSSI "Min Rssi"
|
||||
|
|
|
@ -95,7 +95,7 @@
|
|||
#define TR_COUNTRYCODES TR("US""JP""EU", "Amerikk""Japani\0""Euroopp")
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT"
|
||||
|
||||
#define LEN_XJT_PROTOCOLS "\004"
|
||||
#define TR_XJT_PROTOCOLS "OFF\0""D16\0""D8\0 ""LR12"
|
||||
|
@ -103,6 +103,44 @@
|
|||
#define LEN_DSM_PROTOCOLS "\004"
|
||||
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX"
|
||||
|
||||
#define LEN_MULTI_PROTOCOLS "\006"
|
||||
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM2\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""Custom"
|
||||
|
||||
#define LEN_SUBTYPE_FLYSKY "\004"
|
||||
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912"
|
||||
|
||||
// SUBTYPE FOR FRSKY use TR_XJT_PROTOCOLS with offset +1
|
||||
|
||||
|
||||
#define LEN_SUBTYPE_HISKY "\005"
|
||||
#define TR_SUBTYPE_HISKY "HiSky""HK310"
|
||||
|
||||
// SUBTYPE FOR DSMX use TR_DSM_PROTOCOLS with offset +1
|
||||
|
||||
#define LEN_SUBTYPE_YD717 "\007"
|
||||
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""SYMAX2\0""XINXUN\0""NIHUI\0 "
|
||||
|
||||
#define LEN_SUBTYPE_SYMAX "\003"
|
||||
#define TR_SUBTYPE_SYMAX "Std""5c\0"
|
||||
|
||||
#define LEN_SUBTYPE_CX10 "\007"
|
||||
#define TR_SUBTYPE_CX10 "Green\0 ""Blue\0 ""DM007\0 ""Q282\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
|
||||
|
||||
#define LEN_SUBTYPE_CG023 "\005"
|
||||
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
|
||||
|
||||
#define LEN_SUBTYPE_KN "\006"
|
||||
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
|
||||
|
||||
#define LEN_SUBTYPE_MT99 "\004"
|
||||
#define TR_SUBTYPE_MT99 "MT99""H7\0 ""YZ\0 "
|
||||
|
||||
#define LEN_SUBTYPE_MJXQ "\005"
|
||||
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D"
|
||||
|
||||
#define LEN_OPTIONS_DSM "\011"
|
||||
#define TR_OPTIONS_DSM " 4ch 22ms"" 5ch 22ms"" 6ch 22ms"" 7ch 22ms"" 4ch 11ms"" 5ch 11ms"" 6ch 11ms"" 7ch 11ms"" 8ch 22ms"" 9ch 22ms""10ch 22ms""11ch 22ms""12ch 22ms"
|
||||
|
||||
#define LEN_VTRIMINC TR("\006", "\013")
|
||||
#define TR_VTRIMINC TR("Expo\0 ""EriHie""Hieno\0""Keski\0""Karkea", "Exponential""Eri Hieno\0 ""Hieno\0 ""Keski\0 ""Karkea\0 ")
|
||||
|
||||
|
@ -757,6 +795,12 @@
|
|||
#define TR_MENUSTAT "STATS"
|
||||
#define TR_MENUDEBUG "DEBUG"
|
||||
#define TR_RXNUM TR("RxNum", INDENT"Receiver No.")
|
||||
#define TR_MULTI_RFTUNE INDENT "RF Freq. fine tune"
|
||||
#define TR_MULTI_VIDFREQ INDENT "Video frequency"
|
||||
#define TR_MULTI_DSMFRAME INDENT "DSM frame format"
|
||||
#define TR_MULTI_OPTION INDENT "Option value"
|
||||
#define TR_MULTI_AUTOBIND INDENT "Autobind"
|
||||
#define TR_MULTI_LOWPOWER INDENT "Low power mode"
|
||||
#define TR_SYNCMENU "[Sync]"
|
||||
#define TR_LIMIT INDENT"Limit"
|
||||
#define TR_MINRSSI "Min Rssi"
|
||||
|
|
|
@ -95,7 +95,7 @@
|
|||
#define TR_COUNTRYCODES TR("US""JP""EU", "USA\0 ""Japon\0""Europe")
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT"
|
||||
|
||||
#define LEN_XJT_PROTOCOLS "\004"
|
||||
#define TR_XJT_PROTOCOLS "OFF\0""D16\0""D8\0 ""LR12"
|
||||
|
@ -103,6 +103,44 @@
|
|||
#define LEN_DSM_PROTOCOLS "\004"
|
||||
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX"
|
||||
|
||||
#define LEN_MULTI_PROTOCOLS "\006"
|
||||
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM2\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""Custom"
|
||||
|
||||
#define LEN_SUBTYPE_FLYSKY "\004"
|
||||
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912"
|
||||
|
||||
// SUBTYPE FOR FRSKY use TR_XJT_PROTOCOLS with offset +1
|
||||
|
||||
|
||||
#define LEN_SUBTYPE_HISKY "\005"
|
||||
#define TR_SUBTYPE_HISKY "HiSky""HK310"
|
||||
|
||||
// SUBTYPE FOR DSMX use TR_DSM_PROTOCOLS with offset +1
|
||||
|
||||
#define LEN_SUBTYPE_YD717 "\007"
|
||||
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""SYMAX2\0""XINXUN\0""NIHUI\0 "
|
||||
|
||||
#define LEN_SUBTYPE_SYMAX "\003"
|
||||
#define TR_SUBTYPE_SYMAX "Std""5c\0"
|
||||
|
||||
#define LEN_SUBTYPE_CX10 "\007"
|
||||
#define TR_SUBTYPE_CX10 "Green\0 ""Blue\0 ""DM007\0 ""Q282\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
|
||||
|
||||
#define LEN_SUBTYPE_CG023 "\005"
|
||||
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
|
||||
|
||||
#define LEN_SUBTYPE_KN "\006"
|
||||
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
|
||||
|
||||
#define LEN_SUBTYPE_MT99 "\004"
|
||||
#define TR_SUBTYPE_MT99 "MT99""H7\0 ""YZ\0 "
|
||||
|
||||
#define LEN_SUBTYPE_MJXQ "\005"
|
||||
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D"
|
||||
|
||||
#define LEN_OPTIONS_DSM "\011"
|
||||
#define TR_OPTIONS_DSM " 4ch 22ms"" 5ch 22ms"" 6ch 22ms"" 7ch 22ms"" 4ch 11ms"" 5ch 11ms"" 6ch 11ms"" 7ch 11ms"" 8ch 22ms"" 9ch 22ms""10ch 22ms""11ch 22ms""12ch 22ms"
|
||||
|
||||
#define LEN_VTRIMINC TR("\006", "\013")
|
||||
#define TR_VTRIMINC TR("Expo\0 ""ExFin\0""Fin\0 ""Moyen\0""Gros\0 ","Exponentiel""Extra Fin\0 ""Fin\0 ""Moyen\0 ""Grossier\0 ")
|
||||
|
||||
|
@ -787,6 +825,12 @@
|
|||
#define TR_MENUSTAT TR("STATS", "STATISTIQUES")
|
||||
#define TR_MENUDEBUG "DEBUG"
|
||||
#define TR_RXNUM TR(INDENT "NumRx", INDENT "No. récepteur")
|
||||
#define TR_MULTI_RFTUNE INDENT "RF Freq. fine tune"
|
||||
#define TR_MULTI_VIDFREQ INDENT "Video frequency"
|
||||
#define TR_MULTI_DSMFRAME INDENT "DSM frame format"
|
||||
#define TR_MULTI_OPTION INDENT "Option value"
|
||||
#define TR_MULTI_AUTOBIND INDENT "Autobind"
|
||||
#define TR_MULTI_LOWPOWER INDENT "Low power mode"
|
||||
#define TR_SYNCMENU "Sync [MENU]"
|
||||
#define TR_LIMIT INDENT "Limite"
|
||||
#define TR_MINRSSI "RSSI Min."
|
||||
|
|
|
@ -95,7 +95,7 @@
|
|||
#define TR_COUNTRYCODES TR("US""JP""EU", "America""Japan\0 ""Europa\0")
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT"
|
||||
|
||||
#define LEN_XJT_PROTOCOLS "\004"
|
||||
#define TR_XJT_PROTOCOLS "OFF\0""D16\0""D8\0 ""LR12"
|
||||
|
@ -103,6 +103,44 @@
|
|||
#define LEN_DSM_PROTOCOLS "\004"
|
||||
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX"
|
||||
|
||||
#define LEN_MULTI_PROTOCOLS "\006"
|
||||
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM2\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""Custom"
|
||||
|
||||
#define LEN_SUBTYPE_FLYSKY "\004"
|
||||
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912"
|
||||
|
||||
// SUBTYPE FOR FRSKY use TR_XJT_PROTOCOLS with offset +1
|
||||
|
||||
|
||||
#define LEN_SUBTYPE_HISKY "\005"
|
||||
#define TR_SUBTYPE_HISKY "HiSky""HK310"
|
||||
|
||||
// SUBTYPE FOR DSMX use TR_DSM_PROTOCOLS with offset +1
|
||||
|
||||
#define LEN_SUBTYPE_YD717 "\007"
|
||||
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""SYMAX2\0""XINXUN\0""NIHUI\0 "
|
||||
|
||||
#define LEN_SUBTYPE_SYMAX "\003"
|
||||
#define TR_SUBTYPE_SYMAX "Std""5c\0"
|
||||
|
||||
#define LEN_SUBTYPE_CX10 "\007"
|
||||
#define TR_SUBTYPE_CX10 "Green\0 ""Blue\0 ""DM007\0 ""Q282\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
|
||||
|
||||
#define LEN_SUBTYPE_CG023 "\005"
|
||||
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
|
||||
|
||||
#define LEN_SUBTYPE_KN "\006"
|
||||
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
|
||||
|
||||
#define LEN_SUBTYPE_MT99 "\004"
|
||||
#define TR_SUBTYPE_MT99 "MT99""H7\0 ""YZ\0 "
|
||||
|
||||
#define LEN_SUBTYPE_MJXQ "\005"
|
||||
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D"
|
||||
|
||||
#define LEN_OPTIONS_DSM "\011"
|
||||
#define TR_OPTIONS_DSM " 4ch 22ms"" 5ch 22ms"" 6ch 22ms"" 7ch 22ms"" 4ch 11ms"" 5ch 11ms"" 6ch 11ms"" 7ch 11ms"" 8ch 22ms"" 9ch 22ms""10ch 22ms""11ch 22ms""12ch 22ms"
|
||||
|
||||
#define LEN_VTRIMINC "\006"
|
||||
#define TR_VTRIMINC "Exp ""ExFine""Fine ""Medio ""Ampio "
|
||||
|
||||
|
@ -795,6 +833,12 @@
|
|||
#else
|
||||
#define TR_RXNUM "RxNum"
|
||||
#endif
|
||||
#define TR_MULTI_RFTUNE INDENT "RF Freq. fine tune"
|
||||
#define TR_MULTI_VIDFREQ INDENT "Video frequency"
|
||||
#define TR_MULTI_DSMFRAME INDENT "DSM frame format"
|
||||
#define TR_MULTI_OPTION INDENT "Option value"
|
||||
#define TR_MULTI_AUTOBIND INDENT "Autobind"
|
||||
#define TR_MULTI_LOWPOWER INDENT "Low power mode"
|
||||
#define TR_SYNCMENU "[Sync]"
|
||||
#define TR_LIMIT INDENT "Limiti"
|
||||
#define TR_MINRSSI "Min Rssi"
|
||||
|
|
|
@ -96,7 +96,7 @@
|
|||
#define TR_COUNTRYCODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0")
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS "UIT\0""PPM\0""XJT\0""DSM2""CRSF"
|
||||
#define TR_TARANIS_PROTOCOLS "UIT\0""PPM\0""XJT\0""DSM2""CRSF""MULT"
|
||||
|
||||
#define LEN_XJT_PROTOCOLS "\004"
|
||||
#define TR_XJT_PROTOCOLS "OFF\0""D16\0""D8\0 ""LR12"
|
||||
|
@ -104,6 +104,44 @@
|
|||
#define LEN_DSM_PROTOCOLS "\004"
|
||||
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX"
|
||||
|
||||
#define LEN_MULTI_PROTOCOLS "\006"
|
||||
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM2\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""Custom"
|
||||
|
||||
#define LEN_SUBTYPE_FLYSKY "\004"
|
||||
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912"
|
||||
|
||||
// SUBTYPE FOR FRSKY use TR_XJT_PROTOCOLS with offset +1
|
||||
|
||||
|
||||
#define LEN_SUBTYPE_HISKY "\005"
|
||||
#define TR_SUBTYPE_HISKY "HiSky""HK310"
|
||||
|
||||
// SUBTYPE FOR DSMX use TR_DSM_PROTOCOLS with offset +1
|
||||
|
||||
#define LEN_SUBTYPE_YD717 "\007"
|
||||
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""SYMAX2\0""XINXUN\0""NIHUI\0 "
|
||||
|
||||
#define LEN_SUBTYPE_SYMAX "\003"
|
||||
#define TR_SUBTYPE_SYMAX "Std""5c\0"
|
||||
|
||||
#define LEN_SUBTYPE_CX10 "\007"
|
||||
#define TR_SUBTYPE_CX10 "Green\0 ""Blue\0 ""DM007\0 ""Q282\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
|
||||
|
||||
#define LEN_SUBTYPE_CG023 "\005"
|
||||
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
|
||||
|
||||
#define LEN_SUBTYPE_KN "\006"
|
||||
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
|
||||
|
||||
#define LEN_SUBTYPE_MT99 "\004"
|
||||
#define TR_SUBTYPE_MT99 "MT99""H7\0 ""YZ\0 "
|
||||
|
||||
#define LEN_SUBTYPE_MJXQ "\005"
|
||||
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D"
|
||||
|
||||
#define LEN_OPTIONS_DSM "\011"
|
||||
#define TR_OPTIONS_DSM " 4ch 22ms"" 5ch 22ms"" 6ch 22ms"" 7ch 22ms"" 4ch 11ms"" 5ch 11ms"" 6ch 11ms"" 7ch 11ms"" 8ch 22ms"" 9ch 22ms""10ch 22ms""11ch 22ms""12ch 22ms"
|
||||
|
||||
#define LEN_VTRIMINC TR("\006", "\014")
|
||||
#define TR_VTRIMINC TR("Expo\0 ""ExFijn""Fijn\0 ""Medium""Grof\0 ", "Exponentieel""Extra Fijn\0 ""Fijn\0 ""Medium\0 ""Grof\0 ")
|
||||
|
||||
|
@ -809,6 +847,12 @@
|
|||
#else
|
||||
#define TR_RXNUM "RxNum"
|
||||
#endif
|
||||
#define TR_MULTI_RFTUNE INDENT "RF Freq. fine tune"
|
||||
#define TR_MULTI_VIDFREQ INDENT "Video frequency"
|
||||
#define TR_MULTI_DSMFRAME INDENT "DSM frame format"
|
||||
#define TR_MULTI_OPTION INDENT "Option value"
|
||||
#define TR_MULTI_AUTOBIND INDENT "Autobind"
|
||||
#define TR_MULTI_LOWPOWER INDENT "Low power mode"
|
||||
#define TR_SYNCMENU "Sync [MENU]"
|
||||
#define TR_LIMIT INDENT "Grenzen"
|
||||
#define TR_MINRSSI "Min. RSSI"
|
||||
|
|
|
@ -95,7 +95,7 @@
|
|||
#define TR_COUNTRYCODES TR("US""JP""EU", "America""Japan\0 ""Europe\0")
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT"
|
||||
|
||||
#define LEN_XJT_PROTOCOLS "\004"
|
||||
#define TR_XJT_PROTOCOLS "OFF\0""D16\0""D8\0 ""LR12"
|
||||
|
@ -103,6 +103,44 @@
|
|||
#define LEN_DSM_PROTOCOLS "\004"
|
||||
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX"
|
||||
|
||||
#define LEN_MULTI_PROTOCOLS "\006"
|
||||
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM2\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""Custom"
|
||||
|
||||
#define LEN_SUBTYPE_FLYSKY "\004"
|
||||
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912"
|
||||
|
||||
// SUBTYPE FOR FRSKY use TR_XJT_PROTOCOLS with offset +1
|
||||
|
||||
#define LEN_SUBTYPE_HISKY "\005"
|
||||
#define TR_SUBTYPE_HISKY "HiSky""HK310"
|
||||
|
||||
// SUBTYPE FOR DSMX use TR_DSM_PROTOCOLS with offset +1
|
||||
|
||||
#define LEN_SUBTYPE_YD717 "\007"
|
||||
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""SYMAX2\0""XINXUN\0""NIHUI\0 "
|
||||
|
||||
#define LEN_SUBTYPE_SYMAX "\003"
|
||||
#define TR_SUBTYPE_SYMAX "Std""5c\0"
|
||||
|
||||
#define LEN_SUBTYPE_CX10 "\007"
|
||||
#define TR_SUBTYPE_CX10 "Green\0 ""Blue\0 ""DM007\0 ""Q282\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
|
||||
|
||||
#define LEN_SUBTYPE_CG023 "\005"
|
||||
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
|
||||
|
||||
#define LEN_SUBTYPE_KN "\006"
|
||||
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
|
||||
|
||||
#define LEN_SUBTYPE_MT99 "\004"
|
||||
#define TR_SUBTYPE_MT99 "MT99""H7\0 ""YZ\0 "
|
||||
|
||||
#define LEN_SUBTYPE_MJXQ "\005"
|
||||
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D"
|
||||
|
||||
#define LEN_OPTIONS_DSM "\011"
|
||||
#define TR_OPTIONS_DSM " 4ch 22ms"" 5ch 22ms"" 6ch 22ms"" 7ch 22ms"" 4ch 11ms"" 5ch 11ms"" 6ch 11ms"" 7ch 11ms"" 8ch 22ms"" 9ch 22ms""10ch 22ms""11ch 22ms""12ch 22ms"
|
||||
|
||||
|
||||
#define LEN_VTRIMINC "\006"
|
||||
#define TR_VTRIMINC "Expo ""ExFino""Fino ""Medio ""Largo "
|
||||
|
||||
|
@ -752,6 +790,12 @@
|
|||
#define TR_MENUDEBUG "DEPURAR"
|
||||
#define TR_RXNUM "RxNum"
|
||||
#define TR_SYNCMENU "Sync [MENU]"
|
||||
#define TR_MULTI_RFTUNE INDENT "RF Freq. fine tune"
|
||||
#define TR_MULTI_VIDFREQ INDENT "Video frequency"
|
||||
#define TR_MULTI_DSMFRAME INDENT "DSM frame format"
|
||||
#define TR_MULTI_OPTION INDENT "Option value"
|
||||
#define TR_MULTI_AUTOBIND INDENT "Autobind"
|
||||
#define TR_MULTI_LOWPOWER INDENT "Low power mode"
|
||||
#define TR_LIMIT INDENT"Limite"
|
||||
#define TR_MINRSSI "Min Rssi"
|
||||
#define TR_LATITUDE "Latitude"
|
||||
|
|
|
@ -95,7 +95,7 @@
|
|||
#define TR_COUNTRYCODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0")
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS "Av\0 ""PPM\0""XJT\0""DSM2""CRSF"
|
||||
#define TR_TARANIS_PROTOCOLS "Av\0 ""PPM\0""XJT\0""DSM2""CRSF""MULT"
|
||||
|
||||
#define LEN_XJT_PROTOCOLS "\004"
|
||||
#define TR_XJT_PROTOCOLS "Av\0 ""D16\0""D8\0 ""LR12"
|
||||
|
@ -103,6 +103,43 @@
|
|||
#define LEN_DSM_PROTOCOLS "\004"
|
||||
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX"
|
||||
|
||||
#define LEN_MULTI_PROTOCOLS "\006"
|
||||
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM2\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""Custom"
|
||||
|
||||
#define LEN_SUBTYPE_FLYSKY "\004"
|
||||
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912"
|
||||
|
||||
// SUBTYPE FOR FRSKY use TR_XJT_PROTOCOLS with offset +1
|
||||
|
||||
#define LEN_SUBTYPE_HISKY "\005"
|
||||
#define TR_SUBTYPE_HISKY "HiSky""HK310"
|
||||
|
||||
// SUBTYPE FOR DSMX use TR_DSM_PROTOCOLS with offset +1
|
||||
|
||||
#define LEN_SUBTYPE_YD717 "\007"
|
||||
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""SYMAX2\0""XINXUN\0""NIHUI\0 "
|
||||
|
||||
#define LEN_SUBTYPE_SYMAX "\003"
|
||||
#define TR_SUBTYPE_SYMAX "Std""5c\0"
|
||||
|
||||
#define LEN_SUBTYPE_CX10 "\007"
|
||||
#define TR_SUBTYPE_CX10 "Green\0 ""Blue\0 ""DM007\0 ""Q282\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
|
||||
|
||||
#define LEN_SUBTYPE_CG023 "\005"
|
||||
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
|
||||
|
||||
#define LEN_SUBTYPE_KN "\006"
|
||||
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
|
||||
|
||||
#define LEN_SUBTYPE_MT99 "\004"
|
||||
#define TR_SUBTYPE_MT99 "MT99""H7\0 ""YZ\0 "
|
||||
|
||||
#define LEN_SUBTYPE_MJXQ "\005"
|
||||
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D"
|
||||
|
||||
#define LEN_OPTIONS_DSM "\011"
|
||||
#define TR_OPTIONS_DSM " 4ch 22ms"" 5ch 22ms"" 6ch 22ms"" 7ch 22ms"" 4ch 11ms"" 5ch 11ms"" 6ch 11ms"" 7ch 11ms"" 8ch 22ms"" 9ch 22ms""10ch 22ms""11ch 22ms""12ch 22ms"
|
||||
|
||||
#define LEN_VTRIMINC TR("\006","\014")
|
||||
#define TR_VTRIMINC TR("Expo\0 ""xFin\0 ""Fin\0 ""Medium""Grov\0 ","Exponentiell""Extra Fin\0 ""Fin\0 ""Medium\0 ""Grov\0 ")
|
||||
|
||||
|
@ -809,6 +846,12 @@
|
|||
#define TR_RXNUM "RxNum"
|
||||
#endif
|
||||
#define TR_SYNCMENU "Synk [MENU]"
|
||||
#define TR_MULTI_RFTUNE INDENT "RF Freq. fine tune"
|
||||
#define TR_MULTI_VIDFREQ INDENT "Video frequency"
|
||||
#define TR_MULTI_DSMFRAME INDENT "DSM frame format"
|
||||
#define TR_MULTI_OPTION INDENT "Option value"
|
||||
#define TR_MULTI_AUTOBIND INDENT "Autobind"
|
||||
#define TR_MULTI_LOWPOWER INDENT "Low power mode"
|
||||
#define TR_LIMIT INDENT "Nivå"
|
||||
#define TR_MINRSSI "Min Rssi"
|
||||
#define TR_LATITUDE "Breddgrad"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue