From a51946c4e22e551c1d7bfdbfacf3c877a2884480 Mon Sep 17 00:00:00 2001 From: 3djc <5167938+3djc@users.noreply.github.com> Date: Fri, 21 Aug 2026 12:16:55 +0200 Subject: [PATCH] feat(radio): allow disabling USB charge while the radio is running (on compatible hardware) (#7564) Co-authored-by: 3djc <3djc@gh.com> Co-authored-by: Claude Opus 5 Co-authored-by: Peter Feerick <5500713+pfeerick@users.noreply.github.com> Co-authored-by: Peter Feerick --- .../firmwares/edgetx/yaml_generalsettings.cpp | 2 ++ companion/src/firmwares/generalsettings.h | 1 + companion/src/generaledit/generalsetup.cpp | 19 ++++++++++ companion/src/generaledit/generalsetup.h | 1 + companion/src/generaledit/generalsetup.ui | 36 +++++++++++++------ radio/src/boards/rm-h750/board.h | 4 +++ .../src/boards/rm-h750/usb_charger_driver.cpp | 17 ++++++++- radio/src/datastructs_private.h | 7 ++++ radio/src/gui/colorlcd/radio/radio_setup.cpp | 17 +++++++++ radio/src/main.cpp | 8 +++++ .../storage/yaml/yaml_datastructs_gx15.cpp | 4 ++- .../storage/yaml/yaml_datastructs_tx15.cpp | 3 +- .../yaml/yaml_datastructs_tx16smk3.cpp | 3 +- radio/src/targets/gx15/CMakeLists.txt | 1 + radio/src/targets/simu/led_driver.cpp | 3 ++ radio/src/targets/tx15/CMakeLists.txt | 1 + radio/src/targets/tx16smk3/CMakeLists.txt | 1 + radio/src/translations/i18n/cn.h | 1 + radio/src/translations/i18n/cz.h | 1 + radio/src/translations/i18n/da.h | 1 + radio/src/translations/i18n/de.h | 1 + radio/src/translations/i18n/en.h | 1 + radio/src/translations/i18n/es.h | 1 + radio/src/translations/i18n/fi.h | 1 + radio/src/translations/i18n/fr.h | 1 + radio/src/translations/i18n/he.h | 1 + radio/src/translations/i18n/it.h | 1 + radio/src/translations/i18n/jp.h | 1 + radio/src/translations/i18n/ko.h | 1 + radio/src/translations/i18n/nl.h | 1 + radio/src/translations/i18n/pl.h | 1 + radio/src/translations/i18n/pt.h | 1 + radio/src/translations/i18n/ru.h | 1 + radio/src/translations/i18n/se.h | 1 + radio/src/translations/i18n/tw.h | 1 + radio/src/translations/i18n/ua.h | 1 + radio/src/translations/sim_string_list.h | 1 + radio/src/translations/string_list.h | 1 + 38 files changed, 134 insertions(+), 15 deletions(-) diff --git a/companion/src/firmwares/edgetx/yaml_generalsettings.cpp b/companion/src/firmwares/edgetx/yaml_generalsettings.cpp index b148af4d1..b7b24d23b 100644 --- a/companion/src/firmwares/edgetx/yaml_generalsettings.cpp +++ b/companion/src/firmwares/edgetx/yaml_generalsettings.cpp @@ -254,6 +254,7 @@ Node convert::encode(const GeneralSettings& rhs) node["disableRssiPoweroffAlarm"] = (int)rhs.disableRssiPoweroffAlarm; node["disableTrainerPoweroffAlarm"] = (int)rhs.disableTrainerPoweroffAlarm; node["USBMode"] = rhs.usbMode; + node["usbChargeDisabled"] = (int)rhs.usbChargeDisabled; node["hatsMode"] = hatsModeLut << rhs.hatsMode; node["stickDeadZone"] = rhs.stickDeadZone; node["jackMode"] = rhs.jackMode; @@ -542,6 +543,7 @@ bool convert::decode(const Node& node, GeneralSettings& rhs) node["disableRssiPoweroffAlarm"] >> rhs.disableRssiPoweroffAlarm; node["disableTrainerPoweroffAlarm"] >> rhs.disableTrainerPoweroffAlarm; node["USBMode"] >> rhs.usbMode; + node["usbChargeDisabled"] >> rhs.usbChargeDisabled; node["hatsMode"] >> hatsModeLut >> rhs.hatsMode; node["stickDeadZone"] >> rhs.stickDeadZone; node["jackMode"] >> rhs.jackMode; diff --git a/companion/src/firmwares/generalsettings.h b/companion/src/firmwares/generalsettings.h index e8873f90c..14dad7e12 100644 --- a/companion/src/firmwares/generalsettings.h +++ b/companion/src/firmwares/generalsettings.h @@ -318,6 +318,7 @@ class GeneralSettings { bool disableRssiPoweroffAlarm; bool disableTrainerPoweroffAlarm; unsigned int usbMode; + bool usbChargeDisabled; unsigned int hatsMode; unsigned int stickDeadZone; unsigned int jackMode; diff --git a/companion/src/generaledit/generalsetup.cpp b/companion/src/generaledit/generalsetup.cpp index 6462c3143..4c8468a9a 100644 --- a/companion/src/generaledit/generalsetup.cpp +++ b/companion/src/generaledit/generalsetup.cpp @@ -97,6 +97,17 @@ ui(new Ui::GeneralSetup) ui->adjustRTC->setChecked(generalSettings.adjustRTC); ui->usbModeCB->setCurrentIndex(generalSettings.usbMode); + // "Charge while radio on" is only available on RadioMaster radios + // that expose the charger-enable pin (rm-h750 based targets). + if (IS_RADIOMASTER_TX16SMK3(board) || IS_RADIOMASTER_TX15(board) || + IS_RADIOMASTER_GX15(board)) { + ui->usbChargeChkB->setChecked(!generalSettings.usbChargeDisabled); // Default is zero=checked + } + else { + ui->usbChargeLabel->hide(); + ui->usbChargeChkB->hide(); + } + if (IS_FLYSKY_EL18(board) || IS_FLYSKY_NV14(board) || IS_FAMILY_PL18(board)) { ui->hatsModeCB->setModel(panelFilteredModels->getItemModel(FIM_HATSMODE)); ui->hatsModeCB->setField(generalSettings.hatsMode, this); @@ -384,6 +395,14 @@ void GeneralSetupPanel::on_usbModeCB_currentIndexChanged(int index) } } +void GeneralSetupPanel::on_usbChargeChkB_stateChanged(int) +{ + if (!lock) { + generalSettings.usbChargeDisabled = !ui->usbChargeChkB->isChecked(); + emit modified(); + } +} + void GeneralSetupPanel::on_jackModeCB_currentIndexChanged(int index) { if (!lock) { diff --git a/companion/src/generaledit/generalsetup.h b/companion/src/generaledit/generalsetup.h index 0aed9c927..16c22f27b 100644 --- a/companion/src/generaledit/generalsetup.h +++ b/companion/src/generaledit/generalsetup.h @@ -62,6 +62,7 @@ class GeneralSetupPanel : public GeneralPanel void on_hapticLengthCB_currentIndexChanged(int index); void on_backlightswCB_currentIndexChanged(int index); void on_usbModeCB_currentIndexChanged(int index); + void on_usbChargeChkB_stateChanged(int); void on_jackModeCB_currentIndexChanged(int index); void on_backlightColor_SL_valueChanged(); void on_mavbaud_CB_currentIndexChanged(int index); diff --git a/companion/src/generaledit/generalsetup.ui b/companion/src/generaledit/generalsetup.ui index 2a9408a5a..10e935e83 100644 --- a/companion/src/generaledit/generalsetup.ui +++ b/companion/src/generaledit/generalsetup.ui @@ -392,7 +392,7 @@ Mode 4: - + 0.-- @@ -414,7 +414,7 @@ Mode 4: - + @@ -506,7 +506,7 @@ Acceptable values are 3v..12v - + PPM Units @@ -854,7 +854,7 @@ p, li { white-space: pre-wrap; } - + @@ -897,6 +897,20 @@ p, li { white-space: pre-wrap; } + + + + Charge while radio on + + + + + + + + + + @@ -916,7 +930,7 @@ p, li { white-space: pre-wrap; } - + Hats Mode @@ -955,7 +969,7 @@ p, li { white-space: pre-wrap; } - + Jack Mode @@ -1077,7 +1091,7 @@ p, li { white-space: pre-wrap; } - + Qt::Orientation::Vertical @@ -1304,28 +1318,28 @@ p, li { white-space: pre-wrap; } - + One log per day - + - + Key lock - + diff --git a/radio/src/boards/rm-h750/board.h b/radio/src/boards/rm-h750/board.h index 46f4ef02f..a987c5960 100644 --- a/radio/src/boards/rm-h750/board.h +++ b/radio/src/boards/rm-h750/board.h @@ -241,4 +241,8 @@ void usbChargerInit(); bool usbChargerLed(); #endif +#if defined(USB_CHARGE_CONTROL) +void usbChargerEnableCharge(bool enable); +#endif + #endif // _BOARD_H_ diff --git a/radio/src/boards/rm-h750/usb_charger_driver.cpp b/radio/src/boards/rm-h750/usb_charger_driver.cpp index d733bb290..3e45e0757 100644 --- a/radio/src/boards/rm-h750/usb_charger_driver.cpp +++ b/radio/src/boards/rm-h750/usb_charger_driver.cpp @@ -25,7 +25,15 @@ #include "board.h" #include "hal/usb_driver.h" -//TODO: charger enable control +#if defined(USB_CHARGE_CONTROL) +void usbChargerEnableCharge(bool enable) +{ + if (enable) + gpio_clear(UCHARGER_EN_GPIO); + else + gpio_set(UCHARGER_EN_GPIO); +} +#endif void usbChargerInit() { @@ -36,6 +44,13 @@ void usbChargerInit() bool usbChargerLed() { +#if defined(USB_CHARGE_CONTROL) + // When charging is disabled via the "Charge while radio on" setting, + // the charger-enable pin is driven high to hold the charger off, so it is + // not charging. + if (gpio_read(UCHARGER_EN_GPIO)) + return false; +#endif #if defined UCHARGER_INVERTED return (!gpio_read(UCHARGER_GPIO) && usbPlugged()); #else diff --git a/radio/src/datastructs_private.h b/radio/src/datastructs_private.h index e4ad3e0c4..f9531dc3a 100644 --- a/radio/src/datastructs_private.h +++ b/radio/src/datastructs_private.h @@ -1169,7 +1169,14 @@ PACK(struct RadioData { // Radio level tabs control (global settings) NOBACKUP(uint8_t modelSelectLayout:2); NOBACKUP(uint8_t radioThemesDisabled:1); +#if defined(USB_CHARGE_CONTROL) + // 0 = charge while USB active (default), 1 = hold the charger off while USB + // is plugged in SD/Joystick/VCP mode + NOBACKUP(uint8_t usbChargeDisabled:1); + NOBACKUP(uint8_t spare:6 SKIP); +#else NOBACKUP(uint8_t spare:7 SKIP); +#endif #elif LCD_W == 128 uint8_t invertLCD:1; // Invert B&W LCD display NOBACKUP(uint8_t spare:4 SKIP); diff --git a/radio/src/gui/colorlcd/radio/radio_setup.cpp b/radio/src/gui/colorlcd/radio/radio_setup.cpp index f0f2956bf..02c0e66f8 100644 --- a/radio/src/gui/colorlcd/radio/radio_setup.cpp +++ b/radio/src/gui/colorlcd/radio/radio_setup.cpp @@ -966,6 +966,23 @@ const static SetupLineDef setupLines[] = { GET_SET_DEFAULT(g_eeGeneral.USBMode)); } }, +#if defined(USB_CHARGE_CONTROL) + { + // Charge while radio on + STR_DEF(STR_USB_CHARGE), + [](Window* parent, coord_t x, coord_t y) { + new ToggleSwitch(parent, {x, y, 0, 0}, + GET_INVERTED(g_eeGeneral.usbChargeDisabled), + [](uint8_t newValue) { + g_eeGeneral.usbChargeDisabled = !newValue; + SET_DIRTY(); + // take effect now, not only on the next plug + if (usbPlugged()) + usbChargerEnableCharge(!g_eeGeneral.usbChargeDisabled); + }); + } + }, +#endif #if defined(ROTARY_ENCODER_NAVIGATION) && !defined(USE_HATS_AS_KEYS) { STR_DEF(STR_ROTARY_ENC_MODE), diff --git a/radio/src/main.cpp b/radio/src/main.cpp index 26c059bd8..e426bbefa 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -170,10 +170,18 @@ void handleUsbConnection() TRACE("USB unplugged"); closeUsbMenu(); _pluggedUsb = false; +#if defined(USB_CHARGE_CONTROL) + usbChargerEnableCharge(true); +#endif } else if (!_pluggedUsb && usbPlugged()) { TRACE("USB plugged"); _pluggedUsb = true; _usbDisabled = false; +#if defined(USB_CHARGE_CONTROL) + // Apply on plug, not on usbStart(): the mode popup can sit open for a long + // time and the radio would charge until a mode is picked + usbChargerEnableCharge(!g_eeGeneral.usbChargeDisabled); +#endif } if (!_usbDisabled && !usbStarted() && usbPlugged()) { diff --git a/radio/src/storage/yaml/yaml_datastructs_gx15.cpp b/radio/src/storage/yaml/yaml_datastructs_gx15.cpp index 6a5ce05d9..5933e4aaf 100644 --- a/radio/src/storage/yaml/yaml_datastructs_gx15.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_gx15.cpp @@ -87,6 +87,7 @@ const struct YamlIdStr enum_Functions[] = { { FUNC_DISABLE_AUDIO_AMP, "DISABLE_AUDIO_AMP" }, { FUNC_RGB_LED, "RGB_LED" }, { FUNC_PUSH_CUST_SWITCH, "PUSH_CUST_SWITCH" }, + { FUNC_DISABLE_KEYS, "DISABLE_KEYS" }, { FUNC_TEST, "TEST" }, { 0, NULL } }; @@ -482,7 +483,8 @@ static const struct YamlNode struct_RadioData[] = { YAML_UNSIGNED( "favMultiMode", 1 ), YAML_UNSIGNED( "modelSelectLayout", 2 ), YAML_UNSIGNED( "radioThemesDisabled", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "usbChargeDisabled", 1 ), + YAML_PADDING( 6 ), YAML_UNSIGNED( "pwrOffIfInactive", 8 ), YAML_ARRAY("keyShortcuts", 8, 6, struct_KeyShortcut, NULL), YAML_ARRAY("qmFavorites", 8, 12, struct_QMFavorite, NULL), diff --git a/radio/src/storage/yaml/yaml_datastructs_tx15.cpp b/radio/src/storage/yaml/yaml_datastructs_tx15.cpp index d37bf8576..5933e4aaf 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tx15.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tx15.cpp @@ -483,7 +483,8 @@ static const struct YamlNode struct_RadioData[] = { YAML_UNSIGNED( "favMultiMode", 1 ), YAML_UNSIGNED( "modelSelectLayout", 2 ), YAML_UNSIGNED( "radioThemesDisabled", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "usbChargeDisabled", 1 ), + YAML_PADDING( 6 ), YAML_UNSIGNED( "pwrOffIfInactive", 8 ), YAML_ARRAY("keyShortcuts", 8, 6, struct_KeyShortcut, NULL), YAML_ARRAY("qmFavorites", 8, 12, struct_QMFavorite, NULL), diff --git a/radio/src/storage/yaml/yaml_datastructs_tx16smk3.cpp b/radio/src/storage/yaml/yaml_datastructs_tx16smk3.cpp index 338a4e3e0..6a8f45507 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tx16smk3.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tx16smk3.cpp @@ -484,7 +484,8 @@ static const struct YamlNode struct_RadioData[] = { YAML_UNSIGNED( "favMultiMode", 1 ), YAML_UNSIGNED( "modelSelectLayout", 2 ), YAML_UNSIGNED( "radioThemesDisabled", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "usbChargeDisabled", 1 ), + YAML_PADDING( 6 ), YAML_UNSIGNED( "pwrOffIfInactive", 8 ), YAML_ARRAY("keyShortcuts", 8, 6, struct_KeyShortcut, NULL), YAML_ARRAY("qmFavorites", 8, 12, struct_QMFavorite, NULL), diff --git a/radio/src/targets/gx15/CMakeLists.txt b/radio/src/targets/gx15/CMakeLists.txt index 656919ac9..fa4a67204 100644 --- a/radio/src/targets/gx15/CMakeLists.txt +++ b/radio/src/targets/gx15/CMakeLists.txt @@ -47,6 +47,7 @@ add_definitions(-DFIRMWARE_QSPI) add_definitions(-DFIRMWARE_FORMAT_UF2) add_definitions(-DUSE_CUSTOM_EXTI_IRQ) add_definitions(-DUSB_CHARGER) +add_definitions(-DUSB_CHARGE_CONTROL) set(FLAVOUR gx15) add_definitions(-DRADIO_GX15) diff --git a/radio/src/targets/simu/led_driver.cpp b/radio/src/targets/simu/led_driver.cpp index 8c921375b..7433c0829 100644 --- a/radio/src/targets/simu/led_driver.cpp +++ b/radio/src/targets/simu/led_driver.cpp @@ -24,6 +24,9 @@ #include "definitions.h" bool usbChargerLed() { return true; } +#if defined(USB_CHARGE_CONTROL) +void usbChargerEnableCharge(bool enable) {} +#endif void ledRed() {} void ledGreen() {} void ledBlue() {} diff --git a/radio/src/targets/tx15/CMakeLists.txt b/radio/src/targets/tx15/CMakeLists.txt index 007c1c994..8defcaa9c 100644 --- a/radio/src/targets/tx15/CMakeLists.txt +++ b/radio/src/targets/tx15/CMakeLists.txt @@ -61,6 +61,7 @@ add_definitions(-DFIRMWARE_QSPI) add_definitions(-DFIRMWARE_FORMAT_UF2) add_definitions(-DUSE_CUSTOM_EXTI_IRQ) add_definitions(-DUSB_CHARGER) +add_definitions(-DUSB_CHARGE_CONTROL) set(FLAVOUR tx15) add_definitions(-DMANUFACTURER_RADIOMASTER) diff --git a/radio/src/targets/tx16smk3/CMakeLists.txt b/radio/src/targets/tx16smk3/CMakeLists.txt index 0274b0e95..27364de70 100644 --- a/radio/src/targets/tx16smk3/CMakeLists.txt +++ b/radio/src/targets/tx16smk3/CMakeLists.txt @@ -64,6 +64,7 @@ add_definitions(-DFIRMWARE_QSPI) add_definitions(-DFIRMWARE_FORMAT_UF2) add_definitions(-DUSE_CUSTOM_EXTI_IRQ) add_definitions(-DUSB_CHARGER) +add_definitions(-DUSB_CHARGE_CONTROL) add_definitions(-DLUMINOSITY_SENSOR) set(FLAVOUR tx16smk3) diff --git a/radio/src/translations/i18n/cn.h b/radio/src/translations/i18n/cn.h index 2888b17a8..4a1aac51c 100644 --- a/radio/src/translations/i18n/cn.h +++ b/radio/src/translations/i18n/cn.h @@ -947,6 +947,7 @@ #define TR_SENSOR "传感器" #define TR_COUNTRY_CODE "国别码" #define TR_USBMODE "USB模式" +#define TR_USB_CHARGE "开机时充电" #define TR_JACK_MODE "教练插口模式" #define TR_VOICE_LANGUAGE "播报语言" #define TR_TEXT_LANGUAGE "Text language" diff --git a/radio/src/translations/i18n/cz.h b/radio/src/translations/i18n/cz.h index 618d3ba5f..98cb8e042 100644 --- a/radio/src/translations/i18n/cz.h +++ b/radio/src/translations/i18n/cz.h @@ -944,6 +944,7 @@ #define TR_SENSOR "SENZOR" #define TR_COUNTRY_CODE "Kód regionu" #define TR_USBMODE "Režim USB" +#define TR_USB_CHARGE "Nabíjení za chodu" #define TR_JACK_MODE "Režim Jack" #define TR_VOICE_LANGUAGE "Jazyk hlasu" #define TR_TEXT_LANGUAGE "Text language" diff --git a/radio/src/translations/i18n/da.h b/radio/src/translations/i18n/da.h index 17e9227a6..4b1f5584f 100644 --- a/radio/src/translations/i18n/da.h +++ b/radio/src/translations/i18n/da.h @@ -952,6 +952,7 @@ #define TR_SENSOR "SENSOR" #define TR_COUNTRY_CODE "Lande kode" #define TR_USBMODE "USB tilstand" +#define TR_USB_CHARGE "Oplad med radio tændt" #define TR_JACK_MODE "Jack tilstand" #define TR_VOICE_LANGUAGE "Stemme sprog" #define TR_TEXT_LANGUAGE "Text language" diff --git a/radio/src/translations/i18n/de.h b/radio/src/translations/i18n/de.h index cccfcba02..e92705f94 100644 --- a/radio/src/translations/i18n/de.h +++ b/radio/src/translations/i18n/de.h @@ -947,6 +947,7 @@ #define TR_SENSOR TR_BW_COL("SENSOR", "Sensor") #define TR_COUNTRY_CODE "Landescode" #define TR_USBMODE "USB Modus" +#define TR_USB_CHARGE "Laden wenn Sender an" #define TR_JACK_MODE "Klinken-Modus" #define TR_VOICE_LANGUAGE "Sprachansagen" #define TR_TEXT_LANGUAGE "Textsprache" diff --git a/radio/src/translations/i18n/en.h b/radio/src/translations/i18n/en.h index 7ed202ff8..f56588896 100644 --- a/radio/src/translations/i18n/en.h +++ b/radio/src/translations/i18n/en.h @@ -948,6 +948,7 @@ #define TR_SENSOR "SENSOR" #define TR_COUNTRY_CODE "Country code" #define TR_USBMODE "USB mode" +#define TR_USB_CHARGE "Charge while radio on" #define TR_JACK_MODE "Jack mode" #define TR_VOICE_LANGUAGE "Voice language" #define TR_TEXT_LANGUAGE "Text language" diff --git a/radio/src/translations/i18n/es.h b/radio/src/translations/i18n/es.h index 50ed100f9..9067d48c4 100644 --- a/radio/src/translations/i18n/es.h +++ b/radio/src/translations/i18n/es.h @@ -940,6 +940,7 @@ #define TR_SENSOR "SENSOR" #define TR_COUNTRY_CODE "Código país" #define TR_USBMODE "Modo USB" +#define TR_USB_CHARGE "Cargar con radio ON" #define TR_JACK_MODE "Modo Jack" #define TR_VOICE_LANGUAGE "Idioma voces" #define TR_TEXT_LANGUAGE "Text language" diff --git a/radio/src/translations/i18n/fi.h b/radio/src/translations/i18n/fi.h index 2ba7e5934..e7efbe88f 100644 --- a/radio/src/translations/i18n/fi.h +++ b/radio/src/translations/i18n/fi.h @@ -940,6 +940,7 @@ #define TR_SENSOR "SENSORI" #define TR_COUNTRY_CODE "Maatunnus" #define TR_USBMODE "USB-tila" +#define TR_USB_CHARGE "Lataa radio päällä" #define TR_JACK_MODE "Jack Mode" #define TR_VOICE_LANGUAGE "Äänen kieli" #define TR_TEXT_LANGUAGE "Text language" diff --git a/radio/src/translations/i18n/fr.h b/radio/src/translations/i18n/fr.h index cc9d7735c..b233ca8e4 100644 --- a/radio/src/translations/i18n/fr.h +++ b/radio/src/translations/i18n/fr.h @@ -944,6 +944,7 @@ #define TR_SENSOR "CAPTEUR" #define TR_COUNTRY_CODE TR("Zone géo.", "Zone géographique") #define TR_USBMODE "Mode USB" +#define TR_USB_CHARGE "Charge radio allumée" #define TR_JACK_MODE "Mode Jack" #define TR_VOICE_LANGUAGE TR("Langue voix", "Langue annonces vocales") #define TR_TEXT_LANGUAGE "Text language" diff --git a/radio/src/translations/i18n/he.h b/radio/src/translations/i18n/he.h index 1b6061897..c20b76919 100644 --- a/radio/src/translations/i18n/he.h +++ b/radio/src/translations/i18n/he.h @@ -950,6 +950,7 @@ #define TR_SENSOR "חיישן" #define TR_COUNTRY_CODE "קוד ארץ" #define TR_USBMODE "USB מצב" +#define TR_USB_CHARGE "טעינה כאשר השלט פועל" #define TR_JACK_MODE "Jack mode" #define TR_VOICE_LANGUAGE "שפת שמע" #define TR_TEXT_LANGUAGE "שפת הטקסט" diff --git a/radio/src/translations/i18n/it.h b/radio/src/translations/i18n/it.h index 1e6690918..44858f36d 100644 --- a/radio/src/translations/i18n/it.h +++ b/radio/src/translations/i18n/it.h @@ -947,6 +947,7 @@ #define TR_SENSOR "SENSORE" #define TR_COUNTRY_CODE TR("Cod. Paese", "Codice del Paese") #define TR_USBMODE "Modo USB" +#define TR_USB_CHARGE "Carica con radio accesa" #define TR_JACK_MODE "Modo JACK" #define TR_VOICE_LANGUAGE "Lingua vocale" #define TR_TEXT_LANGUAGE "Lingua testo" diff --git a/radio/src/translations/i18n/jp.h b/radio/src/translations/i18n/jp.h index 7e5fd0c03..91b093aa6 100644 --- a/radio/src/translations/i18n/jp.h +++ b/radio/src/translations/i18n/jp.h @@ -946,6 +946,7 @@ #define TR_SENSOR "センサー" #define TR_COUNTRY_CODE "カントリーコード" #define TR_USBMODE "USBモード" +#define TR_USB_CHARGE "電源オン時に充電" #define TR_JACK_MODE "Jackモード" #define TR_VOICE_LANGUAGE "音声言語" #define TR_TEXT_LANGUAGE "Text language" diff --git a/radio/src/translations/i18n/ko.h b/radio/src/translations/i18n/ko.h index 9b5a94d07..16037e5ba 100644 --- a/radio/src/translations/i18n/ko.h +++ b/radio/src/translations/i18n/ko.h @@ -990,6 +990,7 @@ #define TR_SENSOR "센서" #define TR_COUNTRY_CODE "국가 코드" #define TR_USBMODE "USB 모드" +#define TR_USB_CHARGE "전원 켜짐 시 충전" #define TR_JACK_MODE "잭 모드" #define TR_VOICE_LANGUAGE "음성 언어" #define TR_TEXT_LANGUAGE "Text language" diff --git a/radio/src/translations/i18n/nl.h b/radio/src/translations/i18n/nl.h index fa6f9f930..ae88cad81 100644 --- a/radio/src/translations/i18n/nl.h +++ b/radio/src/translations/i18n/nl.h @@ -942,6 +942,7 @@ #define TR_SENSOR "SENSOR" #define TR_COUNTRY_CODE "Landcode" #define TR_USBMODE "USB Mode" +#define TR_USB_CHARGE "Laden als zender aan" #define TR_JACK_MODE "Jack Mode" #define TR_VOICE_LANGUAGE "Taal" #define TR_TEXT_LANGUAGE "Text language" diff --git a/radio/src/translations/i18n/pl.h b/radio/src/translations/i18n/pl.h index 24325bfc7..25e534bd2 100644 --- a/radio/src/translations/i18n/pl.h +++ b/radio/src/translations/i18n/pl.h @@ -939,6 +939,7 @@ #define TR_SENSOR "SENSOR" #define TR_COUNTRY_CODE "Kod regionu" #define TR_USBMODE "Tryb USB" +#define TR_USB_CHARGE "Ładuj gdy radio włączone" #define TR_JACK_MODE "Tryb Jack" #define TR_VOICE_LANGUAGE "Język głosu" #define TR_TEXT_LANGUAGE "Text language" diff --git a/radio/src/translations/i18n/pt.h b/radio/src/translations/i18n/pt.h index 4f82efab3..17a2ac8c4 100644 --- a/radio/src/translations/i18n/pt.h +++ b/radio/src/translations/i18n/pt.h @@ -947,6 +947,7 @@ #define TR_SENSOR "SENSOR" #define TR_COUNTRY_CODE "Código pais" #define TR_USBMODE "Modo USB" +#define TR_USB_CHARGE "Carregar com rádio ON" #define TR_JACK_MODE "Jack mode" #define TR_VOICE_LANGUAGE "Idoma da Voz" #define TR_TEXT_LANGUAGE "Text language" diff --git a/radio/src/translations/i18n/ru.h b/radio/src/translations/i18n/ru.h index a388d2eed..9d5e6d523 100644 --- a/radio/src/translations/i18n/ru.h +++ b/radio/src/translations/i18n/ru.h @@ -949,6 +949,7 @@ #define TR_SENSOR "СЕНСОР" #define TR_COUNTRY_CODE "Код страны" #define TR_USBMODE "Режим USB" +#define TR_USB_CHARGE "Зарядка при вкл. пульте" #define TR_JACK_MODE "Режим разъема" #define TR_VOICE_LANGUAGE "Язык озвучки" #define TR_TEXT_LANGUAGE "Text language" diff --git a/radio/src/translations/i18n/se.h b/radio/src/translations/i18n/se.h index 9ecb340a3..2cde513ca 100644 --- a/radio/src/translations/i18n/se.h +++ b/radio/src/translations/i18n/se.h @@ -947,6 +947,7 @@ #define TR_SENSOR "SENSOR" #define TR_COUNTRY_CODE "Landskod" #define TR_USBMODE "USB-läge" +#define TR_USB_CHARGE "Ladda när radion är på" #define TR_JACK_MODE "Uttagsläge" #define TR_VOICE_LANGUAGE "Röstspråk" #define TR_TEXT_LANGUAGE "Textspråk" diff --git a/radio/src/translations/i18n/tw.h b/radio/src/translations/i18n/tw.h index 634865b98..682645fc3 100644 --- a/radio/src/translations/i18n/tw.h +++ b/radio/src/translations/i18n/tw.h @@ -944,6 +944,7 @@ #define TR_SENSOR "傳感器" #define TR_COUNTRY_CODE "國別碼" #define TR_USBMODE "USB模式" +#define TR_USB_CHARGE "開機時充電" #define TR_JACK_MODE "教練插口模式" #define TR_VOICE_LANGUAGE "播報語言" #define TR_TEXT_LANGUAGE "Text language" diff --git a/radio/src/translations/i18n/ua.h b/radio/src/translations/i18n/ua.h index aa3193bd4..0f4bdf3a5 100644 --- a/radio/src/translations/i18n/ua.h +++ b/radio/src/translations/i18n/ua.h @@ -948,6 +948,7 @@ #define TR_SENSOR "СЕНСОР" #define TR_COUNTRY_CODE "Код країни" #define TR_USBMODE "Режим USB" +#define TR_USB_CHARGE "Заряджати коли увімкнено" #define TR_JACK_MODE "Режим коннектора" #define TR_VOICE_LANGUAGE "Мова голосу" #define TR_TEXT_LANGUAGE "Text language" diff --git a/radio/src/translations/sim_string_list.h b/radio/src/translations/sim_string_list.h index a981dce20..56d7f022d 100644 --- a/radio/src/translations/sim_string_list.h +++ b/radio/src/translations/sim_string_list.h @@ -1013,6 +1013,7 @@ #define STR_UPDATE_RX_OPTIONS currentLangStrings->STR_UPDATE_RX_OPTIONS #define STR_UPDATE_TX_OPTIONS currentLangStrings->STR_UPDATE_TX_OPTIONS #define STR_US currentLangStrings->STR_US +#define STR_USB_CHARGE currentLangStrings->STR_USB_CHARGE #define STR_USB_JOYSTICK currentLangStrings->STR_USB_JOYSTICK #define STR_USB_MASS_STORAGE currentLangStrings->STR_USB_MASS_STORAGE #define STR_USB_SERIAL currentLangStrings->STR_USB_SERIAL diff --git a/radio/src/translations/string_list.h b/radio/src/translations/string_list.h index 32066d2d8..8f6a242b6 100644 --- a/radio/src/translations/string_list.h +++ b/radio/src/translations/string_list.h @@ -1004,6 +1004,7 @@ STR(UNSUPPORTED_RX) STR(UPDATE_RX_OPTIONS) STR(UPDATE_TX_OPTIONS) STR(US) +STR(USB_CHARGE) STR(USB_JOYSTICK) STR(USB_MASS_STORAGE) STR(USB_SERIAL)