This commit is contained in:
Bertrand Songis
2021-02-11 17:50:43 +01:00
parent 4948f98f06
commit 4a2e20815f
7 changed files with 40 additions and 56 deletions
+14 -19
View File
@@ -91,9 +91,9 @@ template <class T>
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 T>
class MultiFlashDialog: public FlashDialog<T>
{
public:
explicit MultiFlashDialog(ModuleIndex module, MultiModuleType type):
FlashDialog<T>(module)
{
FlashDialog<T>::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<MultiDeviceFirmwareUpdate>(EXTERNAL_MODULE, MULTI_TYPE_MULTIMODULE);
MultiDeviceFirmwareUpdate deviceFirmwareUpdate(EXTERNAL_MODULE, MULTI_TYPE_MULTIMODULE);
auto dialog = new FlashDialog<MultiDeviceFirmwareUpdate>(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<MultiDeviceFirmwareUpdate>(EXTERNAL_MODULE, MULTI_TYPE_ELRS);
MultiDeviceFirmwareUpdate deviceFirmwareUpdate(EXTERNAL_MODULE, MULTI_TYPE_ELRS);
auto dialog = new FlashDialog<MultiDeviceFirmwareUpdate>(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<BootloaderDeviceFirmwareUpdate>(BOOTLOADER_MODULE);
BootloaderFirmwareUpdate bootloaderFirmwareUpdate;
auto dialog = new FlashDialog<BootloaderFirmwareUpdate>(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<FrskyDeviceFirmwareUpdate>(SPORT_MODULE);
FrskyDeviceFirmwareUpdate deviceFirmwareUpdate(SPORT_MODULE);
auto dialog = new FlashDialog<FrskyDeviceFirmwareUpdate>(deviceFirmwareUpdate);
dialog->flash(getFullPath(name));
});
}
menu->addLine(STR_FLASH_INTERNAL_MODULE, [=]() {
auto dialog = new FlashDialog<FrskyDeviceFirmwareUpdate>(INTERNAL_MODULE);
FrskyDeviceFirmwareUpdate deviceFirmwareUpdate(INTERNAL_MODULE);
auto dialog = new FlashDialog<FrskyDeviceFirmwareUpdate>(deviceFirmwareUpdate);
dialog->flash(getFullPath(name));
});
menu->addLine(STR_FLASH_EXTERNAL_MODULE, [=]() {
auto dialog = new FlashDialog<FrskyDeviceFirmwareUpdate>(EXTERNAL_MODULE);
FrskyDeviceFirmwareUpdate deviceFirmwareUpdate(EXTERNAL_MODULE);
auto dialog = new FlashDialog<FrskyDeviceFirmwareUpdate>(deviceFirmwareUpdate);
dialog->flash(getFullPath(name));
});
}
@@ -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)