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
11class FirmwareImage : public QObject
12{
13 Q_OBJECT
14
15public:
16 FirmwareImage(QObject *parent = 0);
17
23 bool load(const QString& imageFilename, uint32_t boardId);
24
26 uint32_t imageSize(void) const { return _imageSize; }
27
29 bool imageIsBinFormat(void) const { return _binFormat; }
30
32 QString binFilename(void) const { return _binFilename; }
33
35 uint16_t ihxBlockCount(void) const;
36
42 bool ihxGetBlock(uint16_t index, uint16_t& address, QByteArray& bytes) const;
43
45 bool isCompatible(uint32_t boardId, uint32_t firmwareId);
46
47signals:
48 void errorMessage(const QString& errorString);
49 void statusMessage(const QString& warningtring);
50
51private:
52 bool _binLoad(const QString& px4Filename);
53 bool _px4Load(const QString& px4Filename);
54 bool _ihxLoad(const QString& ihxFilename);
55
56 bool _readByteFromStream(QTextStream& stream, uint8_t& byte);
57 bool _readWordFromStream(QTextStream& stream, uint16_t& word);
58 bool _readBytesFromStream(QTextStream& stream, uint8_t byteCount, QByteArray& bytes);
59
60 bool _decompressJsonValue(const QJsonObject& jsonObject,
61 const QByteArray& jsonDocBytes,
62 const QString& sizeKey,
63 const QString& bytesKey,
64 QByteArray& decompressedBytes);
65
66 typedef struct {
67 uint16_t address;
68 QByteArray bytes;
69 } IntelHexBlock_t;
70
71 bool _binFormat;
72 uint32_t _boardId;
73 QString _binFilename;
74 QList<IntelHexBlock_t> _ihxBlocks;
75 uint32_t _imageSize;
76
77 static constexpr const char* _jsonBoardIdKey = "board_id";
78 static constexpr const char* _jsonParamXmlSizeKey = "parameter_xml_size";
79 static constexpr const char* _jsonParamXmlKey = "parameter_xml";
80 static constexpr const char* _jsonAirframeXmlSizeKey = "airframe_xml_size";
81 static constexpr const char* _jsonAirframeXmlKey = "airframe_xml";
82 static constexpr const char* _jsonImageSizeKey = "image_size";
83 static constexpr const char* _jsonImageKey = "image";
84 static constexpr const char* _jsonMavAutopilotKey = "mav_autopilot";
85};
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