diff --git a/companion/src/firmwares/edgetx/yaml_modeldata.cpp b/companion/src/firmwares/edgetx/yaml_modeldata.cpp index 7dfba145822..d7c41e13970 100644 --- a/companion/src/firmwares/edgetx/yaml_modeldata.cpp +++ b/companion/src/firmwares/edgetx/yaml_modeldata.cpp @@ -138,6 +138,14 @@ static const YamlLookupTable globalOnOffFilterLut = { { 2, "ON" }, }; +static const YamlLookupTable usbModeLut = { + { 0, "GLOBAL" }, + { 1, "ASK" }, + { 2, "JOYSTICK" }, + { 3, "STORAGE" }, + { 4, "SERIAL" }, +}; + static const YamlLookupTable usbJoystickIfModeLut = { { 0, "JOYSTICK" }, { 1, "GAMEPAD" }, @@ -1163,6 +1171,7 @@ Node convert::encode(const ModelData& rhs) node["potsWarnEnabled"] = potsWarnEnabled.value; node["jitterFilter"] = globalOnOffFilterLut << rhs.jitterFilter; + node["usbMode"] = usbModeLut << rhs.usbMode; for (int i = 0; i < CPN_MAX_POTS + CPN_MAX_SLIDERS; i++) { if (rhs.potsWarnPosition[i] != 0) @@ -1448,6 +1457,7 @@ bool convert::decode(const Node& node, ModelData& rhs) node["thrTrimSw"] >> rhs.thrTrimSwitch; node["potsWarnMode"] >> potsWarningModeLut >> rhs.potsWarningMode; node["jitterFilter"] >> globalOnOffFilterLut >> rhs.jitterFilter; + node["usbMode"] >> usbModeLut >> rhs.usbMode; YamlPotsWarnEnabled potsWarnEnabled; node["potsWarnEnabled"] >> potsWarnEnabled.value; diff --git a/companion/src/firmwares/modeldata.cpp b/companion/src/firmwares/modeldata.cpp index 33275564a20..56722c4f586 100644 --- a/companion/src/firmwares/modeldata.cpp +++ b/companion/src/firmwares/modeldata.cpp @@ -67,6 +67,7 @@ void ModelData::copy(const ModelData & src) enableCustomThrottleWarning = src.enableCustomThrottleWarning; customThrottleWarningPosition = src.customThrottleWarningPosition; jitterFilter = src.jitterFilter; + usbMode = src.usbMode; beepANACenter = src.beepANACenter; extendedLimits = src.extendedLimits; extendedTrims = src.extendedTrims; @@ -251,6 +252,7 @@ void ModelData::clear() enableCustomThrottleWarning = false; customThrottleWarningPosition = 0; jitterFilter = 0; + usbMode = 0; beepANACenter = 0; extendedLimits = false; extendedTrims = false; diff --git a/companion/src/firmwares/modeldata.h b/companion/src/firmwares/modeldata.h index e8f8eff1443..3fe498d7b2e 100644 --- a/companion/src/firmwares/modeldata.h +++ b/companion/src/firmwares/modeldata.h @@ -161,6 +161,7 @@ class ModelData { bool enableCustomThrottleWarning; int customThrottleWarningPosition; unsigned int jitterFilter; // Added in EdgeTx 2.7 (#870) + unsigned int usbMode; // 0 = global, otherwise radio USB mode + 1 unsigned int beepANACenter; // 1<<0->A1.. 1<<6->A7 diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index 9c9c88fa9b0..7dc01f036fc 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -425,6 +425,7 @@ void SetupPanel::update() ui->checklistInteractive->setChecked(model->checklistInteractive); ui->gfEnabled->setChecked(!model->noGlobalFunctions); ui->jitterFilter->setCurrentIndex(model->jitterFilter); + ui->usbMode->setCurrentIndex(model->usbMode); updateBeepCenter(); updateStartupSwitches(); @@ -569,6 +570,14 @@ void SetupPanel::on_jitterFilter_currentIndexChanged(int index) } } +void SetupPanel::on_usbMode_currentIndexChanged(int index) +{ + if (!lock) { + model->usbMode = ui->usbMode->currentIndex(); + emit modified(); + } +} + void SetupPanel::on_throttleTrim_toggled(bool checked) { model->thrTrim = checked; diff --git a/companion/src/modeledit/setup.h b/companion/src/modeledit/setup.h index ba69e203837..38ffbf03b9b 100644 --- a/companion/src/modeledit/setup.h +++ b/companion/src/modeledit/setup.h @@ -86,6 +86,7 @@ class SetupPanel : public ModelPanel void onModuleUpdateItemModels(); void onFunctionSwitchesUpdateItemModels(); void on_jitterFilter_currentIndexChanged(int index); + void on_usbMode_currentIndexChanged(int index); private: Ui::Setup *ui; diff --git a/companion/src/modeledit/setup.ui b/companion/src/modeledit/setup.ui index 9de1ea0751f..7d16104e00d 100644 --- a/companion/src/modeledit/setup.ui +++ b/companion/src/modeledit/setup.ui @@ -615,6 +615,53 @@ + + + + + false + + + + USB mode + + + + + + + + 0 + 0 + + + + + Global + + + + + Ask on Connect + + + + + Joystick (HID) + + + + + USB Mass Storage + + + + + USB Serial (CDC) + + + + diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h index 9733c860b60..04ef85916a6 100644 --- a/radio/src/dataconstants.h +++ b/radio/src/dataconstants.h @@ -708,6 +708,15 @@ enum ModelOverridableEnable { OVERRIDE_ON }; +// Model USB mode: GLOBAL uses the radio setting, others are USB mode + 1 +enum ModelUsbMode { + USBMODE_GLOBAL, + USBMODE_ASK, + USBMODE_JOYSTICK, + USBMODE_STORAGE, + USBMODE_SERIAL +}; + #define SELECTED_THEME_NAME_LEN 26 // PPM Units diff --git a/radio/src/datastructs.h b/radio/src/datastructs.h index cb68ce0f1d9..f1b639428bd 100644 --- a/radio/src/datastructs.h +++ b/radio/src/datastructs.h @@ -121,28 +121,28 @@ static inline void check_struct() CHKSIZE(ModelData, 6329); #elif defined(PCBPL18) #if defined(RADIO_NB4P) || defined(RADIO_NV14_FAMILY) - CHKSIZE(ModelData, 6875); + CHKSIZE(ModelData, 6876); #else - CHKSIZE(ModelData, 6877); + CHKSIZE(ModelData, 6878); #endif #elif defined(PCBST16) || defined(RADIO_T15PRO) || defined(RADIO_T15H7) || defined(RADIO_T18H7) || defined(RADIO_TX15) || defined(RADIO_GX15) || defined(RADIO_V15) - CHKSIZE(ModelData, 7641); + CHKSIZE(ModelData, 7642); #elif defined(RADIO_V12) - CHKSIZE(ModelData, 7640); + CHKSIZE(ModelData, 7641); #elif defined(PCBC14) || defined(RADIO_H17) - CHKSIZE(ModelData, 7573); + CHKSIZE(ModelData, 7574); #elif defined(PCBPA01) - CHKSIZE(ModelData, 7582); + CHKSIZE(ModelData, 7583); #elif defined(RADIO_T15) - CHKSIZE(ModelData, 6867); + CHKSIZE(ModelData, 6868); #elif defined(RADIO_T22) - CHKSIZE(ModelData, 7641); -#elif defined(RADIO_TX16SMK3) CHKSIZE(ModelData, 7642); +#elif defined(RADIO_TX16SMK3) + CHKSIZE(ModelData, 7643); #elif defined(RADIO_H7RS) // CHKSIZE() #elif defined(PCBHORUS) - CHKSIZE(ModelData, 6841); + CHKSIZE(ModelData, 6842); #else #error CHKSIZE not set up #endif diff --git a/radio/src/datastructs_private.h b/radio/src/datastructs_private.h index d8c454fda7b..16f41cc81e6 100644 --- a/radio/src/datastructs_private.h +++ b/radio/src/datastructs_private.h @@ -930,6 +930,8 @@ PACK(struct ModelData { uint8_t modelCustomScriptsDisabled:2 ENUM(ModelOverridableEnable); uint8_t modelTelemetryDisabled:2 ENUM(ModelOverridableEnable); + NOBACKUP(uint8_t usbMode:3 ENUM(ModelUsbMode)); + SwitchConfig getSwitchType(uint8_t n); void setSwitchType(uint8_t n, SwitchConfig v); char* getSwitchCustomName(uint8_t n); diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index a774fc7df3c..796cbb94d2d 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -23,6 +23,7 @@ #include "mixer_scheduler.h" #include "hal/adc_driver.h" #include "hal/switch_driver.h" +#include "hal/usb_driver.h" #include "hal/module_port.h" #include "hal/rgbleds.h" #include "switches.h" @@ -129,6 +130,7 @@ enum MenuModelSetupItems { #endif ITEM_MODEL_SETUP_BEEP_CENTER, ITEM_MODEL_SETUP_USE_JITTER_FILTER, + ITEM_MODEL_SETUP_USB_MODE, #if defined(PXX2) ITEM_MODEL_SETUP_REGISTRATION_ID, #endif @@ -839,6 +841,7 @@ void menuModelSetup(event_t event) uint8_t(NAVIGATION_LINE_BY_LINE | (adcGetInputOffset(ADC_INPUT_FLEX + 1) - 1)), // Center beeps 0, // ADC Jitter filter + 0, // USB mode REGISTRATION_ID_ROWS @@ -1413,6 +1416,10 @@ void menuModelSetup(event_t event) g_model.jitterFilter = editChoice(MODEL_SETUP_2ND_COLUMN, y, STR_JITTER_FILTER, STR_ADCFILTERVALUES, g_model.jitterFilter, 0, 2, attr, event); break; + case ITEM_MODEL_SETUP_USB_MODE: + g_model.usbMode = editChoice(MODEL_SETUP_2ND_COLUMN, y, STR_USBMODE, STR_MODEL_USBMODES, g_model.usbMode, USBMODE_GLOBAL, USB_MAX_MODE + 1, attr, event); + break; + #if defined(HARDWARE_INTERNAL_MODULE) case ITEM_MODEL_SETUP_INTERNAL_MODULE_LABEL: diff --git a/radio/src/gui/128x64/radio_setup.cpp b/radio/src/gui/128x64/radio_setup.cpp index 54c2087338b..2d46a29ae5f 100644 --- a/radio/src/gui/128x64/radio_setup.cpp +++ b/radio/src/gui/128x64/radio_setup.cpp @@ -124,6 +124,7 @@ enum { IF_FAI_CHOICE(ITEM_RADIO_SETUP_FAI) ITEM_RADIO_SETUP_SWITCHES_DELAY, ITEM_RADIO_SETUP_USB_MODE, + ITEM_RADIO_SETUP_USB_MODE_OVERRIDE, CASE_JACK_DETECT(ITEM_RADIO_SETUP_JACK_MODE) ITEM_RADIO_SETUP_RX_CHANNEL_ORD, CASE_ROTARY_ENCODER(ITEM_RADIO_SETUP_ROTARY_ENC_MODE) @@ -155,6 +156,7 @@ static struct RadioSetupExpandState expandState; static uint8_t SOUND_ROW(uint8_t value) { return expandState.sound ? value : HIDDEN_ROW; } static uint8_t SOUND_WARNING_ROW(uint8_t value) { return expandState.sound && isFunctionActive(FUNCTION_VOLUME) ? value : HIDDEN_ROW; } static uint8_t BACKLIGHT_WARNING_ROW(uint8_t value) { return isFunctionActive(FUNCTION_BACKLIGHT) ? value : HIDDEN_ROW; } +static uint8_t USB_MODE_OVERRIDE_ROW(uint8_t value) { return g_model.usbMode != USBMODE_GLOBAL ? value : HIDDEN_ROW; } static uint8_t ALARMS_ROW(uint8_t value) { return expandState.alarms ? value : HIDDEN_ROW; } @@ -275,6 +277,7 @@ void menuRadioSetup(event_t event) IF_FAI_CHOICE(0) 0, 0, // USB mode + USB_MODE_OVERRIDE_ROW(LABEL(0)), // model USB mode override CASE_JACK_DETECT(0) // Jack mode 0, // Channel order CASE_ROTARY_ENCODER(0) @@ -861,6 +864,13 @@ void menuRadioSetup(event_t event) g_eeGeneral.USBMode = editChoice(LCD_W-2, y, STR_USBMODE, STR_USBMODES, g_eeGeneral.USBMode, USB_UNSELECTED_MODE, USB_MAX_MODE, attr|RIGHT, event); break; + case ITEM_RADIO_SETUP_USB_MODE_OVERRIDE: { + std::string s(STR_MODEL); + s += " - "; + s += STR_MODEL_USBMODES[g_model.usbMode]; + lcdDrawText(LCD_W - MENUS_SCROLLBAR_WIDTH, y, s.c_str(), RIGHT); + } break; + #if defined(JACK_DETECT_GPIO) case ITEM_RADIO_SETUP_JACK_MODE: g_eeGeneral.jackMode = editChoice(LCD_W-2, y, STR_JACK_MODE, STR_JACK_MODES, g_eeGeneral.jackMode, JACK_UNSELECTED_MODE, JACK_MAX_MODE, attr|RIGHT, event); diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index e1cb5f0a454..0009f49bbb3 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -22,6 +22,7 @@ #include "hal/adc_driver.h" #include "hal/adc_driver.h" #include "hal/switch_driver.h" +#include "hal/usb_driver.h" #include "hal/module_port.h" #include "edgetx.h" @@ -103,6 +104,7 @@ enum MenuModelSetupItems { #endif ITEM_MODEL_SETUP_BEEP_CENTER, ITEM_MODEL_SETUP_USE_JITTER_FILTER, + ITEM_MODEL_SETUP_USB_MODE, #if defined(PXX2) ITEM_MODEL_SETUP_REGISTRATION_ID, #endif @@ -538,6 +540,7 @@ void menuModelSetup(event_t event) uint8_t(NAVIGATION_LINE_BY_LINE | (adcGetInputOffset(ADC_INPUT_FLEX + 1) - 1)), // ITEM_MODEL_SETUP_BEEP_CENTER 0, // ITEM_MODEL_SETUP_USE_JITTER_FILTER + 0, // ITEM_MODEL_SETUP_USB_MODE REGISTRATION_ID_ROWS // ITEM_MODEL_SETUP_REGISTRATION_ID @@ -1029,6 +1032,10 @@ void menuModelSetup(event_t event) g_model.jitterFilter = editChoice(MODEL_SETUP_2ND_COLUMN, y, STR_JITTER_FILTER, STR_ADCFILTERVALUES, g_model.jitterFilter, 0, 2, attr, event); break; + case ITEM_MODEL_SETUP_USB_MODE: + g_model.usbMode = editChoice(MODEL_SETUP_2ND_COLUMN, y, STR_USBMODE, STR_MODEL_USBMODES, g_model.usbMode, USBMODE_GLOBAL, USB_MAX_MODE + 1, attr, event); + break; + case ITEM_MODEL_SETUP_INTERNAL_MODULE_LABEL: lcdDrawTextAlignedLeft(y, STR_INTERNALRF); break; diff --git a/radio/src/gui/212x64/radio_setup.cpp b/radio/src/gui/212x64/radio_setup.cpp index c844370bea3..9d35aea294e 100644 --- a/radio/src/gui/212x64/radio_setup.cpp +++ b/radio/src/gui/212x64/radio_setup.cpp @@ -115,6 +115,7 @@ enum MenuRadioSetupItems { IF_FAI_CHOICE(ITEM_RADIO_SETUP_FAI) ITEM_RADIO_SETUP_SWITCHES_DELAY, ITEM_RADIO_SETUP_USB_MODE, + ITEM_RADIO_SETUP_USB_MODE_OVERRIDE, ITEM_RADIO_SETUP_RX_CHANNEL_ORD, CASE_ROTARY_ENCODER(ITEM_RADIO_SETUP_ROTARY_ENC_MODE) ITEM_RADIO_SETUP_STICK_MODE_LABELS, @@ -146,6 +147,7 @@ static struct RadioSetupExpandState expandState; static uint8_t SOUND_ROW(uint8_t value) { return expandState.sound ? value : HIDDEN_ROW; } static uint8_t SOUND_WARNING_ROW(uint8_t value) { return expandState.sound && isFunctionActive(FUNCTION_VOLUME) ? value : HIDDEN_ROW; } static uint8_t BACKLIGHT_WARNING_ROW(uint8_t value) { return isFunctionActive(FUNCTION_BACKLIGHT) ? value : HIDDEN_ROW; } +static uint8_t USB_MODE_OVERRIDE_ROW(uint8_t value) { return g_model.usbMode != USBMODE_GLOBAL ? value : HIDDEN_ROW; } static uint8_t ALARMS_ROW(uint8_t value) { return expandState.alarms ? value : HIDDEN_ROW; } @@ -263,6 +265,7 @@ void menuRadioSetup(event_t event) IF_FAI_CHOICE(0) 0, // switches delay 0, // USB mode + USB_MODE_OVERRIDE_ROW(LABEL(0)), // model USB mode override 0, // RX channels order CASE_ROTARY_ENCODER(0) // Invert rotary encoder LABEL(TX_MODE), @@ -790,6 +793,13 @@ void menuRadioSetup(event_t event) g_eeGeneral.USBMode = editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_USBMODE, STR_USBMODES, g_eeGeneral.USBMode, USB_UNSELECTED_MODE, USB_MAX_MODE, attr, event); break; + case ITEM_RADIO_SETUP_USB_MODE_OVERRIDE: { + std::string s(STR_MODEL); + s += " - "; + s += STR_MODEL_USBMODES[g_model.usbMode]; + lcdDrawText(LCD_W - MENUS_SCROLLBAR_WIDTH, y, s.c_str(), RIGHT); + } break; + case ITEM_RADIO_SETUP_RX_CHANNEL_ORD: lcdDrawTextAlignedLeft(y, STR_DEF_CHAN_ORD); // RAET->AETR { diff --git a/radio/src/gui/colorlcd/model/model_setup.cpp b/radio/src/gui/colorlcd/model/model_setup.cpp index d969f9ac1dc..9f5e29b296c 100644 --- a/radio/src/gui/colorlcd/model/model_setup.cpp +++ b/radio/src/gui/colorlcd/model/model_setup.cpp @@ -30,6 +30,7 @@ #include "filechoice.h" #include "getset_helpers.h" #include "hal/adc_driver.h" +#include "hal/usb_driver.h" #include "menu.h" #include "model_heli.h" #include "module_setup.h" @@ -264,6 +265,13 @@ const static SetupLineDef otherPageSetupLines[] = { GET_SET_DEFAULT(g_model.jitterFilter)); } }, + { + STR_DEF(STR_USBMODE), + [](Window* parent, coord_t x, coord_t y) { + new Choice(parent, {x, y, 0, 0}, STR_MODEL_USBMODES, USBMODE_GLOBAL, + USB_MAX_MODE + 1, GET_SET_DEFAULT(g_model.usbMode)); + } + }, { STR_DEF(STR_BEEPCTR), [](Window* parent, coord_t x, coord_t y) {} }, diff --git a/radio/src/gui/colorlcd/radio/radio_hardware.cpp b/radio/src/gui/colorlcd/radio/radio_hardware.cpp index 618043f6c2d..fc57e4c3af6 100644 --- a/radio/src/gui/colorlcd/radio/radio_hardware.cpp +++ b/radio/src/gui/colorlcd/radio/radio_hardware.cpp @@ -148,6 +148,13 @@ const static SetupLineDef setupLines[] = { STR_DEF(STR_JITTER_FILTER), [](Window* parent, coord_t x, coord_t y) { new ToggleSwitch(parent, {x, y, 0, 0}, GET_SET_INVERTED(g_eeGeneral.noJitterFilter)); + if (g_model.jitterFilter != OVERRIDE_GLOBAL) { + std::string s(STR_MODEL); + s += " - "; + s += STR_ADCFILTERVALUES[g_model.jitterFilter]; + new StaticText(parent, {x + ToggleSwitch::TOGGLE_W + PAD_MEDIUM, y + PAD_SMALL + 1, 0, 0}, + s.c_str(), COLOR_THEME_SECONDARY1_INDEX); + } } }, #if defined(AUDIO_MUTE_GPIO) diff --git a/radio/src/gui/colorlcd/radio/radio_setup.cpp b/radio/src/gui/colorlcd/radio/radio_setup.cpp index 17afea6322b..4435c7f7d22 100644 --- a/radio/src/gui/colorlcd/radio/radio_setup.cpp +++ b/radio/src/gui/colorlcd/radio/radio_setup.cpp @@ -1045,8 +1045,16 @@ const static SetupLineDef setupLines[] = { // USB mode STR_DEF(STR_USBMODE), [](Window* parent, coord_t x, coord_t y) { - new Choice(parent, {x, y, 0, 0}, STR_USBMODES, USB_UNSELECTED_MODE, USB_MAX_MODE, + new Choice(parent, {x, y, RadioSetupPage::USB_MODE_W, 0}, STR_USBMODES, + USB_UNSELECTED_MODE, USB_MAX_MODE, GET_SET_DEFAULT(g_eeGeneral.USBMode)); + if (g_model.usbMode != USBMODE_GLOBAL) { + std::string s(STR_MODEL); + s += " - "; + s += STR_MODEL_USBMODES[g_model.usbMode]; + new StaticText(parent, {x + RadioSetupPage::USB_MODE_W + PAD_MEDIUM, y + PAD_SMALL + 1, 0, 0}, + s.c_str(), COLOR_THEME_SECONDARY1_INDEX); + } } }, #if defined(USB_CHARGE_CONTROL) diff --git a/radio/src/gui/colorlcd/radio/radio_setup.h b/radio/src/gui/colorlcd/radio/radio_setup.h index de419788f40..549a9248cbf 100644 --- a/radio/src/gui/colorlcd/radio/radio_setup.h +++ b/radio/src/gui/colorlcd/radio/radio_setup.h @@ -33,4 +33,5 @@ class RadioSetupPage: public PageGroupItem static LAYOUT_ORIENTATION(BTN_COLS, 3, 2) static LAYOUT_VAL_SCALED(BTN_H, 62) static LAYOUT_VAL_SCALED(HATS_MODE_W, 120) + static LAYOUT_VAL_SCALED(USB_MODE_W, 120) }; diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index 6916d9461f4..363da407e88 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -93,6 +93,7 @@ enum { ITEM_RADIO_HARDWARE_SERIAL_PORT, ITEM_RADIO_HARDWARE_SERIAL_PORT_END = ITEM_RADIO_HARDWARE_SERIAL_PORT + MAX_SERIAL_PORTS - 1, ITEM_RADIO_HARDWARE_JITTER_FILTER, + ITEM_RADIO_HARDWARE_JITTER_FILTER_OVERRIDE, ITEM_RADIO_HARDWARE_RAS, ITEM_RADIO_HARDWARE_SPORT_UPDATE_POWER, #if (defined(BACKLIGHT_GPIO) || OLED_SCREEN) && (LCD_W == 128) @@ -366,6 +367,8 @@ static void _init_menu_tab_array(uint8_t* tab, size_t len) } tab[ITEM_RADIO_HARDWARE_SERIAL_PORT_LABEL] = has_serial ? READONLY_ROW : HIDDEN_ROW; tab[ITEM_RADIO_HARDWARE_JITTER_FILTER] = 0; + tab[ITEM_RADIO_HARDWARE_JITTER_FILTER_OVERRIDE] = + g_model.jitterFilter != OVERRIDE_GLOBAL ? READONLY_ROW : HIDDEN_ROW; #if defined(HARDWARE_INTERNAL_RAS) tab[ITEM_RADIO_HARDWARE_RAS] = READONLY_ROW; #else @@ -602,6 +605,13 @@ void menuRadioHardware(event_t event) event); break; + case ITEM_RADIO_HARDWARE_JITTER_FILTER_OVERRIDE: { + std::string s(STR_MODEL); + s += " - "; + s += STR_ADCFILTERVALUES[g_model.jitterFilter]; + lcdDrawText(LCD_W - MENUS_SCROLLBAR_WIDTH, y, s.c_str(), RIGHT); + } break; + case ITEM_RADIO_HARDWARE_RAS: #if defined(HARDWARE_INTERNAL_RAS) lcdDrawTextAlignedLeft(y, "RAS"); diff --git a/radio/src/lua/api_model.cpp b/radio/src/lua/api_model.cpp index ad161ccd941..e13e8ef05b7 100644 --- a/radio/src/lua/api_model.cpp +++ b/radio/src/lua/api_model.cpp @@ -51,10 +51,11 @@ Get current Model information * `name` (string) model name * `extendedLimits` (boolean) extended limits enabled * `jitterFilter` (number) model level ADC filter + * `usbMode` (number) model level USB mode (0 = global, 1 = ask, 2 = joystick, 3 = storage, 4 = serial) * `bitmap` (string) bitmap name (not present on X7) * `filename` (string) model filename -@status current Introduced in 2.0.6, changed in 2.2.0, filename added in 2.6.0, extendedLimits, jitterFilter, and labels added in 2.8.0 +@status current Introduced in 2.0.6, changed in 2.2.0, filename added in 2.6.0, extendedLimits, jitterFilter, and labels added in 2.8.0, usbMode added in 3.0.0 */ static int luaModelGetInfo(lua_State *L) { @@ -62,6 +63,7 @@ static int luaModelGetInfo(lua_State *L) lua_pushtablenstring(L, "name", g_model.header.name); lua_pushtableboolean(L, "extendedLimits", g_model.extendedLimits); lua_pushtableinteger(L, "jitterFilter", g_model.jitterFilter); + lua_pushtableinteger(L, "usbMode", g_model.usbMode); #if LCD_DEPTH > 1 lua_pushtablenstring(L, "bitmap", g_model.header.bitmap); #endif @@ -90,7 +92,7 @@ Set the current Model information @notice If a parameter is missing from the value, then that parameter remains unchanged. -@status current Introduced in 2.0.6, extendedLimits and jitterFilter added in 2.8.0 +@status current Introduced in 2.0.6, extendedLimits and jitterFilter added in 2.8.0, usbMode added in 3.0.0 */ static int luaModelSetInfo(lua_State *L) { @@ -110,6 +112,11 @@ static int luaModelSetInfo(lua_State *L) if (j > OVERRIDE_ON) j = OVERRIDE_ON; g_model.jitterFilter = j; } + else if (!strcmp(key, "usbMode")) { + auto m = lua_tointeger(L, -1); + if (m < USBMODE_GLOBAL || m > USBMODE_SERIAL) m = USBMODE_GLOBAL; + g_model.usbMode = m; + } #if LCD_DEPTH > 1 else if (!strcmp(key, "bitmap")) { const char * name = luaL_checkstring(L, -1); diff --git a/radio/src/main.cpp b/radio/src/main.cpp index 172d1ebf4ec..7c10d2e7781 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -163,6 +163,17 @@ class UsbSDConnected : public Window static UsbSDConnected* usbConnectedWindow = nullptr; #endif +#if defined(STM32) && !defined(SIMU) +// Model USB mode takes priority, falling back to the radio setting +static uint8_t getModelUsbMode() +{ + uint8_t mode = g_model.usbMode == USBMODE_GLOBAL ? g_eeGeneral.USBMode + : g_model.usbMode - 1; + // e.g. serial selected on a target without USB serial + return mode > USB_MAX_MODE ? USB_UNSELECTED_MODE : mode; +} +#endif + void handleUsbConnection() { #if defined(STM32) && !defined(SIMU) @@ -189,10 +200,11 @@ void handleUsbConnection() if (!_usbDisabled && !usbStarted() && usbPlugged()) { if (getSelectedUsbMode() == USB_UNSELECTED_MODE) { - if (g_eeGeneral.USBMode == USB_UNSELECTED_MODE) { + uint8_t usbMode = getModelUsbMode(); + if (usbMode == USB_UNSELECTED_MODE) { openUsbMenu(); } else { - setSelectedUsbMode(g_eeGeneral.USBMode); + setSelectedUsbMode(usbMode); } } diff --git a/radio/src/storage/yaml/yaml_datastructs_128x64.cpp b/radio/src/storage/yaml/yaml_datastructs_128x64.cpp index ce268783237..dd67a5aeb74 100644 --- a/radio/src/storage/yaml/yaml_datastructs_128x64.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_128x64.cpp @@ -220,6 +220,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -897,6 +905,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_c14.cpp b/radio/src/storage/yaml/yaml_datastructs_c14.cpp index cf0504c76d3..c270c975b89 100644 --- a/radio/src/storage/yaml/yaml_datastructs_c14.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_c14.cpp @@ -273,6 +273,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -993,6 +1001,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_f16.cpp b/radio/src/storage/yaml/yaml_datastructs_f16.cpp index 9684e69e44f..f04adf8a1ea 100644 --- a/radio/src/storage/yaml/yaml_datastructs_f16.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_f16.cpp @@ -274,6 +274,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -994,6 +1002,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_gx12.cpp b/radio/src/storage/yaml/yaml_datastructs_gx12.cpp index caaf884bbca..b1ae53dc998 100644 --- a/radio/src/storage/yaml/yaml_datastructs_gx12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_gx12.cpp @@ -233,6 +233,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -945,6 +953,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_gx15.cpp b/radio/src/storage/yaml/yaml_datastructs_gx15.cpp index e2408a9266f..7fd5ef37b53 100644 --- a/radio/src/storage/yaml/yaml_datastructs_gx15.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_gx15.cpp @@ -286,6 +286,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -1045,6 +1053,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_h17.cpp b/radio/src/storage/yaml/yaml_datastructs_h17.cpp index 9ebd2333693..4a70047cb18 100644 --- a/radio/src/storage/yaml/yaml_datastructs_h17.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_h17.cpp @@ -271,6 +271,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -991,6 +999,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_nb4p.cpp b/radio/src/storage/yaml/yaml_datastructs_nb4p.cpp index f6f10ccf0fc..d108aea4d65 100644 --- a/radio/src/storage/yaml/yaml_datastructs_nb4p.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_nb4p.cpp @@ -265,6 +265,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -984,6 +992,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp index d0126b193e2..f651b594837 100644 --- a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp @@ -265,6 +265,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -981,6 +989,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_pa01.cpp b/radio/src/storage/yaml/yaml_datastructs_pa01.cpp index b4456ad324b..7ded807e9b7 100644 --- a/radio/src/storage/yaml/yaml_datastructs_pa01.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_pa01.cpp @@ -286,6 +286,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -1041,6 +1049,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_pl18.cpp b/radio/src/storage/yaml/yaml_datastructs_pl18.cpp index 925a74aa02e..39731b9f1ec 100644 --- a/radio/src/storage/yaml/yaml_datastructs_pl18.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_pl18.cpp @@ -272,6 +272,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -992,6 +1000,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_pl18u.cpp b/radio/src/storage/yaml/yaml_datastructs_pl18u.cpp index ab40307e25e..2e584aa455f 100644 --- a/radio/src/storage/yaml/yaml_datastructs_pl18u.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_pl18u.cpp @@ -265,6 +265,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -984,6 +992,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_st16.cpp b/radio/src/storage/yaml/yaml_datastructs_st16.cpp index e8b9d5ce179..c6edf8cfe12 100644 --- a/radio/src/storage/yaml/yaml_datastructs_st16.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_st16.cpp @@ -286,6 +286,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -1041,6 +1049,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_t15.cpp b/radio/src/storage/yaml/yaml_datastructs_t15.cpp index a5fabe32c90..189ac414b27 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t15.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t15.cpp @@ -281,6 +281,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -1019,6 +1027,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_t15h7.cpp b/radio/src/storage/yaml/yaml_datastructs_t15h7.cpp index f79e24ef5aa..0aabfd34a7e 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t15h7.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t15h7.cpp @@ -286,6 +286,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -1044,6 +1052,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_t15pro.cpp b/radio/src/storage/yaml/yaml_datastructs_t15pro.cpp index f79e24ef5aa..0aabfd34a7e 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t15pro.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t15pro.cpp @@ -286,6 +286,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -1044,6 +1052,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_t18h7.cpp b/radio/src/storage/yaml/yaml_datastructs_t18h7.cpp index c96450203a1..e5e12231101 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t18h7.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t18h7.cpp @@ -284,6 +284,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -1036,6 +1044,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_t20.cpp b/radio/src/storage/yaml/yaml_datastructs_t20.cpp index a49a62d442b..d46524d385a 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t20.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t20.cpp @@ -228,6 +228,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -923,6 +931,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_t22.cpp b/radio/src/storage/yaml/yaml_datastructs_t22.cpp index f79e24ef5aa..0aabfd34a7e 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t22.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t22.cpp @@ -286,6 +286,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -1044,6 +1052,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_tpro.cpp b/radio/src/storage/yaml/yaml_datastructs_tpro.cpp index f69076df436..f7b3447276b 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tpro.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tpro.cpp @@ -228,6 +228,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -923,6 +931,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_tx15.cpp b/radio/src/storage/yaml/yaml_datastructs_tx15.cpp index e2408a9266f..7fd5ef37b53 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tx15.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tx15.cpp @@ -286,6 +286,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -1045,6 +1053,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_tx16smk3.cpp b/radio/src/storage/yaml/yaml_datastructs_tx16smk3.cpp index 98dda422b88..373e5cf5a24 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tx16smk3.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tx16smk3.cpp @@ -287,6 +287,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -1046,6 +1054,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_v12.cpp b/radio/src/storage/yaml/yaml_datastructs_v12.cpp index 28af2bd9514..2d38e43ff55 100644 --- a/radio/src/storage/yaml/yaml_datastructs_v12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_v12.cpp @@ -284,6 +284,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -1039,6 +1047,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_v15.cpp b/radio/src/storage/yaml/yaml_datastructs_v15.cpp index e02e5778373..c80bfc16488 100644 --- a/radio/src/storage/yaml/yaml_datastructs_v15.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_v15.cpp @@ -288,6 +288,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -1046,6 +1054,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_x10.cpp b/radio/src/storage/yaml/yaml_datastructs_x10.cpp index 8bd8696c8ec..436ff95a798 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x10.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x10.cpp @@ -273,6 +273,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -993,6 +1001,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp index fe91c2c6baf..d188f4477d0 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp @@ -213,6 +213,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -888,6 +896,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_x9dp2019.cpp b/radio/src/storage/yaml/yaml_datastructs_x9dp2019.cpp index ef79db19d7e..92206f99d4c 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9dp2019.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9dp2019.cpp @@ -220,6 +220,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -899,6 +907,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp index 49b8a31a708..fdbcd10540c 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp @@ -213,6 +213,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -889,6 +897,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_xlite.cpp b/radio/src/storage/yaml/yaml_datastructs_xlite.cpp index ce268783237..dd67a5aeb74 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlite.cpp @@ -220,6 +220,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -897,6 +905,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp index a9fe43589f3..742cae33794 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp @@ -222,6 +222,14 @@ const struct YamlIdStr enum_USBJoystickCh[] = { { USBJOYS_CH_SIM, "CH_SIM" }, { 0, NULL } }; +const struct YamlIdStr enum_ModelUsbMode[] = { + { USBMODE_GLOBAL, "GLOBAL" }, + { USBMODE_ASK, "ASK" }, + { USBMODE_JOYSTICK, "JOYSTICK" }, + { USBMODE_STORAGE, "STORAGE" }, + { USBMODE_SERIAL, "SERIAL" }, + { 0, NULL } +}; // // Structs last @@ -902,6 +910,7 @@ static const struct YamlNode struct_ModelData[] = { YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable, NULL), YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable, NULL), + YAML_ENUM("usbMode", 3, enum_ModelUsbMode, NULL), YAML_ARRAY("userData", 0, 50, struct_UserData, userdata_is_active), YAML_END }; diff --git a/radio/src/translations/i18n/cn.h b/radio/src/translations/i18n/cn.h index c9e43c5d280..626f29dc8b1 100644 --- a/radio/src/translations/i18n/cn.h +++ b/radio/src/translations/i18n/cn.h @@ -144,11 +144,12 @@ #define TR_AUX_SERIAL_MODES_9 "Debug" #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "外置发射" +#define TR_GLOBAL "全局" #define TR_SWTYPES_1 "禁用" #define TR_SWTYPES_2 "回弹" #define TR_SWTYPES_3 "2段" #define TR_SWTYPES_4 "3段" -#define TR_SWTYPES_5 "全局" +#define TR_SWTYPES_5 TR_GLOBAL #define TR_POTTYPES_1 "禁用" #define TR_POTTYPES_2 "无中点旋钮" #define TR_POTTYPES_3 TR("中点旋钮","有中点旋钮") @@ -167,6 +168,11 @@ #define TR_USBMODES_2 "游戏柄" #define TR_USBMODES_3 "存储器" #define TR_USBMODES_4 "串行" +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "询问" #define TR_JACK_MODES_2 "音频" #define TR_JACK_MODES_3 "教练" @@ -197,7 +203,7 @@ #define TR_CURVE_TYPES_1 "标准" #define TR_CURVE_TYPES_2 "自定义" -#define TR_ADCFILTERVALUES_1 "全局" +#define TR_ADCFILTERVALUES_1 TR_GLOBAL #define TR_ADCFILTERVALUES_2 "禁用" #define TR_ADCFILTERVALUES_3 "开启" @@ -346,7 +352,7 @@ #define TR_HATSOPT_1 "微调" #define TR_HATSOPT_2 "导航键" #define TR_HATSOPT_3 "可切换" -#define TR_HATSOPT_4 "全局" +#define TR_HATSOPT_4 TR_GLOBAL #define TR_HATSMODE_TRIMS "按键帽: 微调" #define TR_HATSMODE_KEYS "按键帽: 导航键" #define TR_HATSMODE_KEYS_HELP "左侧按键帽:\n"\ diff --git a/radio/src/translations/i18n/cz.h b/radio/src/translations/i18n/cz.h index 3a951ac22ee..d714b037bce 100644 --- a/radio/src/translations/i18n/cz.h +++ b/radio/src/translations/i18n/cz.h @@ -150,11 +150,12 @@ #define TR_AUX_SERIAL_MODES_9 "Debug" #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "Externí modul" +#define TR_GLOBAL "Globální" #define TR_SWTYPES_1 "Žádný" #define TR_SWTYPES_2 "Bez aretace" #define TR_SWTYPES_3 "2-polohový" #define TR_SWTYPES_4 "3-polohový" -#define TR_SWTYPES_5 "Globální" +#define TR_SWTYPES_5 TR_GLOBAL #define TR_POTTYPES_1 "Žádný" #define TR_POTTYPES_2 TR("Pot","Potenciometr") #define TR_POTTYPES_3 TR("Pot s aret.","Pot s aretací") @@ -173,6 +174,11 @@ #define TR_USBMODES_2 TR("Joyst","Joystick") #define TR_USBMODES_3 TR("SDkarta","Úložiště") #define TR_USBMODES_4 "Serial" +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "Zeptat" #define TR_JACK_MODES_2 "Audio" #define TR_JACK_MODES_3 "Trenér" @@ -199,7 +205,7 @@ #define TR_CURVE_TYPES_1 "Rastr-X" #define TR_CURVE_TYPES_2 "Volná-XY" -#define TR_ADCFILTERVALUES_1 "Globální" +#define TR_ADCFILTERVALUES_1 TR_GLOBAL #define TR_ADCFILTERVALUES_2 "Vyp" #define TR_ADCFILTERVALUES_3 "Zap" @@ -347,7 +353,7 @@ #define TR_HATSOPT_1 "Pouze trimy" #define TR_HATSOPT_2 "Pouze tlačítka" #define TR_HATSOPT_3 "Přepinatelné" -#define TR_HATSOPT_4 "Globální" +#define TR_HATSOPT_4 TR_GLOBAL #define TR_HATSMODE_TRIMS "Režim kloboučků: Trimy" #define TR_HATSMODE_KEYS "Režim kloboučků: Tlačítka" #define TR_HATSMODE_KEYS_HELP "Levá strana:\n"\ diff --git a/radio/src/translations/i18n/da.h b/radio/src/translations/i18n/da.h index 535ebbcc535..9f6a9338127 100644 --- a/radio/src/translations/i18n/da.h +++ b/radio/src/translations/i18n/da.h @@ -145,11 +145,12 @@ #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "Eksternt modul" +#define TR_GLOBAL "Global" #define TR_SWTYPES_1 "Ingen" #define TR_SWTYPES_2 "2 pos skift" #define TR_SWTYPES_3 "2 position" #define TR_SWTYPES_4 "3 position" -#define TR_SWTYPES_5 "Global" +#define TR_SWTYPES_5 TR_GLOBAL #define TR_POTTYPES_1 "Ingen" #define TR_POTTYPES_2 TR("Drejek.", "Drejekontakt") @@ -169,6 +170,11 @@ #define TR_USBMODES_2 TR("Joyst","Joystik") #define TR_USBMODES_3 TR("Lager","USB lager") #define TR_USBMODES_4 TR("Data", "USB data") +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "Spørg" #define TR_JACK_MODES_2 "Audio" #define TR_JACK_MODES_3 "Træner" @@ -199,7 +205,7 @@ #define TR_CURVE_TYPES_1 "Standard" #define TR_CURVE_TYPES_2 "Tilpasset" -#define TR_ADCFILTERVALUES_1 "Global" +#define TR_ADCFILTERVALUES_1 TR_GLOBAL #define TR_ADCFILTERVALUES_2 "Fra" #define TR_ADCFILTERVALUES_3 "Til" @@ -348,7 +354,7 @@ #define TR_HATSOPT_1 "Kun trim" #define TR_HATSOPT_2 "Kun knap" #define TR_HATSOPT_3 "Trim / Knap" -#define TR_HATSOPT_4 "Global" +#define TR_HATSOPT_4 TR_GLOBAL #define TR_HATSMODE_TRIMS "Joystik: Trim" #define TR_HATSMODE_KEYS "Joystik: Knap" #define TR_HATSMODE_KEYS_HELP "Venstre side:\n"\ @@ -980,7 +986,7 @@ #define TR_MENU_POWER_METER "STRØM MÅLER" #define TR_SENSOR "SENSOR" #define TR_COUNTRY_CODE "Lande kode" -#define TR_USBMODE "USB tilstand" +#define TR_USBMODE TR("USB tilst.", "USB tilstand") #define TR_USB_CHARGE "Oplad med radio tændt" #define TR_JACK_MODE "Jack tilstand" #define TR_VOICE_LANGUAGE "Stemme sprog" diff --git a/radio/src/translations/i18n/de.h b/radio/src/translations/i18n/de.h index 2cfdceeff1d..e16600f6459 100644 --- a/radio/src/translations/i18n/de.h +++ b/radio/src/translations/i18n/de.h @@ -147,11 +147,12 @@ #define TR_AUX_SERIAL_MODES_9 "Debug" #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "Externes Modul" +#define TR_GLOBAL "Global" #define TR_SWTYPES_1 "Kein" #define TR_SWTYPES_2 "Taster" #define TR_SWTYPES_3 "2POS" #define TR_SWTYPES_4 "3POS" -#define TR_SWTYPES_5 "Global" +#define TR_SWTYPES_5 TR_GLOBAL #define TR_POTTYPES_1 "Kein" #define TR_POTTYPES_2 "Poti" #define TR_POTTYPES_3 TR("Pot m. Ras","Poti mit Raste") @@ -170,6 +171,11 @@ #define TR_USBMODES_2 TR("Joyst","Joystick") #define TR_USBMODES_3 TR("SDCard","Speicher") #define TR_USBMODES_4 TR("Serial","Seriell") +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "Popup" #define TR_JACK_MODES_2 "Audio" #define TR_JACK_MODES_3 "Trainer" @@ -200,7 +206,7 @@ #define TR_CURVE_TYPES_1 "Standard" #define TR_CURVE_TYPES_2 "Eigene" -#define TR_ADCFILTERVALUES_1 "Global" +#define TR_ADCFILTERVALUES_1 TR_GLOBAL #define TR_ADCFILTERVALUES_2 "Aus" #define TR_ADCFILTERVALUES_3 "Ein" @@ -348,7 +354,7 @@ #define TR_HATSOPT_1 "nur Trimmer" #define TR_HATSOPT_2 "nur Tasten" #define TR_HATSOPT_3 "Umschaltbar" -#define TR_HATSOPT_4 "Global" +#define TR_HATSOPT_4 TR_GLOBAL #define TR_HATSMODE_TRIMS "Joystick Modus: Trimmer" #define TR_HATSMODE_KEYS "Joystick Modus: Tasten" #define TR_HATSMODE_KEYS_HELP "Linke Seite:\n"\ diff --git a/radio/src/translations/i18n/en.h b/radio/src/translations/i18n/en.h index 30f96879825..c89ac711e31 100644 --- a/radio/src/translations/i18n/en.h +++ b/radio/src/translations/i18n/en.h @@ -144,11 +144,12 @@ #define TR_AUX_SERIAL_MODES_9 "Debug" #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "External module" +#define TR_GLOBAL "Global" #define TR_SWTYPES_1 "None" #define TR_SWTYPES_2 "Toggle" #define TR_SWTYPES_3 "2POS" #define TR_SWTYPES_4 "3POS" -#define TR_SWTYPES_5 "Global" +#define TR_SWTYPES_5 TR_GLOBAL #define TR_POTTYPES_1 "None" #define TR_POTTYPES_2 "Pot" #define TR_POTTYPES_3 TR("Pot w. det","Pot with detent") @@ -167,6 +168,11 @@ #define TR_USBMODES_2 TR("Joyst","Joystick") #define TR_USBMODES_3 TR("SDCard","Storage") #define TR_USBMODES_4 "Serial" +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "Ask" #define TR_JACK_MODES_2 "Audio" #define TR_JACK_MODES_3 "Trainer" @@ -197,7 +203,7 @@ #define TR_CURVE_TYPES_1 "Standard" #define TR_CURVE_TYPES_2 "Custom" -#define TR_ADCFILTERVALUES_1 "Global" +#define TR_ADCFILTERVALUES_1 TR_GLOBAL #define TR_ADCFILTERVALUES_2 "Off" #define TR_ADCFILTERVALUES_3 "On" @@ -346,7 +352,7 @@ #define TR_HATSOPT_1 "Trims only" #define TR_HATSOPT_2 "Keys only" #define TR_HATSOPT_3 "Switchable" -#define TR_HATSOPT_4 "Global" +#define TR_HATSOPT_4 TR_GLOBAL #define TR_HATSMODE_TRIMS "Hats mode: Trims" #define TR_HATSMODE_KEYS "Hats mode: Keys" #define TR_HATSMODE_KEYS_HELP "Left side:\n"\ diff --git a/radio/src/translations/i18n/es.h b/radio/src/translations/i18n/es.h index 5c4f5a1cdc0..05370adcf39 100644 --- a/radio/src/translations/i18n/es.h +++ b/radio/src/translations/i18n/es.h @@ -145,11 +145,12 @@ #define TR_AUX_SERIAL_MODES_9 "Debug" #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "Módulo externo" +#define TR_GLOBAL "Global" #define TR_SWTYPES_1 "Nada" #define TR_SWTYPES_2 "Palanca" #define TR_SWTYPES_3 "2POS" #define TR_SWTYPES_4 "3POS" -#define TR_SWTYPES_5 "Global" +#define TR_SWTYPES_5 TR_GLOBAL #define TR_POTTYPES_1 "Nada" #define TR_POTTYPES_2 "Pot" #define TR_POTTYPES_3 TR("Pot con fij","Pot con fijador") @@ -168,6 +169,11 @@ #define TR_USBMODES_2 "Joystick" #define TR_USBMODES_3 "SDCard" #define TR_USBMODES_4 "Serie" +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "Pregunta" #define TR_JACK_MODES_2 "Audio" #define TR_JACK_MODES_3 "Entrena." @@ -197,7 +203,7 @@ #define TR_VVARIOCENTER_2 "Silencio" #define TR_CURVE_TYPES_1 "Normal" #define TR_CURVE_TYPES_2 "Custom" -#define TR_ADCFILTERVALUES_1 "Global" +#define TR_ADCFILTERVALUES_1 TR_GLOBAL #define TR_ADCFILTERVALUES_2 "Off" #define TR_ADCFILTERVALUES_3 "On" @@ -344,7 +350,7 @@ #define TR_HATSOPT_1 "Trims only" #define TR_HATSOPT_2 "Keys only" #define TR_HATSOPT_3 "Switchable" -#define TR_HATSOPT_4 "Global" +#define TR_HATSOPT_4 TR_GLOBAL #define TR_HATSMODE_TRIMS "Hats mode: Trims" #define TR_HATSMODE_KEYS "Hats mode: Keys" #define TR_HATSMODE_KEYS_HELP "Left side:\n"\ diff --git a/radio/src/translations/i18n/fi.h b/radio/src/translations/i18n/fi.h index 591806a5d37..4a8da731af1 100644 --- a/radio/src/translations/i18n/fi.h +++ b/radio/src/translations/i18n/fi.h @@ -145,11 +145,12 @@ #define TR_AUX_SERIAL_MODES_9 "Debug" #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "External module" +#define TR_GLOBAL "Global" #define TR_SWTYPES_1 "None" #define TR_SWTYPES_2 "Toggle" #define TR_SWTYPES_3 "2POS" #define TR_SWTYPES_4 "3POS" -#define TR_SWTYPES_5 "Global" +#define TR_SWTYPES_5 TR_GLOBAL #define TR_POTTYPES_1 "None" #define TR_POTTYPES_2 TR("Pot","Potikka") #define TR_POTTYPES_3 TR("Pot w. det","Pot with detent") @@ -168,6 +169,11 @@ #define TR_USBMODES_2 TR("Joyst","Joystick") #define TR_USBMODES_3 TR("SDCard","Storage") #define TR_USBMODES_4 "Serial" +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "Ask" #define TR_JACK_MODES_2 "Audio" #define TR_JACK_MODES_3 "Trainer" @@ -198,7 +204,7 @@ #define TR_CURVE_TYPES_1 "Standard" #define TR_CURVE_TYPES_2 "Custom" -#define TR_ADCFILTERVALUES_1 "Global" +#define TR_ADCFILTERVALUES_1 TR_GLOBAL #define TR_ADCFILTERVALUES_2 "Off" #define TR_ADCFILTERVALUES_3 "On" @@ -345,7 +351,7 @@ #define TR_HATSOPT_1 "Trims only" #define TR_HATSOPT_2 "Keys only" #define TR_HATSOPT_3 "Switchable" -#define TR_HATSOPT_4 "Global" +#define TR_HATSOPT_4 TR_GLOBAL #define TR_HATSMODE_TRIMS "Hats mode: Trims" #define TR_HATSMODE_KEYS "Hats mode: Keys" #define TR_HATSMODE_KEYS_HELP "Left side:\n"\ diff --git a/radio/src/translations/i18n/fr.h b/radio/src/translations/i18n/fr.h index 0d75a9f779f..2cb7a25cb54 100644 --- a/radio/src/translations/i18n/fr.h +++ b/radio/src/translations/i18n/fr.h @@ -150,11 +150,12 @@ #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "Module externe" +#define TR_GLOBAL "Global" #define TR_SWTYPES_1 "Rien" #define TR_SWTYPES_2 "Monostable" #define TR_SWTYPES_3 "2-POS" #define TR_SWTYPES_4 "3-POS" -#define TR_SWTYPES_5 "Global" +#define TR_SWTYPES_5 TR_GLOBAL #define TR_POTTYPES_1 "Rien" #define TR_POTTYPES_2 TR("Pots","Potentiomètre") @@ -175,6 +176,11 @@ #define TR_USBMODES_2 TR("Joyst","Joystick") #define TR_USBMODES_3 TR("SDCard","Stockage") #define TR_USBMODES_4 "Série" +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "Demander" #define TR_JACK_MODES_2 "Audio" #define TR_JACK_MODES_3 "Écolage" @@ -201,7 +207,7 @@ #define TR_CURVE_TYPES_1 "Standard" #define TR_CURVE_TYPES_2 "Libre" -#define TR_ADCFILTERVALUES_1 "Global" +#define TR_ADCFILTERVALUES_1 TR_GLOBAL #define TR_ADCFILTERVALUES_2 "Off" #define TR_ADCFILTERVALUES_3 "On" @@ -349,7 +355,7 @@ #define TR_HATSOPT_1 "Trims uniquement" #define TR_HATSOPT_2 "Touches uniquement" #define TR_HATSOPT_3 "Commutable" -#define TR_HATSOPT_4 "Global" +#define TR_HATSOPT_4 TR_GLOBAL #define TR_HATSMODE_TRIMS "Mode joystick: trims" #define TR_HATSMODE_KEYS "Mode joystick: touches" #define TR_HATSMODE_KEYS_HELP "Left side:\n"\ diff --git a/radio/src/translations/i18n/he.h b/radio/src/translations/i18n/he.h index df67519eb2f..76042693328 100644 --- a/radio/src/translations/i18n/he.h +++ b/radio/src/translations/i18n/he.h @@ -147,11 +147,12 @@ #define TR_AUX_SERIAL_MODES_9 "ניפוי שגיאות" #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "מודול חיצוני" +#define TR_GLOBAL "גלובלי" #define TR_SWTYPES_1 "ללא" #define TR_SWTYPES_2 "החלפה" #define TR_SWTYPES_3 "2POS" #define TR_SWTYPES_4 "3POS" -#define TR_SWTYPES_5 "גלובלי" +#define TR_SWTYPES_5 TR_GLOBAL #define TR_POTTYPES_1 "ללא" #define TR_POTTYPES_2 "גלגלת" #define TR_POTTYPES_3 TR("גלגלת עם נקישות", "גלגלת עם נקישות") @@ -170,6 +171,11 @@ #define TR_USBMODES_2 TR("Joyst","חיבור משחק קבוע") #define TR_USBMODES_3 TR("SDCard","העברת נתונים קבוע") #define TR_USBMODES_4 "חיבור סיריילי קבוע" +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "שאל" #define TR_JACK_MODES_2 "סאונד" #define TR_JACK_MODES_3 "טריינר" @@ -200,7 +206,7 @@ #define TR_CURVE_TYPES_1 "סטנדרטי" #define TR_CURVE_TYPES_2 "עיצוב מיוחד" -#define TR_ADCFILTERVALUES_1 "גלובלי" +#define TR_ADCFILTERVALUES_1 TR_GLOBAL #define TR_ADCFILTERVALUES_2 "כבוי" #define TR_ADCFILTERVALUES_3 "דלוק" @@ -349,7 +355,7 @@ #define TR_HATSOPT_1 "קיזוזים בלבד" #define TR_HATSOPT_2 "ניווט בלבד" #define TR_HATSOPT_3 "משולב" -#define TR_HATSOPT_4 "גלובלי" +#define TR_HATSOPT_4 TR_GLOBAL #define TR_HATSMODE_TRIMS "מצב כובעונים: קיזוזים" #define TR_HATSMODE_KEYS "מצב כובעונים: ניווט" #define TR_HATSMODE_KEYS_HELP "Left side:\n"\ diff --git a/radio/src/translations/i18n/it.h b/radio/src/translations/i18n/it.h index ae8e22b6936..3b827b341db 100644 --- a/radio/src/translations/i18n/it.h +++ b/radio/src/translations/i18n/it.h @@ -144,6 +144,7 @@ #define TR_AUX_SERIAL_MODES_9 "Debug" #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "Modulo esterno" +#define TR_GLOBAL "Globale" #define TR_SWTYPES_1 "Disab." #define TR_SWTYPES_2 "Toggle" #define TR_SWTYPES_3 "2POS" @@ -167,6 +168,11 @@ #define TR_USBMODES_2 TR("Joyst","Joystick") #define TR_USBMODES_3 TR("SDCard","Storage") #define TR_USBMODES_4 TR("Serial","Seriale") +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "Chiedi" #define TR_JACK_MODES_2 "Audio" #define TR_JACK_MODES_3 "Trainer" @@ -346,7 +352,7 @@ #define TR_HATSOPT_1 "Solo trims" #define TR_HATSOPT_2 "Solo keys" #define TR_HATSOPT_3 "Commutabile" -#define TR_HATSOPT_4 "Globale" +#define TR_HATSOPT_4 TR_GLOBAL #define TR_HATSMODE_TRIMS "Modo joystick: trims" #define TR_HATSMODE_KEYS "Modo joystick: keys" #define TR_HATSMODE_KEYS_HELP "Lato sinistro:\n"\ diff --git a/radio/src/translations/i18n/jp.h b/radio/src/translations/i18n/jp.h index 73f55584db9..7c0fe11b7fc 100644 --- a/radio/src/translations/i18n/jp.h +++ b/radio/src/translations/i18n/jp.h @@ -144,11 +144,12 @@ #define TR_AUX_SERIAL_MODES_9 "デバッグ" #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "外部モジュール" +#define TR_GLOBAL "グローバル" #define TR_SWTYPES_1 "なし" #define TR_SWTYPES_2 "トグル" #define TR_SWTYPES_3 "2POS" #define TR_SWTYPES_4 "3POS" -#define TR_SWTYPES_5 "グローバル" +#define TR_SWTYPES_5 TR_GLOBAL #define TR_POTTYPES_1 "なし" #define TR_POTTYPES_2 "ダイヤル" #define TR_POTTYPES_3 TR("Pot w. det","ダイヤル(ノッチ)") @@ -167,6 +168,11 @@ #define TR_USBMODES_2 TR("Joyst","JoyStick") #define TR_USBMODES_3 TR("SDカード","ストレージ") #define TR_USBMODES_4 "シリアル" +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "確認" #define TR_JACK_MODES_2 "音声" #define TR_JACK_MODES_3 "トレーナー" @@ -197,7 +203,7 @@ #define TR_CURVE_TYPES_1 "スタンダード" #define TR_CURVE_TYPES_2 "カスタム" -#define TR_ADCFILTERVALUES_1 "グローバル" +#define TR_ADCFILTERVALUES_1 TR_GLOBAL #define TR_ADCFILTERVALUES_2 "OFF" #define TR_ADCFILTERVALUES_3 "ON" diff --git a/radio/src/translations/i18n/ko.h b/radio/src/translations/i18n/ko.h index 73b72fd46d0..7800a01be36 100644 --- a/radio/src/translations/i18n/ko.h +++ b/radio/src/translations/i18n/ko.h @@ -144,11 +144,12 @@ #define TR_AUX_SERIAL_MODES_9 "디버그" #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "외부 모듈" +#define TR_GLOBAL "전역" #define TR_SWTYPES_1 "없음" #define TR_SWTYPES_2 "토글" #define TR_SWTYPES_3 "2단" #define TR_SWTYPES_4 "3단" -#define TR_SWTYPES_5 "Global" +#define TR_SWTYPES_5 TR_GLOBAL #define TR_POTTYPES_1 "없음" #define TR_POTTYPES_2 "다이얼" #define TR_POTTYPES_3 TR("클릭 다이얼", "중심 클릭 다이얼") @@ -167,6 +168,11 @@ #define TR_USBMODES_2 TR("조이스틱", "조이스틱") #define TR_USBMODES_3 TR("SD카드", "저장소") #define TR_USBMODES_4 "시리얼" +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "선택 요청" #define TR_JACK_MODES_2 "오디오" #define TR_JACK_MODES_3 "트레이너" @@ -197,7 +203,7 @@ #define TR_CURVE_TYPES_1 "표준" #define TR_CURVE_TYPES_2 "사용자 정의" -#define TR_ADCFILTERVALUES_1 "전역" +#define TR_ADCFILTERVALUES_1 TR_GLOBAL #define TR_ADCFILTERVALUES_2 "끔" #define TR_ADCFILTERVALUES_3 "켬" diff --git a/radio/src/translations/i18n/nl.h b/radio/src/translations/i18n/nl.h index ec0763571dc..42bf51a86fb 100644 --- a/radio/src/translations/i18n/nl.h +++ b/radio/src/translations/i18n/nl.h @@ -146,11 +146,12 @@ #define TR_AUX_SERIAL_MODES_9 "Debug" #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "External module" +#define TR_GLOBAL "Globale" #define TR_SWTYPES_1 "Geen" #define TR_SWTYPES_2 "Wissel" #define TR_SWTYPES_3 "2POS" #define TR_SWTYPES_4 "3POS" -#define TR_SWTYPES_5 "Globale" +#define TR_SWTYPES_5 TR_GLOBAL #define TR_POTTYPES_1 "Geen" #define TR_POTTYPES_2 TR("Pot", "Pot zonder Klik") #define TR_POTTYPES_3 TR("Pot w. det","Pot met Klik") @@ -169,6 +170,11 @@ #define TR_USBMODES_2 TR("Joyst","Joystick") #define TR_USBMODES_3 TR("SDCard","Storage") #define TR_USBMODES_4 "Serial" +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "Ask" #define TR_JACK_MODES_2 "Audio" #define TR_JACK_MODES_3 "Trainer" @@ -198,7 +204,7 @@ #define TR_VVARIOCENTER_2 "Stilte" #define TR_CURVE_TYPES_1 "Standaard" #define TR_CURVE_TYPES_2 "Custom" -#define TR_ADCFILTERVALUES_1 "Globale" +#define TR_ADCFILTERVALUES_1 TR_GLOBAL #define TR_ADCFILTERVALUES_2 "Off" #define TR_ADCFILTERVALUES_3 "On" @@ -346,7 +352,7 @@ #define TR_HATSOPT_1 "Trims only" #define TR_HATSOPT_2 "Keys only" #define TR_HATSOPT_3 "Switchable" -#define TR_HATSOPT_4 "Global" +#define TR_HATSOPT_4 TR_GLOBAL #define TR_HATSMODE_TRIMS "Hats mode: Trims" #define TR_HATSMODE_KEYS "Hats mode: Keys" #define TR_HATSMODE_KEYS_HELP "Left side:\n"\ diff --git a/radio/src/translations/i18n/pl.h b/radio/src/translations/i18n/pl.h index c1a2c5ac988..c1303a1f863 100644 --- a/radio/src/translations/i18n/pl.h +++ b/radio/src/translations/i18n/pl.h @@ -145,11 +145,12 @@ #define TR_AUX_SERIAL_MODES_9 "Debug" #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "Moduł zewnętrzny" +#define TR_GLOBAL "Globalne" #define TR_SWTYPES_1 "Brak" #define TR_SWTYPES_2 "Chwil." #define TR_SWTYPES_3 "2POZ" #define TR_SWTYPES_4 "3POZ" -#define TR_SWTYPES_5 "Globalne" +#define TR_SWTYPES_5 TR_GLOBAL #define TR_POTTYPES_1 "Brak" #define TR_POTTYPES_2 "Pot." #define TR_POTTYPES_3 TR("Pot. z. zap.","Pot. z zapadką") @@ -168,6 +169,11 @@ #define TR_USBMODES_2 TR("Joyst","Joystick") #define TR_USBMODES_3 TR("SDCard","Storage") #define TR_USBMODES_4 "Serial" +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "Ask" #define TR_JACK_MODES_2 "Audio" #define TR_JACK_MODES_3 "Trainer" @@ -197,7 +203,7 @@ #define TR_VVARIOCENTER_2 "Cicho" #define TR_CURVE_TYPES_1 "Standard" #define TR_CURVE_TYPES_2 "Własny" -#define TR_ADCFILTERVALUES_1 "Globalne" +#define TR_ADCFILTERVALUES_1 TR_GLOBAL #define TR_ADCFILTERVALUES_2 "WYŁ" #define TR_ADCFILTERVALUES_3 "ZAŁ" @@ -345,7 +351,7 @@ #define TR_HATSOPT_1 "Tylko trymy" #define TR_HATSOPT_2 "Tylko przyciski" #define TR_HATSOPT_3 "Przełączane" -#define TR_HATSOPT_4 "Globalne" +#define TR_HATSOPT_4 TR_GLOBAL #define TR_HATSMODE_TRIMS "Tryb grzybków: trymy" #define TR_HATSMODE_KEYS "Tryb grzybków: przyciski" #define TR_HATSMODE_KEYS_HELP "Lewa strona:\n"\ diff --git a/radio/src/translations/i18n/pt.h b/radio/src/translations/i18n/pt.h index 4eb444c1f14..6fb1c3ec3a4 100644 --- a/radio/src/translations/i18n/pt.h +++ b/radio/src/translations/i18n/pt.h @@ -144,11 +144,12 @@ #define TR_AUX_SERIAL_MODES_9 "Debug" #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "External module" +#define TR_GLOBAL "Global" #define TR_SWTYPES_1 "Nenhum" #define TR_SWTYPES_2 "Tátil" #define TR_SWTYPES_3 "2POS" #define TR_SWTYPES_4 "3POS" -#define TR_SWTYPES_5 "Global" +#define TR_SWTYPES_5 TR_GLOBAL #define TR_POTTYPES_1 "Nenhum" #define TR_POTTYPES_2 "Pot" #define TR_POTTYPES_3 TR("Pot c. trav","Pot com trava") @@ -167,6 +168,11 @@ #define TR_USBMODES_2 TR("Joyst","Joystick") #define TR_USBMODES_3 TR("SDCard","Storage") #define TR_USBMODES_4 "Serial" +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "Pergunta" #define TR_JACK_MODES_2 "Audio" #define TR_JACK_MODES_3 "Trainer" @@ -197,7 +203,7 @@ #define TR_CURVE_TYPES_1 "Normal" #define TR_CURVE_TYPES_2 "Custom" -#define TR_ADCFILTERVALUES_1 "Global" +#define TR_ADCFILTERVALUES_1 TR_GLOBAL #define TR_ADCFILTERVALUES_2 "DESL" #define TR_ADCFILTERVALUES_3 "LIG" @@ -346,7 +352,7 @@ #define TR_HATSOPT_1 "Só Trims" #define TR_HATSOPT_2 "Só menu" #define TR_HATSOPT_3 "Chaveável" -#define TR_HATSOPT_4 "Global" +#define TR_HATSOPT_4 TR_GLOBAL #define TR_HATSMODE_TRIMS "Modo trim: Trims" #define TR_HATSMODE_KEYS "Modo trim: Menu" #define TR_HATSMODE_KEYS_HELP "Lado Esq:\n"\ diff --git a/radio/src/translations/i18n/ru.h b/radio/src/translations/i18n/ru.h index 71a8a2bfedb..1d7d93d4b37 100644 --- a/radio/src/translations/i18n/ru.h +++ b/radio/src/translations/i18n/ru.h @@ -147,11 +147,12 @@ #define TR_AUX_SERIAL_MODES_9 "Отлад" #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "Внеш модуль" +#define TR_GLOBAL "Глоб" #define TR_SWTYPES_1 "Нет" #define TR_SWTYPES_2 "тумбл" #define TR_SWTYPES_3 "2Х-поз пер" #define TR_SWTYPES_4 "3Х-поз пер" -#define TR_SWTYPES_5 "Глоб" +#define TR_SWTYPES_5 TR_GLOBAL #define TR_POTTYPES_1 "Нет" #define TR_POTTYPES_2 "Потенц" #define TR_POTTYPES_3 TR("Потенц с фикс","Потенц с фиксацией") @@ -170,6 +171,11 @@ #define TR_USBMODES_2 TR("Джойс","Джойстик") #define TR_USBMODES_3 TR("SD-карта","Хранил") #define TR_USBMODES_4 "Серийн" +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "Выбор" #define TR_JACK_MODES_2 "Аудио" #define TR_JACK_MODES_3 "Трен" @@ -200,7 +206,7 @@ #define TR_CURVE_TYPES_1 "Стд" #define TR_CURVE_TYPES_2 "Выбор" -#define TR_ADCFILTERVALUES_1 "Глоб" +#define TR_ADCFILTERVALUES_1 TR_GLOBAL #define TR_ADCFILTERVALUES_2 "Вык" #define TR_ADCFILTERVALUES_3 "Вкл" @@ -349,7 +355,7 @@ #define TR_HATSOPT_1 "Тримы" #define TR_HATSOPT_2 "Кнопки" #define TR_HATSOPT_3 "Тумбл" -#define TR_HATSOPT_4 "Глоб" +#define TR_HATSOPT_4 TR_GLOBAL #define TR_HATSMODE_TRIMS "Hats mode: Тримы" #define TR_HATSMODE_KEYS "Hats mode: Кнопки" #define TR_HATSMODE_KEYS_HELP "Left side:\n"\ diff --git a/radio/src/translations/i18n/se.h b/radio/src/translations/i18n/se.h index f9e85c09b28..ecc354673e2 100644 --- a/radio/src/translations/i18n/se.h +++ b/radio/src/translations/i18n/se.h @@ -152,11 +152,12 @@ #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "Extern modul" +#define TR_GLOBAL "Global" #define TR_SWTYPES_1 "Ingen" #define TR_SWTYPES_2 "2 pos flipp" #define TR_SWTYPES_3 "2 pos" #define TR_SWTYPES_4 "3 pos" -#define TR_SWTYPES_5 "Global" +#define TR_SWTYPES_5 TR_GLOBAL #define TR_POTTYPES_1 "Ingen" #define TR_POTTYPES_2 "Vred" @@ -174,8 +175,13 @@ #define TR_COUNTRY_CODES_3 TR("EU","Europa") #define TR_USBMODES_1 "Fråga" #define TR_USBMODES_2 "Joystick" -#define TR_USBMODES_3 TR("SD-kort","SD-kortlagring") +#define TR_USBMODES_3 TR3("SD-kort","SD-kort","SD-kortlagring") #define TR_USBMODES_4 "Seriell" +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "Fråga" #define TR_JACK_MODES_2 "Audio" #define TR_JACK_MODES_3 "Lärare" @@ -201,7 +207,7 @@ #define TR_CURVE_TYPES_1 "Normal" #define TR_CURVE_TYPES_2 "Anpassad" -#define TR_ADCFILTERVALUES_1 "Global" +#define TR_ADCFILTERVALUES_1 TR_GLOBAL #define TR_ADCFILTERVALUES_2 "Av" #define TR_ADCFILTERVALUES_3 "På" @@ -354,7 +360,7 @@ #define TR_HATSOPT_1 "Endast trimm" #define TR_HATSOPT_2 "Endast knapp" #define TR_HATSOPT_3 "Ändringsbar" -#define TR_HATSOPT_4 "Global" +#define TR_HATSOPT_4 TR_GLOBAL #define TR_HATSMODE_TRIMS "Hattläge: Trimmar" #define TR_HATSMODE_KEYS "Hattläge: Knappar" #define TR_HATSMODE_KEYS_HELP "Vänster sida:\n"\ diff --git a/radio/src/translations/i18n/sk.h b/radio/src/translations/i18n/sk.h index e98866f4e61..714a1b212ce 100644 --- a/radio/src/translations/i18n/sk.h +++ b/radio/src/translations/i18n/sk.h @@ -150,11 +150,12 @@ #define TR_AUX_SERIAL_MODES_9 "Ladenie" #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "Externý modul" +#define TR_GLOBAL "Globálny" #define TR_SWTYPES_1 "Žiadny" #define TR_SWTYPES_2 "Bez aretácie" #define TR_SWTYPES_3 "2-polohový" #define TR_SWTYPES_4 "3-polohový" -#define TR_SWTYPES_5 "Globálny" +#define TR_SWTYPES_5 TR_GLOBAL #define TR_POTTYPES_1 "Žiadny" #define TR_POTTYPES_2 TR("Pot","Potenciometer") #define TR_POTTYPES_3 TR("Pot s aret.","Pot s aretáciou") @@ -173,6 +174,11 @@ #define TR_USBMODES_2 TR("Joyst","Joystick") #define TR_USBMODES_3 TR("SDkarta","Úložisko") #define TR_USBMODES_4 "Serial" +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "Spýtať" #define TR_JACK_MODES_2 "Audio" #define TR_JACK_MODES_3 "Trenér" diff --git a/radio/src/translations/i18n/tw.h b/radio/src/translations/i18n/tw.h index 0bc2cc4e5f2..a3c0c7eeee8 100644 --- a/radio/src/translations/i18n/tw.h +++ b/radio/src/translations/i18n/tw.h @@ -143,11 +143,12 @@ #define TR_AUX_SERIAL_MODES_9 "調試" #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "外置發射" +#define TR_GLOBAL "全局" #define TR_SWTYPES_1 "無" #define TR_SWTYPES_2 "回彈" #define TR_SWTYPES_3 "2段" #define TR_SWTYPES_4 "3段" -#define TR_SWTYPES_5 "全局" +#define TR_SWTYPES_5 TR_GLOBAL #define TR_POTTYPES_1 "無" #define TR_POTTYPES_2 "無中點旋鈕" #define TR_POTTYPES_3 TR("中點旋鈕","有中點旋鈕") @@ -166,6 +167,11 @@ #define TR_USBMODES_2 "遊戲柄" #define TR_USBMODES_3 "U盤" #define TR_USBMODES_4 "串行" +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "詢問" #define TR_JACK_MODES_2 "音頻" #define TR_JACK_MODES_3 "教練" @@ -196,7 +202,7 @@ #define TR_CURVE_TYPES_1 "標準" #define TR_CURVE_TYPES_2 "自定義" -#define TR_ADCFILTERVALUES_1 "全局" +#define TR_ADCFILTERVALUES_1 TR_GLOBAL #define TR_ADCFILTERVALUES_2 "禁用" #define TR_ADCFILTERVALUES_3 "开启" @@ -345,7 +351,7 @@ #define TR_HATSOPT_1 "微調" #define TR_HATSOPT_2 "導航鍵" #define TR_HATSOPT_3 "可切換" -#define TR_HATSOPT_4 "全局" +#define TR_HATSOPT_4 TR_GLOBAL #define TR_HATSMODE_TRIMS "按鍵帽: 微調" #define TR_HATSMODE_KEYS "按鍵帽: 導航鍵" #define TR_HATSMODE_KEYS_HELP "左側按鍵帽:\n"\ diff --git a/radio/src/translations/i18n/ua.h b/radio/src/translations/i18n/ua.h index 196d2c3fe21..cf7ac995065 100644 --- a/radio/src/translations/i18n/ua.h +++ b/radio/src/translations/i18n/ua.h @@ -146,11 +146,12 @@ #define TR_AUX_SERIAL_MODES_9 "Відлаг." #define TR_AUX_SERIAL_MODES_10 "SpaceMouse" #define TR_AUX_SERIAL_MODES_11 "Зовн. модуль" /* for untranslated - use english */ +#define TR_GLOBAL "Global" #define TR_SWTYPES_1 "Немає" #define TR_SWTYPES_2 "Перемик." #define TR_SWTYPES_3 "2поз. пер." #define TR_SWTYPES_4 "3поз. пер." -#define TR_SWTYPES_5 "Global" +#define TR_SWTYPES_5 TR_GLOBAL #define TR_POTTYPES_1 "Немає" #define TR_POTTYPES_2 "Потенц." #define TR_POTTYPES_3 TR("Пот. з крок.","Потенц. з кроком") @@ -169,6 +170,11 @@ #define TR_USBMODES_2 TR("Джойст.","Джойстик") #define TR_USBMODES_3 TR("SD карт.","SD картка") #define TR_USBMODES_4 "Послід." /* for untranslated - use english */ +#define TR_MODEL_USBMODES_1 TR_GLOBAL +#define TR_MODEL_USBMODES_2 TR_USBMODES_1 +#define TR_MODEL_USBMODES_3 TR_USBMODES_2 +#define TR_MODEL_USBMODES_4 TR_USBMODES_3 +#define TR_MODEL_USBMODES_5 TR_USBMODES_4 #define TR_JACK_MODES_1 "Вибір" #define TR_JACK_MODES_2 "Аудіо" #define TR_JACK_MODES_3 "Трен." @@ -199,7 +205,7 @@ #define TR_CURVE_TYPES_1 "Стандарт" #define TR_CURVE_TYPES_2 "Вибір" -#define TR_ADCFILTERVALUES_1 "Global" +#define TR_ADCFILTERVALUES_1 TR_GLOBAL #define TR_ADCFILTERVALUES_2 "Off" #define TR_ADCFILTERVALUES_3 "On" /* use english */ @@ -348,7 +354,7 @@ #define TR_HATSOPT_1 "Тільки Трим." #define TR_HATSOPT_2 "Тільки Кнопки" #define TR_HATSOPT_3 "Перемик." -#define TR_HATSOPT_4 "Global" /* for untranslated - use english */ +#define TR_HATSOPT_4 TR_GLOBAL /* for untranslated - use english */ #define TR_HATSMODE_TRIMS "Hats mode: Трим." #define TR_HATSMODE_KEYS "Hats mode: Кнопки" #define TR_HATSMODE_KEYS_HELP "Ліва сторона:\n"\ diff --git a/radio/src/translations/sim_string_list.h b/radio/src/translations/sim_string_list.h index d340589e554..0ece2c080f9 100644 --- a/radio/src/translations/sim_string_list.h +++ b/radio/src/translations/sim_string_list.h @@ -1102,6 +1102,7 @@ #define STR_ISRM_RF_PROTOCOLS currentLangStrings->STR_ISRM_RF_PROTOCOLS #define STR_JACK_MODES currentLangStrings->STR_JACK_MODES #define STR_MMMINV currentLangStrings->STR_MMMINV +#define STR_MODEL_USBMODES currentLangStrings->STR_MODEL_USBMODES #define STR_MODULE_PROTOCOLS currentLangStrings->STR_MODULE_PROTOCOLS #define STR_MONTHS currentLangStrings->STR_MONTHS #define STR_OFFON currentLangStrings->STR_OFFON diff --git a/radio/src/translations/string_list.h b/radio/src/translations/string_list.h index 2d1c27cee73..f3dee893726 100644 --- a/radio/src/translations/string_list.h +++ b/radio/src/translations/string_list.h @@ -1098,6 +1098,7 @@ STRARRAY(GPSFORMAT) STRARRAY(ISRM_RF_PROTOCOLS) STRARRAY(JACK_MODES) STRARRAY(MMMINV) +STRARRAY(MODEL_USBMODES) STRARRAY(MODULE_PROTOCOLS) STRARRAY(MONTHS) STRARRAY(OFFON) diff --git a/radio/src/translations/translation_def.h b/radio/src/translations/translation_def.h index ae3400d4a00..c6c6ebba316 100644 --- a/radio/src/translations/translation_def.h +++ b/radio/src/translations/translation_def.h @@ -171,6 +171,7 @@ #define TR_VBEEPMODE SA4(TR_VBEEPMODE) #define TR_TRNCHN SA4(TR_TRNCHN) #define TR_USBMODES SA4(TR_USBMODES) +#define TR_MODEL_USBMODES SA5(TR_MODEL_USBMODES) #define TR_COUNTDOWNVALUES SA4(TR_COUNTDOWNVALUES) #define TR_VCURVETYPE SA4(TR_VCURVETYPE) #define TR_VTELEMSCREENTYPE SA4(TR_VTELEMSCREENTYPE)