QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
FirmwareImage.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QObject>
4#include <QtCore/QString>
5#include <QtCore/QByteArray>
6#include <QtCore/QList>
7#include <QtCore/QTextStream>
8
10class FirmwareImage : public QObject
11{
12 Q_OBJECT
13
14public:
15 FirmwareImage(QObject *parent = 0);
16
22 bool load(const QString& imageFilename, uint32_t boardId);
23
25 uint32_t imageSize(void) const { return _imageSize; }
26
28 bool imageIsBinFormat(void) const { return _binFormat; }
29
31 QString binFilename(void) const { return _binFilename; }
32
34 uint16_t ihxBlockCount(void) const;
35
41 bool ihxGetBlock(uint16_t index, uint16_t& address, QByteArray& bytes) const;
42
44 bool isCompatible(uint32_t boardId, uint32_t firmwareId);
45
46signals:
47 void errorMessage(const QString& errorString);
48 void statusMessage(const QString& warningtring);
49
50private:
51 bool _binLoad(const QString& px4Filename);
52 bool _px4Load(const QString& px4Filename);
53 bool _ihxLoad(const QString& ihxFilename);
54
55 bool _readByteFromStream(QTextStream& stream, uint8_t& byte);
56 bool _readWordFromStream(QTextStream& stream, uint16_t& word);
57 bool _readBytesFromStream(QTextStream& stream, uint8_t byteCount, QByteArray& bytes);
58
59 bool _decompressJsonValue(const QJsonObject& jsonObject,
60 const QByteArray& jsonDocBytes,
61 const QString& sizeKey,
62 const QString& bytesKey,
63 QByteArray& decompressedBytes);
64
65 typedef struct {
66 uint16_t address;
67 QByteArray bytes;
68 } IntelHexBlock_t;
69
70 bool _binFormat;
71 uint32_t _boardId;
72 QString _binFilename;
73 QList<IntelHexBlock_t> _ihxBlocks;
74 uint32_t _imageSize;
75
76 static constexpr const char* _jsonBoardIdKey = "board_id";
77 static constexpr const char* _jsonParamXmlSizeKey = "parameter_xml_size";
78 static constexpr const char* _jsonParamXmlKey = "parameter_xml";
79 static constexpr const char* _jsonAirframeXmlSizeKey = "airframe_xml_size";
80 static constexpr const char* _jsonAirframeXmlKey = "airframe_xml";
81 static constexpr const char* _jsonImageSizeKey = "image_size";
82 static constexpr const char* _jsonImageKey = "image";
83 static constexpr const char* _jsonMavAutopilotKey = "mav_autopilot";
84};
QString errorString
Support for Intel Hex firmware file.
bool isCompatible(uint32_t boardId, uint32_t firmwareId)
bool imageIsBinFormat(void) const
bool load(const QString &imageFilename, uint32_t boardId)
void statusMessage(const QString &warningtring)
QString binFilename(void) const
bool ihxGetBlock(uint16_t index, uint16_t &address, QByteArray &bytes) const
uint32_t imageSize(void) const
Returns the number of bytes in the image.
void errorMessage(const QString &errorString)
uint16_t ihxBlockCount(void) const