Fixes
This commit is contained in:
@@ -185,8 +185,7 @@ enum BeeperMode {
|
||||
enum ModuleIndex {
|
||||
INTERNAL_MODULE,
|
||||
EXTERNAL_MODULE,
|
||||
SPORT_MODULE,
|
||||
BOOTLOADER_MODULE,
|
||||
SPORT_MODULE
|
||||
};
|
||||
|
||||
enum TrainerMode {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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_
|
||||
|
||||
@@ -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:
|
||||
|
||||
Vendored
+1
-1
Submodule radio/src/thirdparty/libopenui updated: 55d511c0de...c594c677dc
Reference in New Issue
Block a user