diff --git a/radio/src/io/frsky_firmware_update.cpp b/radio/src/io/frsky_firmware_update.cpp index 6f1d49749..ee3276864 100644 --- a/radio/src/io/frsky_firmware_update.cpp +++ b/radio/src/io/frsky_firmware_update.cpp @@ -299,7 +299,7 @@ const char * FrskyDeviceFirmwareUpdate::uploadFile(const char * filename) const char * ext = getFileExtension(filename); if (ext && !strcasecmp(ext, UPDATE_FIRMWARE_EXT)) { - // FrSkyFirmwareInformation *information = (FrSkyFirmwareInformation *) buffer; + // FrSkyFirmwareInformation * information = (FrSkyFirmwareInformation *) buffer; if (f_read(&file, buffer, sizeof(FrSkyFirmwareInformation), &count) != FR_OK || count != sizeof(FrSkyFirmwareInformation)) { f_close(&file); return "Format error"; diff --git a/radio/src/pulses/pxx2.cpp b/radio/src/pulses/pxx2.cpp index 3280d1fd0..984f7c0b4 100644 --- a/radio/src/pulses/pxx2.cpp +++ b/radio/src/pulses/pxx2.cpp @@ -20,6 +20,7 @@ #include "opentx.h" #include "pulses/pxx2.h" +#include "io/frsky_firmware_update.h" uint8_t Pxx2Pulses::addFlag0(uint8_t module) { @@ -452,7 +453,20 @@ const char * Pxx2OtaUpdate::doFlashFirmware(const char * filename) return "Open file failed"; } - uint32_t size = f_size(&file); + uint32_t size; + const char * ext = getFileExtension(filename); + if (ext && !strcasecmp(ext, UPDATE_FIRMWARE_EXT)) { + FrSkyFirmwareInformation * information = (FrSkyFirmwareInformation *) buffer; + if (f_read(&file, buffer, sizeof(FrSkyFirmwareInformation), &count) != FR_OK || count != sizeof(FrSkyFirmwareInformation)) { + f_close(&file); + return "Format error"; + } + size = information->size; + } + else { + size = f_size(&file); + } + uint32_t done = 0; while (1) { drawProgressScreen(getBasename(filename), STR_OTA_UPDATE, done, size);