diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h index 68e5bac5a..c37bd3d56 100644 --- a/radio/src/dataconstants.h +++ b/radio/src/dataconstants.h @@ -185,8 +185,7 @@ enum BeeperMode { enum ModuleIndex { INTERNAL_MODULE, EXTERNAL_MODULE, - SPORT_MODULE, - BOOTLOADER_MODULE, + SPORT_MODULE }; enum TrainerMode { diff --git a/radio/src/gui/colorlcd/radio_sdmanager.cpp b/radio/src/gui/colorlcd/radio_sdmanager.cpp index 11a95c45a..91d57054a 100644 --- a/radio/src/gui/colorlcd/radio_sdmanager.cpp +++ b/radio/src/gui/colorlcd/radio_sdmanager.cpp @@ -91,9 +91,9 @@ template class FlashDialog: public FullScreenDialog { public: - explicit FlashDialog(ModuleIndex module): + explicit FlashDialog(const T & device): FullScreenDialog(WARNING_TYPE_INFO, "Flash device"), - device(module), + device(device), progress(this, {LCD_W / 2 - 50, LCD_H / 2, 100, 15}) { } @@ -123,17 +123,6 @@ class FlashDialog: public FullScreenDialog Progress progress; }; -template -class MultiFlashDialog: public FlashDialog -{ - public: - explicit MultiFlashDialog(ModuleIndex module, MultiModuleType type): - FlashDialog(module) - { - FlashDialog::device.setType(type); - } -}; - void RadioSdManagerPage::build(FormWindow * window) { FormGridLayout grid; @@ -203,7 +192,8 @@ void RadioSdManagerPage::build(FormWindow * window) }); #endif menu->addLine(STR_FLASH_EXTERNAL_MULTI, [=]() { - auto dialog = new MultiFlashDialog(EXTERNAL_MODULE, MULTI_TYPE_MULTIMODULE); + MultiDeviceFirmwareUpdate deviceFirmwareUpdate(EXTERNAL_MODULE, MULTI_TYPE_MULTIMODULE); + auto dialog = new FlashDialog(deviceFirmwareUpdate); dialog->flash(getFullPath(name)); }); } @@ -211,7 +201,8 @@ void RadioSdManagerPage::build(FormWindow * window) #endif else if (!READ_ONLY() && !strcasecmp(ext, ELRS_FIRMWARE_EXT)) { menu->addLine(STR_FLASH_EXTERNAL_ELRS, [=]() { - auto dialog = new MultiFlashDialog(EXTERNAL_MODULE, MULTI_TYPE_ELRS); + MultiDeviceFirmwareUpdate deviceFirmwareUpdate(EXTERNAL_MODULE, MULTI_TYPE_ELRS); + auto dialog = new FlashDialog(deviceFirmwareUpdate); dialog->flash(getFullPath(name)); }); } @@ -226,7 +217,8 @@ void RadioSdManagerPage::build(FormWindow * window) if (!READ_ONLY() && !strcasecmp(ext, FIRMWARE_EXT)) { if (isBootloader(name.data())) { menu->addLine(STR_FLASH_BOOTLOADER, [=]() { - auto dialog = new FlashDialog(BOOTLOADER_MODULE); + BootloaderFirmwareUpdate bootloaderFirmwareUpdate; + auto dialog = new FlashDialog(bootloaderFirmwareUpdate); dialog->flash(getFullPath(name)); }); } @@ -234,16 +226,19 @@ void RadioSdManagerPage::build(FormWindow * window) else if (!READ_ONLY() && !strcasecmp(ext, SPORT_FIRMWARE_EXT)) { if (HAS_SPORT_UPDATE_CONNECTOR()) { menu->addLine(STR_FLASH_EXTERNAL_DEVICE, [=]() { - auto dialog = new FlashDialog(SPORT_MODULE); + FrskyDeviceFirmwareUpdate deviceFirmwareUpdate(SPORT_MODULE); + auto dialog = new FlashDialog(deviceFirmwareUpdate); dialog->flash(getFullPath(name)); }); } menu->addLine(STR_FLASH_INTERNAL_MODULE, [=]() { - auto dialog = new FlashDialog(INTERNAL_MODULE); + FrskyDeviceFirmwareUpdate deviceFirmwareUpdate(INTERNAL_MODULE); + auto dialog = new FlashDialog(deviceFirmwareUpdate); dialog->flash(getFullPath(name)); }); menu->addLine(STR_FLASH_EXTERNAL_MODULE, [=]() { - auto dialog = new FlashDialog(EXTERNAL_MODULE); + FrskyDeviceFirmwareUpdate deviceFirmwareUpdate(EXTERNAL_MODULE); + auto dialog = new FlashDialog(deviceFirmwareUpdate); dialog->flash(getFullPath(name)); }); } diff --git a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp index 6aba6e676..6e75c6848 100644 --- a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp +++ b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp @@ -204,8 +204,8 @@ void onSdManagerMenu(const char * result) #if defined(PCBTARANIS) else if (result == STR_FLASH_BOOTLOADER) { getSelectionFullPath(lfn); - BootloaderDeviceFirmwareUpdate device(BOOTLOADER_MODULE); - device.flashFirmware(lfn, drawProgressScreen); + BootloaderFirmwareUpdate bootloader; + bootloader.flashFirmware(lfn, drawProgressScreen); } else if (result == STR_FLASH_INTERNAL_MODULE) { getSelectionFullPath(lfn); @@ -233,13 +233,13 @@ void onSdManagerMenu(const char * result) #endif else if (result == STR_FLASH_EXTERNAL_MULTI) { getSelectionFullPath(lfn); - MultiDeviceFirmwareUpdate device(EXTERNAL_MODULE); - device.flashFirmware(lfn, MULTI_TYPE_MULTIMODULE, drawProgressScreen); + MultiDeviceFirmwareUpdate device(EXTERNAL_MODULE, MULTI_TYPE_MULTIMODULE); + device.flashFirmware(lfn, drawProgressScreen); } else if (result == STR_FLASH_EXTERNAL_ELRS) { getSelectionFullPath(lfn); - MultiDeviceFirmwareUpdate device(EXTERNAL_MODULE); - device.flashFirmware(lfn, MULTI_TYPE_ELRS, drawProgressScreen); + MultiDeviceFirmwareUpdate device(EXTERNAL_MODULE, MULTI_TYPE_ELRS); + device.flashFirmware(lfn, drawProgressScreen); } #endif #if defined(BLUETOOTH) diff --git a/radio/src/io/bootloader_flash.cpp b/radio/src/io/bootloader_flash.cpp index baf79d657..33a0ab28d 100644 --- a/radio/src/io/bootloader_flash.cpp +++ b/radio/src/io/bootloader_flash.cpp @@ -35,7 +35,7 @@ bool isBootloader(const char * filename) return isBootloaderStart(buffer); } -void BootloaderDeviceFirmwareUpdate::flashFirmware(const char *filename, ProgressHandler progressHandler) +void BootloaderFirmwareUpdate::flashFirmware(const char * filename, ProgressHandler progressHandler) { FIL file; uint8_t buffer[1024]; diff --git a/radio/src/io/bootloader_flash.h b/radio/src/io/bootloader_flash.h index 45ad75d6f..98c14b071 100644 --- a/radio/src/io/bootloader_flash.h +++ b/radio/src/io/bootloader_flash.h @@ -18,23 +18,12 @@ * GNU General Public License for more details. */ -#ifndef _BOOTLOADER_FLASH_H_ -#define _BOOTLOADER_FLASH_H_ +#pragma once bool isBootloader(const char * filename); -class BootloaderDeviceFirmwareUpdate +class BootloaderFirmwareUpdate { public: - explicit BootloaderDeviceFirmwareUpdate(ModuleIndex module): - module(module) - { - } - void flashFirmware(const char * filename, ProgressHandler progressHandler); - - protected: - ModuleIndex module; }; - -#endif // _BOOTLOADER_FLASH_H_ diff --git a/radio/src/io/multi_firmware_update.h b/radio/src/io/multi_firmware_update.h index 4d73162e5..0fb342160 100644 --- a/radio/src/io/multi_firmware_update.h +++ b/radio/src/io/multi_firmware_update.h @@ -34,15 +34,18 @@ For example: REM multi-stm-bcsid-01020176 */ -class MultiFirmwareInformation { +class MultiFirmwareInformation +{ public: - enum MultiFirmwareBoardType { + enum MultiFirmwareBoardType + { FIRMWARE_MULTI_AVR = 0, FIRMWARE_MULTI_STM, FIRMWARE_MULTI_ORX, }; - enum MultiFirmwareTelemetryType { + enum MultiFirmwareTelemetryType + { FIRMWARE_MULTI_TELEM_NONE = 0, FIRMWARE_MULTI_TELEM_MULTI_STATUS, // erSkyTX FIRMWARE_MULTI_TELEM_MULTI_TELEMETRY, // OpenTX @@ -70,12 +73,12 @@ class MultiFirmwareInformation { bool isMultiInternalFirmware() const { - return (boardType == FIRMWARE_MULTI_STM && optibootSupport == true && bootloaderCheck == true && telemetryType == FIRMWARE_MULTI_TELEM_MULTI_TELEMETRY); + return (boardType == FIRMWARE_MULTI_STM && optibootSupport && bootloaderCheck && telemetryType == FIRMWARE_MULTI_TELEM_MULTI_TELEMETRY); } bool isMultiExternalFirmware() const { - return ((telemetryInversion == true || boardType == FIRMWARE_MULTI_STM ) && optibootSupport == true && bootloaderCheck == true && telemetryType == FIRMWARE_MULTI_TELEM_MULTI_TELEMETRY); + return ((telemetryInversion || boardType == FIRMWARE_MULTI_STM ) && optibootSupport && bootloaderCheck && telemetryType == FIRMWARE_MULTI_TELEM_MULTI_TELEMETRY); } const char * readMultiFirmwareInformation(const char * filename); @@ -100,23 +103,21 @@ class MultiFirmwareInformation { const char * readV2Signature(const char * buffer); }; -enum MultiModuleType { +enum MultiModuleType +{ MULTI_TYPE_MULTIMODULE = 0, MULTI_TYPE_ELRS, }; -class MultiDeviceFirmwareUpdate { +class MultiDeviceFirmwareUpdate +{ public: - explicit MultiDeviceFirmwareUpdate(ModuleIndex module): - module(module) + explicit MultiDeviceFirmwareUpdate(ModuleIndex module, MultiModuleType type): + module(module), + type(type) { } - void setType(MultiModuleType value) - { - type = value; - } - bool flashFirmware(const char * filename, ProgressHandler progressHandler); protected: diff --git a/radio/src/thirdparty/libopenui b/radio/src/thirdparty/libopenui index 55d511c0d..c594c677d 160000 --- a/radio/src/thirdparty/libopenui +++ b/radio/src/thirdparty/libopenui @@ -1 +1 @@ -Subproject commit 55d511c0de2eab1b7d60eb31743977e2be0df3a7 +Subproject commit c594c677dc04040e7983d5329a8e9e1eeaa25a70