26#ifdef QGC_UNITTEST_BUILD
27 friend class FirmwareUpgradeControllerTest;
63 : autopilotStackType(stack), firmwareType(firmware), firmwareVehicleType(vehicle) {}
84 Q_PROPERTY(QString boardType MEMBER _boardTypeName NOTIFY
boardFound)
104 Q_INVOKABLE
void flashPort(
const QString& systemLocation);
107 Q_INVOKABLE
void cancel(
void);
168 void _firmwareDownloadProgress (qint64 curr, qint64 total);
169 void _firmwareDownloadComplete (
bool success,
const QString &localFile,
const QString &errorMsg);
170 void _foundBoard (
bool firstAttempt,
const QSerialPortInfo& portInfo,
int boardType, QString boardName);
171 void _noBoardFound (
void);
172 void _boardGone (
void);
173 void _foundBoardInfo (
int bootloaderVersion,
int boardID,
int flashSize);
175 void _status (
const QString& statusString);
176 void _bootloaderSyncFailed (
void);
177 void _flashComplete (
void);
178 void _updateProgress (
int curr,
int total);
179 void _eraseStarted (
void);
180 void _eraseComplete (
void);
181 void _eraseProgressTick (
void);
182 void _px4ReleasesGithubDownloadComplete (
bool success,
const QString &localFile,
const QString &errorMsg);
183 void _ardupilotManifestDownloadComplete (
bool success,
const QString &localFile,
const QString &errorMsg);
184 void _buildAPMFirmwareNames (
void);
185 void _portsAvailable (
const QVariantList& ports);
188 QHash<FirmwareIdentifier, QString>* _firmwareHashForBoardId(
int boardId);
190 void _downloadFirmware (
void);
191 void _appendStatusLog (
const QString& text,
bool critical =
false);
192 void _errorCancel (
const QString& msg);
193 void _determinePX4StableVersion (
void);
194 void _downloadArduPilotManifest (
void);
196 QString _singleFirmwareURL;
197 bool _singleFirmwareMode;
198 bool _downloadingFirmwareList;
200 QString _portDescription;
203 QHash<FirmwareIdentifier, QString> _rgSiKRadioFirmware;
206 QHash<FirmwareIdentifier, QString> _rgAPMChibiosReplaceNamedBoardFirmware;
207 QHash<FirmwareIdentifier, QString> _rgFirmwareDynamic;
209 QMap<FirmwareBuildType_t, QMap<FirmwareVehicleType_t, QString> > _apmVersionMap;
210 QList<FirmwareVehicleType_t> _apmVehicleTypeFromCurrentVersionList;
213 bool _bootloaderFound;
214 uint32_t _bootloaderVersion;
215 uint32_t _bootloaderBoardID;
216 uint32_t _bootloaderBoardFlashSize;
218 bool _startFlashWhenBootloaderFound;
223 QString _firmwareFilename;
228 static const int _eraseTickMsec = 500;
229 static const int _eraseTotalMsec = 15000;
233 static const int _findBoardTimeoutMsec = 30000;
234 static const int _findBootloaderTimeoutMsec = 5000;
236 QQuickItem* _statusLog;
237 QQuickItem* _progressBar;
239 bool _searchingForBoard;
243 QString _boardTypeName;
249 QString _px4StableVersion;
250 QString _px4BetaVersion;
252 const QString _apmBoardDescriptionReplaceText;
254 static constexpr const char* _manifestFirmwareJsonKey =
"firmware";
255 static constexpr const char* _manifestBoardIdJsonKey =
"board_id";
256 static constexpr const char* _manifestMavTypeJsonKey =
"mav-type";
257 static constexpr const char* _manifestFormatJsonKey =
"format";
258 static constexpr const char* _manifestUrlJsonKey =
"url";
259 static constexpr const char* _manifestMavFirmwareVersionTypeJsonKey =
"mav-firmware-version-type";
260 static constexpr const char* _manifestUSBIDJsonKey =
"USBID";
261 static constexpr const char* _manifestMavFirmwareVersionJsonKey =
"mav-firmware-version";
262 static constexpr const char* _manifestBootloaderStrJsonKey =
"bootloader_str";
263 static constexpr const char* _manifestLatestKey =
"latest";
264 static constexpr const char* _manifestPlatformKey =
"platform";
265 static constexpr const char* _manifestBrandNameKey =
"brand_name";
273 QStringList rgBootloaderPortString;
276 QString friendlyName;
279 } ManifestFirmwareInfo_t;
282 QList<ManifestFirmwareInfo_t> _rgManifestFirmwareInfo;
283 QMap<QString, FirmwareBuildType_t> _manifestMavFirmwareVersionTypeToFirmwareBuildTypeMap;
284 QMap<QString, FirmwareVehicleType_t> _manifestMavTypeToFirmwareVehicleTypeMap;
285 QStringList _apmFirmwareNames;
286 int _apmFirmwareNamesBestIndex = 0;
287 QStringList _apmFirmwareUrls;
288 Fact* _apmChibiOSSetting;
289 Fact* _apmVehicleTypeSetting;
290 QVariantList _availablePorts;
291 QPointer<QGCFileDownload> _activeDownloader;
292 bool _flashCancelled =
false;
294 FirmwareBuildType_t _manifestMavFirmwareVersionTypeToFirmwareBuildType (
const QString& manifestMavFirmwareVersionType);