23#ifdef QGC_UNITTEST_BUILD
24 friend class FirmwareUpgradeControllerTest;
60 : autopilotStackType(stack), firmwareType(firmware), firmwareVehicleType(vehicle) {}
81 Q_PROPERTY(QString boardType MEMBER _boardTypeName NOTIFY
boardFound)
97 Q_INVOKABLE
void startBoardSearch(
void);
100 Q_INVOKABLE
void cancel(
void);
159 void _firmwareDownloadProgress (qint64 curr, qint64 total);
160 void _firmwareDownloadComplete (
bool success,
const QString &localFile,
const QString &errorMsg);
161 void _foundBoard (
bool firstAttempt,
const QSerialPortInfo& portInfo,
int boardType, QString boardName);
162 void _noBoardFound (
void);
163 void _boardGone (
void);
164 void _foundBoardInfo (
int bootloaderVersion,
int boardID,
int flashSize);
166 void _status (
const QString& statusString);
167 void _bootloaderSyncFailed (
void);
168 void _flashComplete (
void);
169 void _updateProgress (
int curr,
int total);
170 void _eraseStarted (
void);
171 void _eraseComplete (
void);
172 void _eraseProgressTick (
void);
173 void _px4ReleasesGithubDownloadComplete (
bool success,
const QString &localFile,
const QString &errorMsg);
174 void _ardupilotManifestDownloadComplete (
bool success,
const QString &localFile,
const QString &errorMsg);
175 void _buildAPMFirmwareNames (
void);
178 QHash<FirmwareIdentifier, QString>* _firmwareHashForBoardId(
int boardId);
180 void _downloadFirmware (
void);
181 void _appendStatusLog (
const QString& text,
bool critical =
false);
182 void _errorCancel (
const QString& msg);
183 void _determinePX4StableVersion (
void);
184 void _downloadArduPilotManifest (
void);
186 QString _singleFirmwareURL;
187 bool _singleFirmwareMode;
188 bool _downloadingFirmwareList;
190 QString _portDescription;
193 QHash<FirmwareIdentifier, QString> _rgSiKRadioFirmware;
196 QHash<FirmwareIdentifier, QString> _rgAPMChibiosReplaceNamedBoardFirmware;
197 QHash<FirmwareIdentifier, QString> _rgFirmwareDynamic;
199 QMap<FirmwareBuildType_t, QMap<FirmwareVehicleType_t, QString> > _apmVersionMap;
200 QList<FirmwareVehicleType_t> _apmVehicleTypeFromCurrentVersionList;
203 bool _bootloaderFound;
204 uint32_t _bootloaderVersion;
205 uint32_t _bootloaderBoardID;
206 uint32_t _bootloaderBoardFlashSize;
208 bool _startFlashWhenBootloaderFound;
213 QString _firmwareFilename;
218 static const int _eraseTickMsec = 500;
219 static const int _eraseTotalMsec = 15000;
223 static const int _findBoardTimeoutMsec = 30000;
224 static const int _findBootloaderTimeoutMsec = 5000;
226 QQuickItem* _statusLog;
227 QQuickItem* _progressBar;
229 bool _searchingForBoard;
233 QString _boardTypeName;
239 QString _px4StableVersion;
240 QString _px4BetaVersion;
242 const QString _apmBoardDescriptionReplaceText;
244 static constexpr const char* _manifestFirmwareJsonKey =
"firmware";
245 static constexpr const char* _manifestBoardIdJsonKey =
"board_id";
246 static constexpr const char* _manifestMavTypeJsonKey =
"mav-type";
247 static constexpr const char* _manifestFormatJsonKey =
"format";
248 static constexpr const char* _manifestUrlJsonKey =
"url";
249 static constexpr const char* _manifestMavFirmwareVersionTypeJsonKey =
"mav-firmware-version-type";
250 static constexpr const char* _manifestUSBIDJsonKey =
"USBID";
251 static constexpr const char* _manifestMavFirmwareVersionJsonKey =
"mav-firmware-version";
252 static constexpr const char* _manifestBootloaderStrJsonKey =
"bootloader_str";
253 static constexpr const char* _manifestLatestKey =
"latest";
254 static constexpr const char* _manifestPlatformKey =
"platform";
255 static constexpr const char* _manifestBrandNameKey =
"brand_name";
263 QStringList rgBootloaderPortString;
266 QString friendlyName;
269 } ManifestFirmwareInfo_t;
272 QList<ManifestFirmwareInfo_t> _rgManifestFirmwareInfo;
273 QMap<QString, FirmwareBuildType_t> _manifestMavFirmwareVersionTypeToFirmwareBuildTypeMap;
274 QMap<QString, FirmwareVehicleType_t> _manifestMavTypeToFirmwareVehicleTypeMap;
275 QStringList _apmFirmwareNames;
276 int _apmFirmwareNamesBestIndex = 0;
277 QStringList _apmFirmwareUrls;
278 Fact* _apmChibiOSSetting;
279 Fact* _apmVehicleTypeSetting;
281 FirmwareBuildType_t _manifestMavFirmwareVersionTypeToFirmwareBuildType (
const QString& manifestMavFirmwareVersionType);