diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index 069de327b..8ff58eb7b 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -1765,6 +1765,33 @@ QString getBoardName(BoardEnum board) } } +const int Firmware::getFlashSize() +{ + switch (board) { + case BOARD_STOCK: + return FSIZE_STOCK; + case BOARD_M128: + return FSIZE_M128; + case BOARD_MEGA2560: + case BOARD_GRUVIN9X: + return FSIZE_GRUVIN9X; + case BOARD_SKY9X: + return FSIZE_SKY9X; + case BOARD_9XRPRO: + case BOARD_AR9X: + return FSIZE_9XRPRO; + case BOARD_TARANIS: + case BOARD_TARANIS_PLUS: + case BOARD_TARANIS_X9E: + case BOARD_FLAMENCO: + return FSIZE_TARANIS; + case BOARD_HORUS: + return FSIZE_HORUS; + default: + return 0; + } +} + Firmware * GetFirmware(QString id) { foreach(Firmware * firmware, firmwares) { diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index 4baf3e596..1adf9cf8e 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -37,6 +37,15 @@ #define EESIZE_9XRPRO (128*4096) #define EESIZE_MAX EESIZE_9XRPRO +#define FSIZE_STOCK (64*1024) +#define FSIZE_M128 (128*1024) +#define FSIZE_GRUVIN9X (256*1024) +#define FSIZE_TARANIS (512*1024) +#define FSIZE_SKY9X (256*1024) +#define FSIZE_9XRPRO (512*1024) +#define FSIZE_HORUS (2048*1024) +#define FSIZE_MAX FSIZE_HORUS + QString getBoardName(BoardEnum board); #define IS_9X(board) (board==BOARD_STOCK || board==BOARD_M128) @@ -1671,6 +1680,8 @@ class Firmware { virtual bool isTelemetrySourceAvailable(int source) = 0; virtual int isAvailable(PulsesProtocol proto, int port=0) = 0; + + const int getFlashSize(); public: QList languages; diff --git a/companion/src/firmwareinterface.cpp b/companion/src/firmwareinterface.cpp index 889cd427a..209b3e92c 100644 --- a/companion/src/firmwareinterface.cpp +++ b/companion/src/firmwareinterface.cpp @@ -44,7 +44,7 @@ int getFileType(const QString &fullFileName) } FirmwareInterface::FirmwareInterface(const QString &filename): - flash(MAX_FSIZE, 0), + flash(FSIZE_MAX, 0), flashSize(0), versionId(0), eepromVersion(0), @@ -59,11 +59,11 @@ FirmwareInterface::FirmwareInterface(const QString &filename): QFile file(filename); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { // reading HEX TEXT file QTextStream inputStream(&file); - flashSize = HexInterface(inputStream).load((uint8_t *)flash.data(), MAX_FSIZE); + flashSize = HexInterface(inputStream).load((uint8_t *)flash.data(), FSIZE_MAX); file.close(); if (flashSize == 0) { file.open(QIODevice::ReadOnly); - flashSize = file.read((char *)flash.data(), MAX_FSIZE); + flashSize = file.read((char *)flash.data(), FSIZE_MAX); } } } @@ -342,7 +342,7 @@ bool FirmwareInterface::isValid() unsigned int FirmwareInterface::save(QString fileName) { - uint8_t binflash[MAX_FSIZE]; + uint8_t binflash[FSIZE_MAX]; memcpy(&binflash, flash.constData(), flashSize); QFile file(fileName); diff --git a/companion/src/firmwareinterface.h b/companion/src/firmwareinterface.h index ae7ffb1e6..0171d91ea 100644 --- a/companion/src/firmwareinterface.h +++ b/companion/src/firmwareinterface.h @@ -19,7 +19,6 @@ #include #include -#define MAX_FSIZE (2048*1024) #define SPLASH_WIDTH (128) #define SPLASH_HEIGHT (64) #define SPLASHX9D_WIDTH (212) diff --git a/companion/src/radiointerface.cpp b/companion/src/radiointerface.cpp index df5e0a427..efc0b3e57 100644 --- a/companion/src/radiointerface.cpp +++ b/companion/src/radiointerface.cpp @@ -66,10 +66,7 @@ QStringList getDfuArgs(const QString & cmd, const QString & filename) burnConfigDialog bcd; QString memory = "0x08000000"; if (cmd == "-U") { - if(GetCurrentFirmware()->getBoard() == BOARD_HORUS) - memory.append(QString(":%1").arg(MAX_FSIZE)); - else - memory.append(QString(":%1").arg(512*1024)); + memory.append(QString(":%1").arg(GetCurrentFirmware()->getFlashSize())); } args << bcd.getDFUArgs(); if (!filename.endsWith(".dfu")) {