diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h index 01a04dc62..991dd3deb 100644 --- a/radio/src/dataconstants.h +++ b/radio/src/dataconstants.h @@ -227,7 +227,8 @@ enum BeeperMode { enum ModuleIndex { INTERNAL_MODULE, EXTERNAL_MODULE, - TRAINER_MODULE + TRAINER_MODULE, + FLASHING_MODULE, }; enum TrainerMode { TRAINER_MODE_MASTER_TRAINER_JACK, diff --git a/radio/src/gui/480x272/radio_sdmanager.cpp b/radio/src/gui/480x272/radio_sdmanager.cpp index f0bbe5a32..99f3dd6e8 100644 --- a/radio/src/gui/480x272/radio_sdmanager.cpp +++ b/radio/src/gui/480x272/radio_sdmanager.cpp @@ -136,10 +136,18 @@ void onSdManagerMenu(const char * result) getSelectionFullPath(lfn); pushMenuTextView(lfn); } - else if (result == STR_FLASH_EXTERNAL_DEVICE) { + else if (result == STR_FLASH_INTERNAL_MODULE) { + getSelectionFullPath(lfn); + sportFlashDevice(INTERNAL_MODULE, lfn); + } + else if (result == STR_FLASH_EXTERNAL_MODULE) { getSelectionFullPath(lfn); sportFlashDevice(EXTERNAL_MODULE, lfn); } + else if (result == STR_FLASH_EXTERNAL_DEVICE) { + getSelectionFullPath(lfn); + sportFlashDevice(FLASHING_MODULE, lfn); + } #if defined(LUA) else if (result == STR_EXECUTE_FILE) { getSelectionFullPath(lfn); @@ -231,7 +239,10 @@ bool menuRadioSdManager(event_t _event) POPUP_MENU_ADD_ITEM(STR_VIEW_TEXT); } else if (!READ_ONLY() && !strcasecmp(ext, SPORT_FIRMWARE_EXT)) { - POPUP_MENU_ADD_ITEM(STR_FLASH_EXTERNAL_DEVICE); + if (HAS_SPORT_UPDATE_CONNECTOR()) + POPUP_MENU_ADD_ITEM(STR_FLASH_EXTERNAL_DEVICE); + POPUP_MENU_ADD_ITEM(STR_FLASH_INTERNAL_MODULE); + POPUP_MENU_ADD_ITEM(STR_FLASH_EXTERNAL_MODULE); } else if (isExtensionMatching(ext, SCRIPTS_EXT)) { POPUP_MENU_ADD_ITEM(STR_EXECUTE_FILE); diff --git a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp index 38564b427..c2f7aac57 100644 --- a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp +++ b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp @@ -149,10 +149,15 @@ void onSdManagerMenu(const char * result) getSelectionFullPath(lfn); sportFlashDevice(INTERNAL_MODULE, lfn); } - else if (result == STR_FLASH_EXTERNAL_DEVICE) { + else if (result == STR_FLASH_EXTERNAL_MODULE) { + // needed on X-Lite (as the R9M needs 2S while the external device flashing port only provides 5V) getSelectionFullPath(lfn); sportFlashDevice(EXTERNAL_MODULE, lfn); } + else if (result == STR_FLASH_EXTERNAL_DEVICE) { + getSelectionFullPath(lfn); + sportFlashDevice(FLASHING_MODULE, lfn); + } #endif #if defined(LUA) else if (result == STR_EXECUTE_FILE) { @@ -283,8 +288,10 @@ void menuRadioSdManager(event_t _event) } } else if (!READ_ONLY() && !strcasecmp(ext, SPORT_FIRMWARE_EXT)) { - POPUP_MENU_ADD_ITEM(STR_FLASH_EXTERNAL_DEVICE); + if (HAS_SPORT_UPDATE_CONNECTOR()) + POPUP_MENU_ADD_ITEM(STR_FLASH_EXTERNAL_DEVICE); POPUP_MENU_ADD_ITEM(STR_FLASH_INTERNAL_MODULE); + POPUP_MENU_ADD_ITEM(STR_FLASH_EXTERNAL_MODULE); } #endif } diff --git a/radio/src/io/frsky_sport.cpp b/radio/src/io/frsky_sport.cpp index 593570e24..8a73d749e 100644 --- a/radio/src/io/frsky_sport.cpp +++ b/radio/src/io/frsky_sport.cpp @@ -180,6 +180,8 @@ const char * sportUpdatePowerOn(ModuleIndex module) #if defined(PCBTARANIS) || defined(PCBHORUS) if (module == INTERNAL_MODULE) INTERNAL_MODULE_ON(); + else if (module == EXTERNAL_MODULE) + EXTERNAL_MODULE_ON(); else SPORT_UPDATE_POWER_ON(); #endif @@ -307,6 +309,7 @@ void sportFlashDevice(ModuleIndex module, const char * filename) uint8_t extPwr = IS_EXTERNAL_MODULE_ON(); INTERNAL_MODULE_OFF(); EXTERNAL_MODULE_OFF(); + SPORT_UPDATE_POWER_OFF(); /* wait 2s off */ watchdogSuspend(2000); @@ -325,6 +328,7 @@ void sportFlashDevice(ModuleIndex module, const char * filename) #if defined(PCBTARANIS) || defined(PCBHORUS) INTERNAL_MODULE_OFF(); + EXTERNAL_MODULE_OFF(); SPORT_UPDATE_POWER_OFF(); #endif diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h index 706ef48fe..c7cb7be48 100644 --- a/radio/src/targets/horus/board.h +++ b/radio/src/targets/horus/board.h @@ -541,8 +541,8 @@ void sportUpdatePowerOff(void); #define SPORT_UPDATE_POWER_ON() sportUpdatePowerOn() #define SPORT_UPDATE_POWER_OFF() sportUpdatePowerOff() #else -#define SPORT_UPDATE_POWER_ON() EXTERNAL_MODULE_ON() -#define SPORT_UPDATE_POWER_OFF() EXTERNAL_MODULE_OFF() +#define SPORT_UPDATE_POWER_ON() +#define SPORT_UPDATE_POWER_OFF() #endif // Haptic driver diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index 9d642229e..9e1a2838c 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -258,8 +258,10 @@ #define SPORT_UPDATE_RCC_AHB1Periph RCC_AHB1Periph_GPIOH #define SPORT_UPDATE_PWR_GPIO GPIOH #define SPORT_UPDATE_PWR_GPIO_PIN GPIO_Pin_13 // PH.13 + #define HAS_SPORT_UPDATE_CONNECTOR() true #else #define SPORT_UPDATE_RCC_AHB1Periph 0 + #define HAS_SPORT_UPDATE_CONNECTOR() false #endif // PCBREV diff --git a/radio/src/targets/taranis/board.cpp b/radio/src/targets/taranis/board.cpp index e4bf7cc9c..48cbc7bc8 100644 --- a/radio/src/targets/taranis/board.cpp +++ b/radio/src/targets/taranis/board.cpp @@ -129,18 +129,12 @@ void sportUpdateInit() void sportUpdatePowerOn() { - if (HAS_SPORT_UPDATE_CONNECTOR()) - GPIO_SPORT_UPDATE_PWR_GPIO_ON(SPORT_UPDATE_PWR_GPIO, SPORT_UPDATE_PWR_GPIO_PIN); - else - EXTERNAL_MODULE_ON(); + GPIO_SPORT_UPDATE_PWR_GPIO_ON(SPORT_UPDATE_PWR_GPIO, SPORT_UPDATE_PWR_GPIO_PIN); } void sportUpdatePowerOff() { - if (HAS_SPORT_UPDATE_CONNECTOR()) - GPIO_SPORT_UPDATE_PWR_GPIO_OFF(SPORT_UPDATE_PWR_GPIO, SPORT_UPDATE_PWR_GPIO_PIN); - else - EXTERNAL_MODULE_OFF(); + GPIO_SPORT_UPDATE_PWR_GPIO_OFF(SPORT_UPDATE_PWR_GPIO, SPORT_UPDATE_PWR_GPIO_PIN); } #endif diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index 778a65a17..5cfae563b 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -591,9 +591,8 @@ void sportUpdatePowerOff(void); #define SPORT_UPDATE_POWER_ON() sportUpdatePowerOn() #define SPORT_UPDATE_POWER_OFF() sportUpdatePowerOff() #else -#define sportUpdateInit() -#define SPORT_UPDATE_POWER_ON() EXTERNAL_MODULE_ON() -#define SPORT_UPDATE_POWER_OFF() EXTERNAL_MODULE_OFF() +#define SPORT_UPDATE_POWER_ON() +#define SPORT_UPDATE_POWER_OFF() #endif // Audio driver diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 9c56a1149..24213d71d 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -595,6 +595,7 @@ const pm_char STR_PATH_TOO_LONG[] PROGMEM = TR_PATH_TOO_LONG; const pm_char STR_VIEW_TEXT[] PROGMEM = TR_VIEW_TEXT; const pm_char STR_FLASH_BOOTLOADER[] PROGMEM = TR_FLASH_BOOTLOADER; const pm_char STR_FLASH_INTERNAL_MODULE[] PROGMEM = TR_FLASH_INTERNAL_MODULE; +const pm_char STR_FLASH_EXTERNAL_MODULE[] PROGMEM = TR_FLASH_EXTERNAL_MODULE; const pm_char STR_FIRMWARE_UPDATE_ERROR[] PROGMEM = TR_FIRMWARE_UPDATE_ERROR; const pm_char STR_FLASH_EXTERNAL_DEVICE[] PROGMEM = TR_FLASH_EXTERNAL_DEVICE; const pm_char STR_WRITING[] PROGMEM = TR_WRITING; diff --git a/radio/src/translations.h b/radio/src/translations.h index 4697c4949..da83e3976 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -830,6 +830,7 @@ extern const pm_char STR_VIEW_TEXT[]; extern const pm_char STR_FLASH_BOOTLOADER[]; extern const pm_char STR_FLASH_EXTERNAL_DEVICE[]; extern const pm_char STR_FLASH_INTERNAL_MODULE[]; +extern const pm_char STR_FLASH_EXTERNAL_MODULE[]; extern const pm_char STR_FIRMWARE_UPDATE_ERROR[]; extern const pm_char STR_WRITING[]; extern const pm_char STR_CONFIRM_FORMAT[]; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 4cad2da48..be1bca135 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -1001,8 +1001,9 @@ #define TR_PATH_TOO_LONG "Cesta je moc dlouhá" #define TR_VIEW_TEXT "Zobrazit text" #define TR_FLASH_BOOTLOADER "Flash BootLoaderu" -#define TR_FLASH_EXTERNAL_DEVICE TR("Flash ext. modulu", "Flash externího zařízení") +#define TR_FLASH_EXTERNAL_DEVICE TR("Flash ext. port", "Flash externího port") #define TR_FLASH_INTERNAL_MODULE TR("Flash vnitř. modulu", "Flash vnitřního modulu") +#define TR_FLASH_EXTERNAL_MODULE TR("Flash ext. modulu", "Flash externího zařízení") #define TR_FIRMWARE_UPDATE_ERROR TR("Chyba zápisu FW", "Chyba zápisu firmware") #define TR_WRITING TR3("\14Zapisuji..", "\032Zapisuji..", "Zapisuji..") #define TR_CONFIRM_FORMAT "Provést Formát?" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index d4fbbb2a7..4933ebd86 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -1021,6 +1021,7 @@ #define TR_FLASH_BOOTLOADER TR("Flash Bootloader","Flash BootLoader selbst") // #define TR_FLASH_EXTERNAL_DEVICE TR("Flash ext. Gerät","Flash externes Gerät") #define TR_FLASH_INTERNAL_MODULE TR("Flash int. XJT","Flash internes XJT-Modul") +#define TR_FLASH_EXTERNAL_MODULE TR("Flash ext. mod","Flash extern module") #define TR_FIRMWARE_UPDATE_ERROR TR("FW update Error","Firmware update error") #define TR_WRITING "\032Writing..." // #define TR_CONFIRM_FORMAT "Formatieren bestätigen?" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 2b22774ac..d412514b4 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -1006,8 +1006,9 @@ #define TR_PATH_TOO_LONG "Path too long" #define TR_VIEW_TEXT "View text" #define TR_FLASH_BOOTLOADER "Flash bootLoader" -#define TR_FLASH_EXTERNAL_DEVICE TR("Flash ext. device", "Flash external device") +#define TR_FLASH_EXTERNAL_DEVICE TR("Flash S.Port", "Flash S.Port device") #define TR_FLASH_INTERNAL_MODULE TR("Flash int. module", "Flash internal module") +#define TR_FLASH_EXTERNAL_MODULE TR("Flash ext. module", "Flash external module") #define TR_FIRMWARE_UPDATE_ERROR TR("FW update error", "Firmware update error") #define TR_WRITING TR3("\14Writing...", "\032Writing...", "Writing...") #define TR_CONFIRM_FORMAT "Confirm Format?" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index c7def4842..573e5d07c 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -999,6 +999,7 @@ #define TR_FLASH_BOOTLOADER "Flash BootLoader" #define TR_FLASH_EXTERNAL_DEVICE "Flash External Device" #define TR_FLASH_INTERNAL_MODULE "Flash Internal Module" +#define TR_FLASH_EXTERNAL_MODULE "Flash external module" #define TR_FIRMWARE_UPDATE_ERROR TR("FW update Error","Firmware update error") #define TR_WRITING "\032Writing..." #define TR_CONFIRM_FORMAT "Confirm Format?" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index ddf8f4905..f7b70e9d1 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -991,6 +991,7 @@ #define TR_FLASH_BOOTLOADER "Flash BootLoader" #define TR_FLASH_EXTERNAL_DEVICE "Flash External Device" #define TR_FLASH_INTERNAL_MODULE "Flash Internal Module" +#define TR_FLASH_EXTERNAL_MODULE "Flash external module" #define TR_FIRMWARE_UPDATE_ERROR TR("FW update Error","Firmware update error") #define TR_WRITING "\032Writing..." #define TR_CONFIRM_FORMAT "Confirm Format?" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 114db8b0b..745244ecd 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -1025,8 +1025,9 @@ #define TR_PATH_TOO_LONG "Chemin trop long" #define TR_VIEW_TEXT "Voir texte" #define TR_FLASH_BOOTLOADER "Flasher BootLoader" -#define TR_FLASH_EXTERNAL_DEVICE TR("Flasher module ext.", "Flasher module externe") +#define TR_FLASH_EXTERNAL_DEVICE TR("Flasher S.Port", "Flasher S.Port externe") #define TR_FLASH_INTERNAL_MODULE TR("Flasher module int.", "Flasher module interne") +#define TR_FLASH_EXTERNAL_MODULE TR("Flasher module ext.", "Flasher module externe") #define TR_FIRMWARE_UPDATE_ERROR TR("Erreur màj FW","Erreur de mise à jour") #define TR_WRITING TR("\14Ecriture...", "\032Ecriture...") #define TR_CONFIRM_FORMAT "Confirmer Formatage?" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 655e3dc25..06a7be485 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -1016,6 +1016,7 @@ #define TR_FLASH_BOOTLOADER "Flash BootLoader" #define TR_FLASH_EXTERNAL_DEVICE "Progr. Dispositivo Esterno" #define TR_FLASH_INTERNAL_MODULE "Progr. Modulo Interno" +#define TR_FLASH_EXTERNAL_MODULE "Flash external module" #define TR_FIRMWARE_UPDATE_ERROR TR("FW update Error","Firmware update error") #define TR_WRITING "\032Scrivendo..." #define TR_CONFIRM_FORMAT "Confermi Format?" diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 13989729f..9506dceaf 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -1007,6 +1007,7 @@ #define TR_FLASH_BOOTLOADER "Flash BootLoader" #define TR_FLASH_EXTERNAL_DEVICE "Flash extern Apparaat" #define TR_FLASH_INTERNAL_MODULE "Flash interne XJT-Module" +#define TR_FLASH_EXTERNAL_MODULE "Flash external module" #define TR_FIRMWARE_UPDATE_ERROR TR("FW update Error","Firmware update error") #define TR_WRITING "\032Schrijven..." #define TR_CONFIRM_FORMAT "Formatteren bevestigen?" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 5532dbb84..a83d367ed 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -1019,6 +1019,7 @@ #define TR_FLASH_BOOTLOADER "Flash BootLoader" #define TR_FLASH_EXTERNAL_DEVICE "Sflashuj Moduł Zewnętrzny" #define TR_FLASH_INTERNAL_MODULE "Sflashuj Moduł Wewnętrzny" +#define TR_FLASH_EXTERNAL_MODULE "Flash external module" #define TR_FIRMWARE_UPDATE_ERROR TR("FW update Error","Firmware update error") #define TR_WRITING "\032Zapis... " #define TR_CONFIRM_FORMAT "Zatwierdź Format?" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 85de3c96c..ce4b402f1 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -998,6 +998,7 @@ #define TR_FLASH_BOOTLOADER "Flash BootLoader" #define TR_FLASH_EXTERNAL_DEVICE "Flash External Device" #define TR_FLASH_INTERNAL_MODULE "Flash Internal Module" +#define TR_FLASH_EXTERNAL_MODULE "Flash external module" #define TR_FIRMWARE_UPDATE_ERROR TR("FW update Error","Firmware update error") #define TR_WRITING "\032Writing..." #define TR_CONFIRM_FORMAT "Confirm Format?" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index a471c4921..be12263c4 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -1026,6 +1026,7 @@ #define TR_FLASH_BOOTLOADER "Skriv BootLoader" #define TR_FLASH_EXTERNAL_DEVICE "Flash External Device" #define TR_FLASH_INTERNAL_MODULE "Flash Internal Module" +#define TR_FLASH_EXTERNAL_MODULE "Flash external module" #define TR_FIRMWARE_UPDATE_ERROR TR("FW update Error","Firmware update error") #define TR_WRITING "\032Skriver..." #define TR_CONFIRM_FORMAT "Formatera Minnet?"