1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-25 01:05:10 +03:00

Arguably cleaner flash size retrieval

This commit is contained in:
Andre Bernet 2016-08-31 14:28:14 +02:00
parent 03c969fa3c
commit c994260c85
5 changed files with 43 additions and 9 deletions

View file

@ -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) Firmware * GetFirmware(QString id)
{ {
foreach(Firmware * firmware, firmwares) { foreach(Firmware * firmware, firmwares) {

View file

@ -37,6 +37,15 @@
#define EESIZE_9XRPRO (128*4096) #define EESIZE_9XRPRO (128*4096)
#define EESIZE_MAX EESIZE_9XRPRO #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); QString getBoardName(BoardEnum board);
#define IS_9X(board) (board==BOARD_STOCK || board==BOARD_M128) #define IS_9X(board) (board==BOARD_STOCK || board==BOARD_M128)
@ -1671,6 +1680,8 @@ class Firmware {
virtual bool isTelemetrySourceAvailable(int source) = 0; virtual bool isTelemetrySourceAvailable(int source) = 0;
virtual int isAvailable(PulsesProtocol proto, int port=0) = 0; virtual int isAvailable(PulsesProtocol proto, int port=0) = 0;
const int getFlashSize();
public: public:
QList<const char *> languages; QList<const char *> languages;

View file

@ -44,7 +44,7 @@ int getFileType(const QString &fullFileName)
} }
FirmwareInterface::FirmwareInterface(const QString &filename): FirmwareInterface::FirmwareInterface(const QString &filename):
flash(MAX_FSIZE, 0), flash(FSIZE_MAX, 0),
flashSize(0), flashSize(0),
versionId(0), versionId(0),
eepromVersion(0), eepromVersion(0),
@ -59,11 +59,11 @@ FirmwareInterface::FirmwareInterface(const QString &filename):
QFile file(filename); QFile file(filename);
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { // reading HEX TEXT file if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { // reading HEX TEXT file
QTextStream inputStream(&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(); file.close();
if (flashSize == 0) { if (flashSize == 0) {
file.open(QIODevice::ReadOnly); 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) unsigned int FirmwareInterface::save(QString fileName)
{ {
uint8_t binflash[MAX_FSIZE]; uint8_t binflash[FSIZE_MAX];
memcpy(&binflash, flash.constData(), flashSize); memcpy(&binflash, flash.constData(), flashSize);
QFile file(fileName); QFile file(fileName);

View file

@ -19,7 +19,6 @@
#include <QImage> #include <QImage>
#include <QByteArray> #include <QByteArray>
#define MAX_FSIZE (2048*1024)
#define SPLASH_WIDTH (128) #define SPLASH_WIDTH (128)
#define SPLASH_HEIGHT (64) #define SPLASH_HEIGHT (64)
#define SPLASHX9D_WIDTH (212) #define SPLASHX9D_WIDTH (212)

View file

@ -66,10 +66,7 @@ QStringList getDfuArgs(const QString & cmd, const QString & filename)
burnConfigDialog bcd; burnConfigDialog bcd;
QString memory = "0x08000000"; QString memory = "0x08000000";
if (cmd == "-U") { if (cmd == "-U") {
if(GetCurrentFirmware()->getBoard() == BOARD_HORUS) memory.append(QString(":%1").arg(GetCurrentFirmware()->getFlashSize()));
memory.append(QString(":%1").arg(MAX_FSIZE));
else
memory.append(QString(":%1").arg(512*1024));
} }
args << bcd.getDFUArgs(); args << bcd.getDFUArgs();
if (!filename.endsWith(".dfu")) { if (!filename.endsWith(".dfu")) {