mirror of
https://github.com/opentx/opentx.git
synced 2025-07-26 17:55:19 +03:00
parent
2d207b528a
commit
23e2e3743c
20 changed files with 163 additions and 259 deletions
|
@ -97,7 +97,6 @@ enum MenuModelSetupItems {
|
|||
#endif
|
||||
ITEM_MODEL_EXTERNAL_MODULE_FAILSAFE,
|
||||
ITEM_MODEL_EXTERNAL_MODULE_OPTIONS,
|
||||
ITEM_MODEL_EXTERNAL_MODULE_BIND_OPTIONS,
|
||||
#if defined(MULTIMODULE)
|
||||
ITEM_MODEL_EXTERNAL_MODULE_AUTOBIND,
|
||||
#endif
|
||||
|
@ -220,27 +219,7 @@ void onBindMenu(const char * result)
|
|||
{
|
||||
uint8_t moduleIdx = CURRENT_MODULE_EDITED(menuVerticalPosition);
|
||||
|
||||
if (result == STR_BINDING_25MW_CH1_8_TELEM_OFF) {
|
||||
g_model.moduleData[moduleIdx].pxx.power = R9M_LBT_POWER_25;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_telem_off = true;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = false;
|
||||
}
|
||||
else if (result == STR_BINDING_25MW_CH1_8_TELEM_ON) {
|
||||
g_model.moduleData[moduleIdx].pxx.power = R9M_LBT_POWER_25;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_telem_off = false;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = false;
|
||||
}
|
||||
else if (result == STR_BINDING_500MW_CH1_8_TELEM_OFF) {
|
||||
g_model.moduleData[moduleIdx].pxx.power = R9M_LBT_POWER_500;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_telem_off = true;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = false;
|
||||
}
|
||||
else if (result == STR_BINDING_500MW_CH9_16_TELEM_OFF) {
|
||||
g_model.moduleData[moduleIdx].pxx.power = R9M_LBT_POWER_500;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_telem_off = true;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = true;
|
||||
}
|
||||
else if (result == STR_BINDING_1_8_TELEM_ON) {
|
||||
if (result == STR_BINDING_1_8_TELEM_ON) {
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_telem_off = false;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = false;
|
||||
}
|
||||
|
@ -275,6 +254,10 @@ void menuModelSetup(event_t event)
|
|||
}
|
||||
#endif
|
||||
|
||||
#if defined(CPUARM)
|
||||
static uint8_t selectedPxxPower = g_model.moduleData[EXTERNAL_MODULE].pxx.power; //TODO could go to the reusable struct
|
||||
#endif
|
||||
|
||||
#if defined(PCBXLITE)
|
||||
MENU_TAB({ HEADER_LINE_COLUMNS 0, TIMER_ROWS, TIMER_ROWS, TIMER_ROWS, 0, 1, 0, 0, 0, 0, 0, CASE_CPUARM(LABEL(PreflightCheck)) CASE_CPUARM(0) 0, SW_WARN_ROWS, POT_WARN_ITEMS(), NUM_STICKS + NUM_POTS + NUM_SLIDERS + NUM_ROTARY_ENCODERS - 1, 0,
|
||||
LABEL(InternalModule),
|
||||
|
@ -292,7 +275,6 @@ void menuModelSetup(event_t event)
|
|||
OUTPUT_TYPE_ROWS()
|
||||
FAILSAFE_ROWS(EXTERNAL_MODULE),
|
||||
EXTERNAL_MODULE_OPTION_ROW,
|
||||
(IS_MODULE_R9M_LBT(EXTERNAL_MODULE) ? (uint8_t)0 : HIDDEN_ROW),
|
||||
MULTIMODULE_MODULE_ROWS
|
||||
EXTERNAL_MODULE_POWER_ROW,
|
||||
EXTRA_MODULE_ROWS
|
||||
|
@ -313,7 +295,6 @@ void menuModelSetup(event_t event)
|
|||
OUTPUT_TYPE_ROWS()
|
||||
FAILSAFE_ROWS(EXTERNAL_MODULE),
|
||||
EXTERNAL_MODULE_OPTION_ROW,
|
||||
(IS_MODULE_R9M_LBT(EXTERNAL_MODULE) ? (uint8_t)0 : HIDDEN_ROW),
|
||||
MULTIMODULE_MODULE_ROWS
|
||||
EXTERNAL_MODULE_POWER_ROW,
|
||||
EXTRA_MODULE_ROWS
|
||||
|
@ -329,7 +310,6 @@ void menuModelSetup(event_t event)
|
|||
OUTPUT_TYPE_ROWS()
|
||||
FAILSAFE_ROWS(EXTERNAL_MODULE),
|
||||
EXTERNAL_MODULE_OPTION_ROW,
|
||||
(IS_MODULE_R9M_LBT(EXTERNAL_MODULE) ? (uint8_t)0 : HIDDEN_ROW),
|
||||
MULTIMODULE_MODULE_ROWS
|
||||
EXTERNAL_MODULE_POWER_ROW,
|
||||
EXTRA_MODULE_ROWS
|
||||
|
@ -858,7 +838,7 @@ void menuModelSetup(event_t event)
|
|||
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);
|
||||
else if (IS_MODULE_R9M(EXTERNAL_MODULE))
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+5*FW, y, STR_R9M_MODES, g_model.moduleData[EXTERNAL_MODULE].subType, (menuHorizontalPosition==1 ? attr : 0));
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+5*FW, y, STR_R9M_REGION, g_model.moduleData[EXTERNAL_MODULE].subType, (menuHorizontalPosition==1 ? attr : 0));
|
||||
#if defined(MULTIMODULE)
|
||||
else if (IS_MODULE_MULTIMODULE(EXTERNAL_MODULE)) {
|
||||
int multi_rfProto = g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false);
|
||||
|
@ -1148,20 +1128,21 @@ void menuModelSetup(event_t event)
|
|||
if (IS_MODULE_R9M(moduleIdx) || (IS_MODULE_XJT(moduleIdx) && g_model.moduleData[moduleIdx].rfProtocol== RF_PROTO_X16)) {
|
||||
if (EVT_KEY_MASK(event) == KEY_ENTER) {
|
||||
killEvents(event);
|
||||
uint8_t default_selection;
|
||||
uint8_t default_selection = 0; // R9M_LBT should default to 0 as available options are variables
|
||||
if (IS_MODULE_R9M_LBT(moduleIdx)) {
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_25MW_CH1_8_TELEM_OFF);
|
||||
if (!IS_TELEMETRY_INTERNAL_MODULE())
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_25MW_CH1_8_TELEM_ON);
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_500MW_CH1_8_TELEM_OFF);
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_500MW_CH9_16_TELEM_OFF);
|
||||
default_selection = 2;
|
||||
}
|
||||
else {
|
||||
if (!(IS_TELEMETRY_INTERNAL_MODULE() && moduleIdx == EXTERNAL_MODULE))
|
||||
if (BIND_TELEM_ALLOWED(moduleIdx))
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_1_8_TELEM_ON);
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_1_8_TELEM_OFF);
|
||||
if (!(IS_TELEMETRY_INTERNAL_MODULE() && moduleIdx == EXTERNAL_MODULE))
|
||||
if (BIND_TELEM_ALLOWED(moduleIdx) && BIND_CH9TO16_ALLOWED(moduleIdx))
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_9_16_TELEM_ON);
|
||||
if (BIND_CH9TO16_ALLOWED(moduleIdx))
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_9_16_TELEM_OFF);
|
||||
}
|
||||
else {
|
||||
if (BIND_TELEM_ALLOWED(moduleIdx))
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_1_8_TELEM_ON);
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_1_8_TELEM_OFF);
|
||||
if (BIND_TELEM_ALLOWED(moduleIdx))
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_9_16_TELEM_ON);
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_9_16_TELEM_OFF);
|
||||
default_selection = g_model.moduleData[INTERNAL_MODULE].pxx.receiver_telem_off + (g_model.moduleData[INTERNAL_MODULE].pxx.receiver_channel_9_16 << 1);
|
||||
|
@ -1321,37 +1302,28 @@ void menuModelSetup(event_t event)
|
|||
break;
|
||||
}
|
||||
|
||||
case ITEM_MODEL_EXTERNAL_MODULE_BIND_OPTIONS:
|
||||
{
|
||||
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
|
||||
|
||||
lcdDrawTextAlignedLeft(y, INDENT "Mode:");
|
||||
if (g_model.moduleData[moduleIdx].pxx.power == R9M_LBT_POWER_25) {
|
||||
if(g_model.moduleData[moduleIdx].pxx.receiver_telem_off == true)
|
||||
lcdDrawText(lcdLastRightPos+1, y, STR_BINDING_25MW_CH1_8_TELEM_OFF);
|
||||
else
|
||||
lcdDrawText(lcdLastRightPos+1, y, STR_BINDING_25MW_CH1_8_TELEM_ON);
|
||||
}
|
||||
else {
|
||||
if(g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 == true)
|
||||
lcdDrawText(lcdLastRightPos+1, y, STR_BINDING_500MW_CH9_16_TELEM_OFF);
|
||||
else
|
||||
lcdDrawText(lcdLastRightPos+1, y, STR_BINDING_500MW_CH1_8_TELEM_OFF);
|
||||
}
|
||||
if (attr) REPEAT_LAST_CURSOR_MOVE();
|
||||
}
|
||||
|
||||
|
||||
case ITEM_MODEL_EXTERNAL_MODULE_POWER:
|
||||
{
|
||||
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
|
||||
if (IS_MODULE_R9M_FCC(moduleIdx)) {
|
||||
// Power selection is only available on R9M FCC
|
||||
if (IS_MODULE_R9M(moduleIdx)) {
|
||||
lcdDrawTextAlignedLeft(y, TR_MULTI_RFPOWER);
|
||||
if(IS_MODULE_R9M_FCC(moduleIdx)) {
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_FCC_POWER_VALUES, g_model.moduleData[moduleIdx].pxx.power, LEFT | attr);
|
||||
if (attr)
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].pxx.power, 0, R9M_FCC_POWER_MAX);
|
||||
}
|
||||
else {
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_LBT_POWER_VALUES, selectedPxxPower, LEFT | attr);
|
||||
if (attr) {
|
||||
CHECK_INCDEC_MODELVAR(event, selectedPxxPower, 0, R9M_LBT_POWER_MAX);
|
||||
}
|
||||
if (attr && editMode == 0 && selectedPxxPower != g_model.moduleData[moduleIdx].pxx.power) {
|
||||
if((selectedPxxPower + g_model.moduleData[moduleIdx].pxx.power) < 5) //switching between mode 2 and 3 does not require rebind
|
||||
POPUP_WARNING(STR_REBIND);
|
||||
g_model.moduleData[moduleIdx].pxx.power = selectedPxxPower;
|
||||
}
|
||||
}
|
||||
}
|
||||
#if defined(MULTIMODULE)
|
||||
else if (IS_MODULE_MULTIMODULE(moduleIdx)) {
|
||||
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);
|
||||
|
|
|
@ -84,7 +84,6 @@ enum MenuModelSetupItems {
|
|||
ITEM_MODEL_EXTERNAL_MODULE_BIND,
|
||||
ITEM_MODEL_EXTERNAL_MODULE_FAILSAFE,
|
||||
ITEM_MODEL_EXTERNAL_MODULE_OPTIONS,
|
||||
ITEM_MODEL_EXTERNAL_MODULE_BIND_OPTIONS,
|
||||
#if defined(MULTIMODULE)
|
||||
ITEM_MODEL_EXTERNAL_MODULE_AUTOBIND,
|
||||
#endif
|
||||
|
@ -110,27 +109,7 @@ void onBindMenu(const char * result)
|
|||
{
|
||||
uint8_t moduleIdx = CURRENT_MODULE_EDITED(menuVerticalPosition);
|
||||
|
||||
if (result == STR_BINDING_25MW_CH1_8_TELEM_OFF) {
|
||||
g_model.moduleData[moduleIdx].pxx.power = R9M_LBT_POWER_25;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_telem_off = true;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = false;
|
||||
}
|
||||
else if (result == STR_BINDING_25MW_CH1_8_TELEM_ON) {
|
||||
g_model.moduleData[moduleIdx].pxx.power = R9M_LBT_POWER_25;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_telem_off = false;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = false;
|
||||
}
|
||||
else if (result == STR_BINDING_500MW_CH1_8_TELEM_OFF) {
|
||||
g_model.moduleData[moduleIdx].pxx.power = R9M_LBT_POWER_500;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_telem_off = true;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = false;
|
||||
}
|
||||
else if (result == STR_BINDING_500MW_CH9_16_TELEM_OFF) {
|
||||
g_model.moduleData[moduleIdx].pxx.power = R9M_LBT_POWER_500;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_telem_off = true;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = true;
|
||||
}
|
||||
else if (result == STR_BINDING_1_8_TELEM_ON) {
|
||||
if (result == STR_BINDING_1_8_TELEM_ON) {
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_telem_off = false;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = false;
|
||||
}
|
||||
|
@ -298,6 +277,7 @@ void menuModelSetup(event_t event)
|
|||
{
|
||||
horzpos_t l_posHorz = menuHorizontalPosition;
|
||||
bool CURSOR_ON_CELL = (menuHorizontalPosition >= 0);
|
||||
static uint8_t selectedPxxPower = g_model.moduleData[EXTERNAL_MODULE].pxx.power; //TODO could go to the reusable struct
|
||||
|
||||
MENU_TAB({ 0, 0, TIMERS_ROWS, TOPLCD_ROWS 0, 1, 0, 0,
|
||||
LABEL(Throttle), 0, 0, 0,
|
||||
|
@ -314,7 +294,6 @@ void menuModelSetup(event_t event)
|
|||
((IS_MODULE_XJT(EXTERNAL_MODULE) && !HAS_RF_PROTOCOL_FAILSAFE(g_model.moduleData[EXTERNAL_MODULE].rfProtocol)) || IS_MODULE_SBUS(EXTERNAL_MODULE)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_PXX(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE) || IS_MODULE_MULTIMODULE(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW,
|
||||
FAILSAFE_ROWS(EXTERNAL_MODULE),
|
||||
EXTERNAL_MODULE_OPTION_ROW,
|
||||
(IS_MODULE_R9M_LBT(EXTERNAL_MODULE) ? (uint8_t)0 : HIDDEN_ROW),
|
||||
MULTIMODULE_MODULE_ROWS
|
||||
EXTERNAL_MODULE_POWER_ROW,
|
||||
LABEL(Trainer), 0, TRAINER_LINE1_ROWS, TRAINER_LINE2_ROWS});
|
||||
|
@ -751,7 +730,7 @@ void menuModelSetup(event_t event)
|
|||
else if (IS_MODULE_DSM2(EXTERNAL_MODULE))
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_3RD_COLUMN, y, STR_DSM_PROTOCOLS, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, menuHorizontalPosition==1 ? attr : 0);
|
||||
else if (IS_MODULE_R9M(EXTERNAL_MODULE))
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_3RD_COLUMN, y, STR_R9M_MODES, g_model.moduleData[EXTERNAL_MODULE].subType, (menuHorizontalPosition==1 ? attr : 0));
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_3RD_COLUMN, y, STR_R9M_REGION, g_model.moduleData[EXTERNAL_MODULE].subType, (menuHorizontalPosition==1 ? attr : 0));
|
||||
#if defined(MULTIMODULE)
|
||||
else if (IS_MODULE_MULTIMODULE(EXTERNAL_MODULE)) {
|
||||
uint8_t multi_rfProto = g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false);
|
||||
|
@ -1009,20 +988,21 @@ void menuModelSetup(event_t event)
|
|||
if (l_posHorz == 1) {
|
||||
if (IS_MODULE_R9M(moduleIdx) || (IS_MODULE_XJT(moduleIdx) && g_model.moduleData[moduleIdx].rfProtocol== RF_PROTO_X16)) {
|
||||
if (event == EVT_KEY_BREAK(KEY_ENTER)) {
|
||||
uint8_t default_selection;
|
||||
uint8_t default_selection = 0; // R9M_LBT should default to 0 as available options are variables
|
||||
if (IS_MODULE_R9M_LBT(moduleIdx)) {
|
||||
if (!IS_TELEMETRY_INTERNAL_MODULE())
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_25MW_CH1_8_TELEM_ON);
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_25MW_CH1_8_TELEM_OFF);
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_500MW_CH1_8_TELEM_OFF);
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_500MW_CH9_16_TELEM_OFF);
|
||||
default_selection = 1;
|
||||
}
|
||||
else {
|
||||
if (!(IS_TELEMETRY_INTERNAL_MODULE() && moduleIdx == EXTERNAL_MODULE))
|
||||
if (BIND_TELEM_ALLOWED(moduleIdx))
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_1_8_TELEM_ON);
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_1_8_TELEM_OFF);
|
||||
if (!(IS_TELEMETRY_INTERNAL_MODULE() && moduleIdx == EXTERNAL_MODULE))
|
||||
if (BIND_TELEM_ALLOWED(moduleIdx) && BIND_CH9TO16_ALLOWED(moduleIdx))
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_9_16_TELEM_ON);
|
||||
if (BIND_CH9TO16_ALLOWED(moduleIdx))
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_9_16_TELEM_OFF);
|
||||
}
|
||||
else {
|
||||
if (BIND_TELEM_ALLOWED(moduleIdx))
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_1_8_TELEM_ON);
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_1_8_TELEM_OFF);
|
||||
if (BIND_TELEM_ALLOWED(moduleIdx))
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_9_16_TELEM_ON);
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_9_16_TELEM_OFF);
|
||||
default_selection = g_model.moduleData[moduleIdx].pxx.receiver_telem_off + (g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 << 1);
|
||||
|
@ -1147,35 +1127,26 @@ void menuModelSetup(event_t event)
|
|||
}
|
||||
break;
|
||||
|
||||
case ITEM_MODEL_EXTERNAL_MODULE_BIND_OPTIONS:
|
||||
{
|
||||
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
|
||||
|
||||
lcdDrawTextAlignedLeft(y, "Bind mode");
|
||||
if (g_model.moduleData[moduleIdx].pxx.power == R9M_LBT_POWER_25) {
|
||||
if(g_model.moduleData[moduleIdx].pxx.receiver_telem_off == true)
|
||||
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_BINDING_25MW_CH1_8_TELEM_OFF);
|
||||
else
|
||||
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_BINDING_25MW_CH1_8_TELEM_ON);
|
||||
}
|
||||
else {
|
||||
if(g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 == true)
|
||||
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_BINDING_500MW_CH9_16_TELEM_OFF);
|
||||
else
|
||||
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_BINDING_500MW_CH1_8_TELEM_OFF);
|
||||
}
|
||||
if (attr) REPEAT_LAST_CURSOR_MOVE();
|
||||
}
|
||||
|
||||
case ITEM_MODEL_EXTERNAL_MODULE_POWER:
|
||||
{
|
||||
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
|
||||
if (IS_MODULE_R9M_FCC(moduleIdx)) {
|
||||
// Power selection is only available on R9M FCC
|
||||
if (IS_MODULE_R9M(moduleIdx)) {
|
||||
lcdDrawTextAlignedLeft(y, TR_MULTI_RFPOWER);
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_FCC_POWER_VALUES, g_model.moduleData[moduleIdx].pxx.power, LEFT | attr);
|
||||
if(IS_MODULE_R9M_FCC(moduleIdx)) {
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_FCC_POWER_VALUES, selectedPxxPower, LEFT | attr);
|
||||
if (attr)
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].pxx.power, 0, R9M_FCC_POWER_MAX);
|
||||
CHECK_INCDEC_MODELVAR(event, selectedPxxPower, 0, R9M_FCC_POWER_MAX);
|
||||
}
|
||||
else {
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_LBT_POWER_VALUES, selectedPxxPower, LEFT | attr);
|
||||
if (attr)
|
||||
CHECK_INCDEC_MODELVAR(event, selectedPxxPower, 0, R9M_LBT_POWER_MAX);
|
||||
}
|
||||
if (attr && s_editMode == 0 && selectedPxxPower != g_model.moduleData[moduleIdx].pxx.power) {
|
||||
if((selectedPxxPower + g_model.moduleData[moduleIdx].pxx.power) < 5) //switching between mode 2 and 3 does not require rebind
|
||||
POPUP_WARNING(STR_REBIND);
|
||||
g_model.moduleData[moduleIdx].pxx.power = selectedPxxPower;
|
||||
}
|
||||
}
|
||||
#if defined (MULTIMODULE)
|
||||
else if (IS_MODULE_MULTIMODULE(moduleIdx)) {
|
||||
|
|
|
@ -77,7 +77,6 @@ enum MenuModelSetupItems {
|
|||
ITEM_MODEL_EXTERNAL_MODULE_BIND,
|
||||
ITEM_MODEL_EXTERNAL_MODULE_FAILSAFE,
|
||||
ITEM_MODEL_EXTERNAL_MODULE_OPTIONS,
|
||||
ITEM_MODEL_EXTERNAL_MODULE_BIND_OPTIONS,
|
||||
#if defined(MULTIMODULE)
|
||||
ITEM_MODEL_EXTERNAL_MODULE_AUTOBIND,
|
||||
#endif
|
||||
|
@ -103,27 +102,7 @@ void onBindMenu(const char * result)
|
|||
{
|
||||
uint8_t moduleIdx = (menuVerticalPosition >= ITEM_MODEL_EXTERNAL_MODULE_LABEL ? EXTERNAL_MODULE : INTERNAL_MODULE);
|
||||
|
||||
if (result == STR_BINDING_25MW_CH1_8_TELEM_OFF) {
|
||||
g_model.moduleData[moduleIdx].pxx.power = R9M_LBT_POWER_25;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_telem_off = true;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = false;
|
||||
}
|
||||
else if (result == STR_BINDING_25MW_CH1_8_TELEM_ON) {
|
||||
g_model.moduleData[moduleIdx].pxx.power = R9M_LBT_POWER_25;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_telem_off = false;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = false;
|
||||
}
|
||||
else if (result == STR_BINDING_500MW_CH1_8_TELEM_OFF) {
|
||||
g_model.moduleData[moduleIdx].pxx.power = R9M_LBT_POWER_500;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_telem_off = true;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = false;
|
||||
}
|
||||
else if (result == STR_BINDING_500MW_CH9_16_TELEM_OFF) {
|
||||
g_model.moduleData[moduleIdx].pxx.power = R9M_LBT_POWER_500;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_telem_off = true;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = true;
|
||||
}
|
||||
else if (result == STR_BINDING_1_8_TELEM_ON) {
|
||||
if (result == STR_BINDING_1_8_TELEM_ON) {
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_telem_off = false;
|
||||
g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = false;
|
||||
}
|
||||
|
@ -262,6 +241,7 @@ int getSwitchWarningsCount()
|
|||
bool menuModelSetup(event_t event)
|
||||
{
|
||||
bool CURSOR_ON_CELL = (menuHorizontalPosition >= 0);
|
||||
static uint8_t selectedPxxPower = g_model.moduleData[EXTERNAL_MODULE].pxx.power; //TODO could go to the reusable struct
|
||||
|
||||
// Switch to external antenna confirmation
|
||||
if (warningResult) {
|
||||
|
@ -286,7 +266,6 @@ bool menuModelSetup(event_t event)
|
|||
((IS_MODULE_XJT(EXTERNAL_MODULE) && !HAS_RF_PROTOCOL_MODELINDEX(g_model.moduleData[EXTERNAL_MODULE].rfProtocol)) || IS_MODULE_SBUS(EXTERNAL_MODULE)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_PXX(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE) || IS_MODULE_MULTIMODULE(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW,
|
||||
FAILSAFE_ROWS(EXTERNAL_MODULE),
|
||||
EXTERNAL_MODULE_OPTION_ROW,
|
||||
(IS_MODULE_R9M_LBT(EXTERNAL_MODULE) ? (uint8_t)0 : HIDDEN_ROW),
|
||||
MULTIMODULE_MODULE_ROWS
|
||||
EXTERNAL_MODULE_POWER_ROW,
|
||||
LABEL(Trainer),
|
||||
|
@ -695,7 +674,7 @@ bool menuModelSetup(event_t event)
|
|||
else if (IS_MODULE_DSM2(EXTERNAL_MODULE))
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_3RD_COLUMN, y, STR_DSM_PROTOCOLS, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, (menuHorizontalPosition==1 ? attr : 0));
|
||||
else if (IS_MODULE_R9M(EXTERNAL_MODULE))
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_3RD_COLUMN, y, STR_R9M_MODES, g_model.moduleData[EXTERNAL_MODULE].subType, (menuHorizontalPosition==1 ? attr : 0));
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_3RD_COLUMN, y, STR_R9M_REGION, g_model.moduleData[EXTERNAL_MODULE].subType, (menuHorizontalPosition==1 ? attr : 0));
|
||||
#if defined(MULTIMODULE)
|
||||
else if (IS_MODULE_MULTIMODULE(EXTERNAL_MODULE)) {
|
||||
int multi_rfProto = g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false);
|
||||
|
@ -928,20 +907,21 @@ bool menuModelSetup(event_t event)
|
|||
if (l_posHorz == 1) {
|
||||
if (IS_MODULE_R9M(moduleIdx) || (IS_MODULE_XJT(moduleIdx) && g_model.moduleData[moduleIdx].rfProtocol == RF_PROTO_X16)) {
|
||||
if (event == EVT_KEY_BREAK(KEY_ENTER)) {
|
||||
uint8_t default_selection;
|
||||
uint8_t default_selection = 0; // R9M_LBT should default to 0 as available options are variables
|
||||
if (IS_MODULE_R9M_LBT(moduleIdx)) {
|
||||
if (!IS_TELEMETRY_INTERNAL_MODULE())
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_25MW_CH1_8_TELEM_ON);
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_25MW_CH1_8_TELEM_OFF);
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_500MW_CH1_8_TELEM_OFF);
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_500MW_CH9_16_TELEM_OFF);
|
||||
default_selection = 2;
|
||||
}
|
||||
else {
|
||||
if (!(IS_TELEMETRY_INTERNAL_MODULE() && moduleIdx == EXTERNAL_MODULE))
|
||||
if (BIND_TELEM_ALLOWED(moduleIdx))
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_1_8_TELEM_ON);
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_1_8_TELEM_OFF);
|
||||
if (!(IS_TELEMETRY_INTERNAL_MODULE() && moduleIdx == EXTERNAL_MODULE))
|
||||
if (BIND_TELEM_ALLOWED(moduleIdx) && BIND_CH9TO16_ALLOWED(moduleIdx))
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_9_16_TELEM_ON);
|
||||
if (BIND_CH9TO16_ALLOWED(moduleIdx))
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_9_16_TELEM_OFF);
|
||||
}
|
||||
else {
|
||||
if (BIND_TELEM_ALLOWED(moduleIdx))
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_1_8_TELEM_ON);
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_1_8_TELEM_OFF);
|
||||
if (BIND_TELEM_ALLOWED(moduleIdx))
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_9_16_TELEM_ON);
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_9_16_TELEM_OFF);
|
||||
default_selection = g_model.moduleData[moduleIdx].pxx.receiver_telem_off + (g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 << 1);
|
||||
|
@ -1065,37 +1045,28 @@ bool menuModelSetup(event_t event)
|
|||
}
|
||||
break;
|
||||
|
||||
case ITEM_MODEL_EXTERNAL_MODULE_BIND_OPTIONS:
|
||||
{
|
||||
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
|
||||
|
||||
lcdDrawText(MENUS_MARGIN_LEFT+ INDENT_WIDTH, y, "Bind mode");
|
||||
if (g_model.moduleData[moduleIdx].pxx.power == R9M_LBT_POWER_25) {
|
||||
if(g_model.moduleData[moduleIdx].pxx.receiver_telem_off == true)
|
||||
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_BINDING_25MW_CH1_8_TELEM_OFF);
|
||||
else
|
||||
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_BINDING_25MW_CH1_8_TELEM_ON);
|
||||
}
|
||||
else {
|
||||
if(g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 == true)
|
||||
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_BINDING_500MW_CH9_16_TELEM_OFF);
|
||||
else
|
||||
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_BINDING_500MW_CH1_8_TELEM_OFF);
|
||||
}
|
||||
while (menuVerticalPosition==k && menuHorizontalPosition > 0) {
|
||||
REPEAT_LAST_CURSOR_MOVE(ITEM_MODEL_SETUP_MAX, true);
|
||||
}
|
||||
}
|
||||
|
||||
case ITEM_MODEL_EXTERNAL_MODULE_POWER:
|
||||
{
|
||||
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
|
||||
if (IS_MODULE_R9M_FCC(moduleIdx)) {
|
||||
// Power selection is only available on R9M FCC
|
||||
if (IS_MODULE_R9M(moduleIdx)) {
|
||||
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_MULTI_RFPOWER);
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_FCC_POWER_VALUES, g_model.moduleData[moduleIdx].pxx.power, LEFT | attr);
|
||||
if(IS_MODULE_R9M_FCC(moduleIdx)) {
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_FCC_POWER_VALUES, selectedPxxPower, LEFT | attr);
|
||||
if (attr)
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].pxx.power, 0, R9M_FCC_POWER_MAX);
|
||||
CHECK_INCDEC_MODELVAR(event, selectedPxxPower, 0, R9M_FCC_POWER_MAX);
|
||||
}
|
||||
else {
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_LBT_POWER_VALUES, selectedPxxPower, LEFT | attr);
|
||||
if (attr)
|
||||
CHECK_INCDEC_MODELVAR(event, selectedPxxPower, 0, R9M_LBT_POWER_MAX);
|
||||
}
|
||||
if (attr && s_editMode == 0 && selectedPxxPower != g_model.moduleData[moduleIdx].pxx.power) {
|
||||
if((selectedPxxPower + g_model.moduleData[moduleIdx].pxx.power) < 5) { //switching between mode 2 and 3 does not require rebind
|
||||
POPUP_WARNING(STR_WARNING);
|
||||
SET_WARNING_INFO(STR_REBIND, sizeof(TR_REBIND), 0);
|
||||
}
|
||||
g_model.moduleData[moduleIdx].pxx.power = selectedPxxPower;
|
||||
}
|
||||
}
|
||||
#if defined(MULTIMODULE)
|
||||
else if (IS_MODULE_MULTIMODULE(moduleIdx)) {
|
||||
|
|
|
@ -159,7 +159,7 @@ const mm_protocol_definition *getMultiProtocolDefinition (uint8_t protocol);
|
|||
#define FAILSAFE_ROWS(x) ((IS_MODULE_XJT(x) && HAS_RF_PROTOCOL_FAILSAFE(g_model.moduleData[x].rfProtocol)) || MULTIMODULE_HASFAILSAFE(x) || IS_MODULE_R9M(x)) ? (g_model.moduleData[x].failsafeMode==FAILSAFE_CUSTOM ? (uint8_t)1 : (uint8_t)0) : HIDDEN_ROW
|
||||
|
||||
#define EXTERNAL_MODULE_OPTION_ROW (IS_MODULE_R9M(EXTERNAL_MODULE) || IS_MODULE_SBUS(EXTERNAL_MODULE) ? TITLE_ROW : MULTIMODULE_OPTIONS_ROW)
|
||||
#define EXTERNAL_MODULE_POWER_ROW (IS_MODULE_MULTIMODULE(EXTERNAL_MODULE) || IS_MODULE_R9M_FCC(EXTERNAL_MODULE)) ? (uint8_t) 0 : HIDDEN_ROW
|
||||
#define EXTERNAL_MODULE_POWER_ROW (IS_MODULE_MULTIMODULE(EXTERNAL_MODULE) || IS_MODULE_R9M(EXTERNAL_MODULE)) ? (uint8_t) 0 : HIDDEN_ROW
|
||||
|
||||
void editStickHardwareSettings(coord_t x, coord_t y, int idx, event_t event, LcdFlags flags);
|
||||
|
||||
|
|
|
@ -216,12 +216,37 @@ inline void SEND_FAILSAFE_1S()
|
|||
// for channels not set previously to HOLD or NOPULSE
|
||||
void setCustomFailsafe(uint8_t moduleIndex);
|
||||
|
||||
#define LEN_R9M_MODES "\007"
|
||||
#define TR_R9M_MODES "FCC\0 ""LBT(EU)"
|
||||
#if defined(PCBXLITE) && !defined(MODULE_R9M_FULLSIZE)
|
||||
#define LEN_R9M_REGION "\007"
|
||||
#define TR_R9M_REGION "FCC\0 ""LBT(EU)"
|
||||
#define LEN_R9M_FCC_POWER_VALUES "\006"
|
||||
#define LEN_R9M_LBT_POWER_VALUES "\006"
|
||||
#define LEN_R9M_LBT_POWER_VALUES "\015"
|
||||
#define TR_R9M_FCC_POWER_VALUES "100 mW"
|
||||
#define TR_R9M_LBT_POWER_VALUES "25 mW 8ch\0 ""25 mW 16ch\0 ""100mW no tele"
|
||||
|
||||
enum R9MFCCPowerValues {
|
||||
R9M_FCC_POWER_100 = 0,
|
||||
R9M_FCC_POWER_MAX = R9M_FCC_POWER_100
|
||||
};
|
||||
|
||||
enum R9MLBTPowerValues {
|
||||
R9M_LBT_POWER_25 = 0,
|
||||
R9M_LBT_POWER_25_16,
|
||||
R9M_LBT_POWER_100,
|
||||
R9M_LBT_POWER_MAX = R9M_LBT_POWER_100
|
||||
};
|
||||
|
||||
#define BIND_TELEM_ALLOWED(idx) (!(IS_TELEMETRY_INTERNAL_MODULE() && moduleIdx == EXTERNAL_MODULE) && (!IS_MODULE_R9M_LBT(idx) || g_model.moduleData[idx].pxx.power < R9M_LBT_POWER_100))
|
||||
#define BIND_CH9TO16_ALLOWED(idx) (!IS_MODULE_R9M_LBT(idx) || g_model.moduleData[idx].pxx.power != R9M_LBT_POWER_25)
|
||||
|
||||
#else
|
||||
|
||||
#define LEN_R9M_REGION "\007"
|
||||
#define TR_R9M_REGION "FCC\0 ""LBT(EU)"
|
||||
#define LEN_R9M_FCC_POWER_VALUES "\006"
|
||||
#define LEN_R9M_LBT_POWER_VALUES "\013"
|
||||
#define TR_R9M_FCC_POWER_VALUES "10 mW\0" "100 mW" "500 mW" "1 W\0"
|
||||
#define TR_R9M_LBT_POWER_VALUES "25 mW\0" "500 mW"
|
||||
#define TR_R9M_LBT_POWER_VALUES "25 mW 8ch\0 ""25 mW 16ch\0" "200 mW 16ch" "500 mW 16ch"
|
||||
|
||||
enum R9MFCCPowerValues {
|
||||
R9M_FCC_POWER_10 = 0,
|
||||
|
@ -233,11 +258,13 @@ enum R9MFCCPowerValues {
|
|||
|
||||
enum R9MLBTPowerValues {
|
||||
R9M_LBT_POWER_25 = 0,
|
||||
R9M_LBT_POWER_25_16,
|
||||
R9M_LBT_POWER_200,
|
||||
R9M_LBT_POWER_500,
|
||||
R9M_LBT_POWER_MAX = R9M_LBT_POWER_500
|
||||
};
|
||||
|
||||
#define BIND_TELEM_ALLOWED(idx) (!IS_MODULE_R9M_LBT(idx) || g_model.moduleData[idx].pxx.power == R9M_LBT_POWER_25)
|
||||
#define BIND_TELEM_ALLOWED(idx) (!(IS_TELEMETRY_INTERNAL_MODULE() && moduleIdx == EXTERNAL_MODULE) && (!IS_MODULE_R9M_LBT(idx) || g_model.moduleData[idx].pxx.power < R9M_LBT_POWER_200))
|
||||
#define BIND_CH9TO16_ALLOWED(idx) (!IS_MODULE_R9M_LBT(idx) || g_model.moduleData[idx].pxx.power != R9M_LBT_POWER_25)
|
||||
|
||||
#endif
|
||||
#endif // _PULSES_ARM_H_
|
||||
|
|
|
@ -409,18 +409,16 @@ inline void setupFramePXX(uint8_t port, uint8_t sendUpperChannels)
|
|||
}
|
||||
#endif
|
||||
|
||||
// Bit1 is ignored by R9M EU when power is set to 1500 mW
|
||||
extra_flags |= (g_model.moduleData[port].pxx.receiver_telem_off << 1);
|
||||
|
||||
extra_flags |= (g_model.moduleData[port].pxx.receiver_channel_9_16 << 2);
|
||||
if (IS_MODULE_R9M(port)) {
|
||||
// For R9M EU, bit3 (MODE) is taken into account ONLY at bind time. Value change requires re-bind
|
||||
extra_flags |= (min(g_model.moduleData[port].pxx.power, IS_MODULE_R9M_FCC(port) ? (uint8_t)R9M_FCC_POWER_MAX : (uint8_t)R9M_LBT_POWER_MAX) << 3);
|
||||
}
|
||||
|
||||
// Disable S.PORT if internal module is active
|
||||
if (IS_TELEMETRY_INTERNAL_MODULE()) {
|
||||
extra_flags |= (1 << 5);
|
||||
}
|
||||
}
|
||||
|
||||
putPcmByte(port, extra_flags);
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ option(SHUTDOWN_CONFIRMATION "Shutdown confirmation" OFF)
|
|||
option(LCD_DUAL_BUFFER "Dual LCD Buffer" OFF)
|
||||
option(TARANIS_INTERNAL_PPM "Taranis internal module hack to output PPM" OFF)
|
||||
option(USEHORUSBT "X9E BT module replaced by Horus BT module" OFF)
|
||||
option(MODULE_R9M_FULLSIZE "xlite option to use full size R9M instead of mini" OFF)
|
||||
|
||||
if(PCB STREQUAL X9E)
|
||||
set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)")
|
||||
|
@ -98,6 +99,9 @@ if(PCB STREQUAL XLITE)
|
|||
if(PXX_FREQUENCY STREQUAL HIGH)
|
||||
add_definitions(-DPXX_FREQUENCY_HIGH)
|
||||
endif()
|
||||
if(MODULE_R9M_FULLSIZE)
|
||||
add_definitions(-DMODULE_R9M_FULLSIZE)
|
||||
endif()
|
||||
set(TARGET_SRC
|
||||
${TARGET_SRC}
|
||||
../common/arm/stm32/intmodule_serial_driver.cpp
|
||||
|
|
|
@ -108,7 +108,7 @@ const pm_char STR_OPEN9X[] PROGMEM =
|
|||
#if defined(CPUARM)
|
||||
ISTR(VTRAINERMODES)
|
||||
ISTR(TARANIS_PROTOCOLS)
|
||||
ISTR(R9M_MODES)
|
||||
ISTR(R9M_REGION)
|
||||
ISTR(R9M_FCC_POWER_VALUES)
|
||||
ISTR(R9M_LBT_POWER_VALUES)
|
||||
ISTR(TELEMETRY_PROTOCOLS)
|
||||
|
@ -387,6 +387,7 @@ const pm_char STR_MENUGLOBALVARS[] PROGMEM = TR_MENUGLOBALVARS;
|
|||
#if defined(DSM2) || defined(PXX)
|
||||
const pm_char STR_RECEIVER_NUM[] PROGMEM = TR_RECEIVER_NUM;
|
||||
const pm_char STR_RECEIVER[] PROGMEM = TR_RECEIVER;
|
||||
const pm_char STR_REBIND[] PROGMEM = TR_REBIND;
|
||||
#endif
|
||||
|
||||
#if defined(PXX) || defined(CPUARM)
|
||||
|
@ -627,10 +628,6 @@ const pm_char STR_BLCOLOR[] PROGMEM = TR_BLCOLOR;
|
|||
const pm_char STR_BINDING_1_8_TELEM_OFF[] PROGMEM = TR_BINDING_CH1_8_TELEM_OFF;
|
||||
const pm_char STR_BINDING_9_16_TELEM_ON[] PROGMEM = TR_BINDING_CH9_16_TELEM_ON;
|
||||
const pm_char STR_BINDING_9_16_TELEM_OFF[] PROGMEM = TR_BINDING_CH9_16_TELEM_OFF;
|
||||
const pm_char STR_BINDING_25MW_CH1_8_TELEM_OFF[] PROGMEM = TR_BINDING_25MW_CH1_8_TELEM_OFF;
|
||||
const pm_char STR_BINDING_25MW_CH1_8_TELEM_ON[] PROGMEM = TR_BINDING_25MW_CH1_8_TELEM_ON;
|
||||
const pm_char STR_BINDING_500MW_CH1_8_TELEM_OFF[] PROGMEM = TR_BINDING_500MW_CH1_8_TELEM_OFF;
|
||||
const pm_char STR_BINDING_500MW_CH9_16_TELEM_OFF[] PROGMEM = TR_BINDING_500MW_CH9_16_TELEM_OFF;
|
||||
const pm_char STR_CHANNELRANGE[] PROGMEM = TR_CHANNELRANGE;
|
||||
const pm_char STR_ANTENNASELECTION[] PROGMEM = TR_ANTENNASELECTION;
|
||||
const pm_char STR_ANTENNACONFIRM1[] PROGMEM = TR_ANTENNACONFIRM1;
|
||||
|
|
|
@ -220,8 +220,8 @@ extern const pm_char STR_OPEN9X[];
|
|||
#endif
|
||||
#if defined(CPUARM)
|
||||
#define OFS_TARANIS_PROTOCOLS (OFS_VTRAINERMODES + sizeof(TR_VTRAINERMODES))
|
||||
#define OFS_R9M_MODES (OFS_TARANIS_PROTOCOLS + sizeof(TR_TARANIS_PROTOCOLS))
|
||||
#define OFS_R9M_FCC_POWER_VALUES (OFS_R9M_MODES + sizeof(TR_R9M_MODES))
|
||||
#define OFS_R9M_REGION (OFS_TARANIS_PROTOCOLS + sizeof(TR_TARANIS_PROTOCOLS))
|
||||
#define OFS_R9M_FCC_POWER_VALUES (OFS_R9M_REGION + sizeof(TR_R9M_REGION))
|
||||
#define OFS_R9M_LBT_POWER_VALUES (OFS_R9M_FCC_POWER_VALUES + sizeof(TR_R9M_FCC_POWER_VALUES))
|
||||
#define OFS_TELEMETRY_PROTOCOLS (OFS_R9M_LBT_POWER_VALUES + sizeof(TR_R9M_LBT_POWER_VALUES))
|
||||
#define OFS_XJT_PROTOCOLS (OFS_TELEMETRY_PROTOCOLS + sizeof(TR_TELEMETRY_PROTOCOLS))
|
||||
|
@ -351,7 +351,7 @@ extern const pm_char STR_OPEN9X[];
|
|||
#if defined(CPUARM)
|
||||
#define STR_VTRAINERMODES (STR_OPEN9X + OFS_VTRAINERMODES)
|
||||
#define STR_TARANIS_PROTOCOLS (STR_OPEN9X + OFS_TARANIS_PROTOCOLS)
|
||||
#define STR_R9M_MODES (STR_OPEN9X + OFS_R9M_MODES)
|
||||
#define STR_R9M_REGION (STR_OPEN9X + OFS_R9M_REGION)
|
||||
#define STR_R9M_FCC_POWER_VALUES (STR_OPEN9X + OFS_R9M_FCC_POWER_VALUES)
|
||||
#define STR_R9M_LBT_POWER_VALUES (STR_OPEN9X + OFS_R9M_LBT_POWER_VALUES)
|
||||
#define STR_TELEMETRY_PROTOCOLS (STR_OPEN9X + OFS_TELEMETRY_PROTOCOLS)
|
||||
|
@ -638,6 +638,7 @@ extern const pm_char STR_SUBTYPE[];
|
|||
#if defined(DSM2) || defined(PXX)
|
||||
extern const pm_char STR_RECEIVER_NUM[];
|
||||
extern const pm_char STR_RECEIVER[];
|
||||
extern const pm_char STR_REBIND[];
|
||||
#endif
|
||||
|
||||
#if defined(PXX) || defined(CPUARM)
|
||||
|
@ -936,10 +937,6 @@ extern const pm_char STR_BLCOLOR[];
|
|||
extern const pm_char STR_BINDING_1_8_TELEM_OFF[];
|
||||
extern const pm_char STR_BINDING_9_16_TELEM_ON[];
|
||||
extern const pm_char STR_BINDING_9_16_TELEM_OFF[];
|
||||
extern const pm_char STR_BINDING_25MW_CH1_8_TELEM_OFF[];
|
||||
extern const pm_char STR_BINDING_25MW_CH1_8_TELEM_ON[];
|
||||
extern const pm_char STR_BINDING_500MW_CH1_8_TELEM_OFF[];
|
||||
extern const pm_char STR_BINDING_500MW_CH9_16_TELEM_OFF[];
|
||||
extern const pm_char STR_CHANNELRANGE[];
|
||||
extern const pm_char STR_ANTENNASELECTION[];
|
||||
extern const pm_char STR_ANTENNACONFIRM1[];
|
||||
|
|
|
@ -870,14 +870,11 @@
|
|||
#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_REBIND "Rebinding required"
|
||||
#define TR_BINDING_CH1_8_TELEM_ON "Ch1-8 Telem ON"
|
||||
#define TR_BINDING_CH1_8_TELEM_OFF "Ch1-8 Telem OFF"
|
||||
#define TR_BINDING_CH9_16_TELEM_ON "Ch9-16 Telem ON"
|
||||
#define TR_BINDING_CH9_16_TELEM_OFF "Ch9-16 Telem OFF"
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_OFF TR("25mW Ch1-8 Tel OFF", "25mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_ON TR("25mW Ch1-8 Tel ON", "25mW Ch1-8 Tel. ON")
|
||||
#define TR_BINDING_500MW_CH1_8_TELEM_OFF TR("0.5W Ch1-8 Tel OFF", "500mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_500MW_CH9_16_TELEM_OFF TR("0.5W Ch9-16 Tel OFF", "500mW Ch9-16 Tel. OFF")
|
||||
#define TR_PROTOCOL_INVALID TR("Prot. invalid", "Protocol invalid")
|
||||
#define TR_MODULE_STATUS TR(INDENT "Status", INDENT "Module Status")
|
||||
#define TR_MODULE_SYNC TR(INDENT "Sync", INDENT "Module Sync")
|
||||
|
|
|
@ -887,14 +887,11 @@
|
|||
#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_REBIND "Rebinding required"
|
||||
#define TR_BINDING_CH1_8_TELEM_ON "Ch1-8 Telem ON"
|
||||
#define TR_BINDING_CH1_8_TELEM_OFF "Ch1-8 Telem OFF"
|
||||
#define TR_BINDING_CH9_16_TELEM_ON "Ch9-16 Telem ON"
|
||||
#define TR_BINDING_CH9_16_TELEM_OFF "Ch9-16 Telem OFF"
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_OFF TR("25mW Ch1-8 Tel OFF", "25mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_ON TR("25mW Ch1-8 Tel ON", "25mW Ch1-8 Tel. ON")
|
||||
#define TR_BINDING_500MW_CH1_8_TELEM_OFF TR("0.5W Ch1-8 Tel OFF", "500mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_500MW_CH9_16_TELEM_OFF TR("0.5W Ch9-16 Tel OFF", "500mW Ch9-16 Tel. OFF")
|
||||
#define TR_PROTOCOL_INVALID TR("Prot. invalid", "Protocol invalid")
|
||||
#define TR_MODULE_STATUS TR(INDENT "Status", INDENT "Module Status")
|
||||
#define TR_MODULE_SYNC TR(INDENT "Sync", INDENT "Module Sync")
|
||||
|
|
|
@ -875,14 +875,11 @@
|
|||
#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_REBIND "Rebinding required"
|
||||
#define TR_BINDING_CH1_8_TELEM_ON "Ch1-8 Telem ON"
|
||||
#define TR_BINDING_CH1_8_TELEM_OFF "Ch1-8 Telem OFF"
|
||||
#define TR_BINDING_CH9_16_TELEM_ON "Ch9-16 Telem ON"
|
||||
#define TR_BINDING_CH9_16_TELEM_OFF "Ch9-16 Telem OFF"
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_OFF TR("25mW Ch1-8 Tel OFF", "25mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_ON TR("25mW Ch1-8 Tel ON", "25mW Ch1-8 Tel. ON")
|
||||
#define TR_BINDING_500MW_CH1_8_TELEM_OFF TR("0.5W Ch1-8 Tel OFF", "500mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_500MW_CH9_16_TELEM_OFF TR("0.5W Ch9-16 Tel OFF", "500mW Ch9-16 Tel. OFF")
|
||||
#define TR_PROTOCOL_INVALID TR("Prot. invalid", "Protocol invalid")
|
||||
#define TR_MODULE_STATUS TR(INDENT "Status", INDENT "Module Status")
|
||||
#define TR_MODULE_SYNC TR(INDENT "Sync", INDENT "Module Sync")
|
||||
|
|
|
@ -866,14 +866,11 @@
|
|||
#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_REBIND "Rebinding required"
|
||||
#define TR_BINDING_CH1_8_TELEM_ON "Ch1-8 Telem ON"
|
||||
#define TR_BINDING_CH1_8_TELEM_OFF "Ch1-8 Telem OFF"
|
||||
#define TR_BINDING_CH9_16_TELEM_ON "Ch9-16 Telem ON"
|
||||
#define TR_BINDING_CH9_16_TELEM_OFF "Ch9-16 Telem OFF"
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_OFF TR("25mW Ch1-8 Tel OFF", "25mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_ON TR("25mW Ch1-8 Tel ON", "25mW Ch1-8 Tel. ON")
|
||||
#define TR_BINDING_500MW_CH1_8_TELEM_OFF TR("0.5W Ch1-8 Tel OFF", "500mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_500MW_CH9_16_TELEM_OFF TR("0.5W Ch9-16 Tel OFF", "500mW Ch9-16 Tel. OFF")
|
||||
#define TR_PROTOCOL_INVALID TR("Prot. invalid", "Protocol invalid")
|
||||
#define TR_MODULE_STATUS TR(INDENT "Status", INDENT "Module Status")
|
||||
#define TR_MODULE_SYNC TR(INDENT "Sync", INDENT "Module Sync")
|
||||
|
|
|
@ -858,14 +858,11 @@
|
|||
#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_REBIND "Rebinding required"
|
||||
#define TR_BINDING_CH1_8_TELEM_ON "Ch1-8 Telem ON"
|
||||
#define TR_BINDING_CH1_8_TELEM_OFF "Ch1-8 Telem OFF"
|
||||
#define TR_BINDING_CH9_16_TELEM_ON "Ch9-16 Telem ON"
|
||||
#define TR_BINDING_CH9_16_TELEM_OFF "Ch9-16 Telem OFF"
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_OFF TR("25mW Ch1-8 Tel OFF", "25mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_ON TR("25mW Ch1-8 Tel ON", "25mW Ch1-8 Tel. ON")
|
||||
#define TR_BINDING_500MW_CH1_8_TELEM_OFF TR("0.5W Ch1-8 Tel OFF", "500mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_500MW_CH9_16_TELEM_OFF TR("0.5W Ch9-16 Tel OFF", "500mW Ch9-16 Tel. OFF")
|
||||
#define TR_PROTOCOL_INVALID TR("Prot. invalid", "Protocol invalid")
|
||||
#define TR_MODULE_STATUS TR(INDENT "Status", INDENT "Module Status")
|
||||
#define TR_MODULE_SYNC TR(INDENT "Sync", INDENT "Module Sync")
|
||||
|
|
|
@ -896,14 +896,11 @@
|
|||
#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 "Binder d'abord"
|
||||
#define TR_MODULE_BINDING "Bind..."
|
||||
#define TR_REBIND "Rebinding required"
|
||||
#define TR_BINDING_CH1_8_TELEM_ON "Ch1-8 Télem ON"
|
||||
#define TR_BINDING_CH1_8_TELEM_OFF "Ch1-8 Télem OFF"
|
||||
#define TR_BINDING_CH9_16_TELEM_ON "Ch9-16 Télem ON"
|
||||
#define TR_BINDING_CH9_16_TELEM_OFF "Ch9-16 Télem OFF"
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_OFF "25mW Ch1-8 Télem OFF"
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_ON "25mW Ch1-8 Télem ON"
|
||||
#define TR_BINDING_500MW_CH1_8_TELEM_OFF "500mW Ch1-8 Télem OFF"
|
||||
#define TR_BINDING_500MW_CH9_16_TELEM_OFF "500mW Ch9-16 Tél. OFF"
|
||||
#define TR_PROTOCOL_INVALID TR("Sél. invalide", "Protocole invalide")
|
||||
#define TR_MODULE_STATUS TR(INDENT "Etat", INDENT "Etat module")
|
||||
#define TR_MODULE_SYNC TR(INDENT "Sync", INDENT "Module Sync")
|
||||
|
|
|
@ -883,14 +883,11 @@
|
|||
#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_REBIND "Rebinding required"
|
||||
#define TR_BINDING_CH1_8_TELEM_ON "Ch1-8 Telem ON"
|
||||
#define TR_BINDING_CH1_8_TELEM_OFF "Ch1-8 Telem OFF"
|
||||
#define TR_BINDING_CH9_16_TELEM_ON "Ch9-16 Telem ON"
|
||||
#define TR_BINDING_CH9_16_TELEM_OFF "Ch9-16 Telem OFF"
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_OFF TR("25mW Ch1-8 Tel OFF", "25mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_ON TR("25mW Ch1-8 Tel ON", "25mW Ch1-8 Tel. ON")
|
||||
#define TR_BINDING_500MW_CH1_8_TELEM_OFF TR("0.5W Ch1-8 Tel OFF", "500mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_500MW_CH9_16_TELEM_OFF TR("0.5W Ch9-16 Tel OFF", "500mW Ch9-16 Tel. OFF")
|
||||
#define TR_PROTOCOL_INVALID TR("Prot. invalid", "Protocol invalid")
|
||||
#define TR_MODULE_STATUS TR(INDENT "Status", INDENT "Module Status")
|
||||
#define TR_MODULE_SYNC TR(INDENT "Sync", INDENT "Module Sync")
|
||||
|
|
|
@ -874,14 +874,11 @@
|
|||
#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_REBIND "Rebinding required"
|
||||
#define TR_BINDING_CH1_8_TELEM_ON "Ch1-8 Telem ON"
|
||||
#define TR_BINDING_CH1_8_TELEM_OFF "Ch1-8 Telem OFF"
|
||||
#define TR_BINDING_CH9_16_TELEM_ON "Ch9-16 Telem ON"
|
||||
#define TR_BINDING_CH9_16_TELEM_OFF "Ch9-16 Telem OFF"
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_OFF TR("25mW Ch1-8 Tel OFF", "25mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_ON TR("25mW Ch1-8 Tel ON", "25mW Ch1-8 Tel. ON")
|
||||
#define TR_BINDING_500MW_CH1_8_TELEM_OFF TR("0.5W Ch1-8 Tel OFF", "500mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_500MW_CH9_16_TELEM_OFF TR("0.5W Ch9-16 Tel OFF", "500mW Ch9-16 Tel. OFF")
|
||||
#define TR_PROTOCOL_INVALID TR("Prot. invalid", "Protocol invalid")
|
||||
#define TR_MODULE_STATUS TR(INDENT "Status", INDENT "Module Status")
|
||||
#define TR_MODULE_SYNC TR(INDENT "Sync", INDENT "Module Sync")
|
||||
|
|
|
@ -885,14 +885,11 @@
|
|||
#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_REBIND "Rebinding required"
|
||||
#define TR_BINDING_CH1_8_TELEM_ON "Ch1-8 Telem ON"
|
||||
#define TR_BINDING_CH1_8_TELEM_OFF "Ch1-8 Telem OFF"
|
||||
#define TR_BINDING_CH9_16_TELEM_ON "Ch9-16 Telem ON"
|
||||
#define TR_BINDING_CH9_16_TELEM_OFF "Ch9-16 Telem OFF"
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_OFF TR("25mW Ch1-8 Tel OFF", "25mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_ON TR("25mW Ch1-8 Tel ON", "25mW Ch1-8 Tel. ON")
|
||||
#define TR_BINDING_500MW_CH1_8_TELEM_OFF TR("0.5W Ch1-8 Tel OFF", "500mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_500MW_CH9_16_TELEM_OFF TR("0.5W Ch9-16 Tel OFF", "500mW Ch9-16 Tel. OFF")
|
||||
#define TR_PROTOCOL_INVALID TR("Prot. invalid", "Protocol invalid")
|
||||
#define TR_MODULE_STATUS TR(INDENT "Status", INDENT "Module Status")
|
||||
#define TR_MODULE_SYNC TR(INDENT "Sync", INDENT "Module Sync")
|
||||
|
|
|
@ -866,14 +866,11 @@
|
|||
#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_REBIND "Rebinding required"
|
||||
#define TR_BINDING_CH1_8_TELEM_ON "Ch1-8 Telem ON"
|
||||
#define TR_BINDING_CH1_8_TELEM_OFF "Ch1-8 Telem OFF"
|
||||
#define TR_BINDING_CH9_16_TELEM_ON "Ch9-16 Telem ON"
|
||||
#define TR_BINDING_CH9_16_TELEM_OFF "Ch9-16 Telem OFF"
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_OFF TR("25mW Ch1-8 Tel OFF", "25mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_ON TR("25mW Ch1-8 Tel ON", "25mW Ch1-8 Tel. ON")
|
||||
#define TR_BINDING_500MW_CH1_8_TELEM_OFF TR("0.5W Ch1-8 Tel OFF", "500mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_500MW_CH9_16_TELEM_OFF TR("0.5W Ch9-16 Tel OFF", "500mW Ch9-16 Tel. OFF")
|
||||
#define TR_PROTOCOL_INVALID TR("Prot. invalid", "Protocol invalid")
|
||||
#define TR_MODULE_STATUS TR(INDENT "Status", INDENT "Module Status")
|
||||
#define TR_MODULE_SYNC TR(INDENT "Sync", INDENT "Module Sync")
|
||||
|
|
|
@ -893,14 +893,11 @@
|
|||
#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_REBIND "Rebinding required"
|
||||
#define TR_BINDING_CH1_8_TELEM_ON "Ch1-8 Telem ON"
|
||||
#define TR_BINDING_CH1_8_TELEM_OFF "Ch1-8 Telem OFF"
|
||||
#define TR_BINDING_CH9_16_TELEM_ON "Ch9-16 Telem ON"
|
||||
#define TR_BINDING_CH9_16_TELEM_OFF "Ch9-16 Telem OFF"
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_OFF TR("25mW Ch1-8 Tel OFF", "25mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_25MW_CH1_8_TELEM_ON TR("25mW Ch1-8 Tel ON", "25mW Ch1-8 Tel. ON")
|
||||
#define TR_BINDING_500MW_CH1_8_TELEM_OFF TR("0.5W Ch1-8 Tel OFF", "500mW Ch1-8 Tel. OFF")
|
||||
#define TR_BINDING_500MW_CH9_16_TELEM_OFF TR("0.5W Ch9-16 Tel OFF", "500mW Ch9-16 Tel. OFF")
|
||||
#define TR_PROTOCOL_INVALID TR("Prot. invalid", "Protocol invalid")
|
||||
#define TR_MODULE_STATUS TR(INDENT "Status", INDENT "Module Status")
|
||||
#define TR_MODULE_SYNC TR(INDENT "Sync", INDENT "Module Sync")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue