Commit 8140aae0 authored by DonLakeFlyer's avatar DonLakeFlyer

parent 22a75d33
...@@ -219,15 +219,13 @@ void APMAirframeComponentController::loadParameters(const QString& paramFile) ...@@ -219,15 +219,13 @@ void APMAirframeComponentController::loadParameters(const QString& paramFile)
QString paramFileUrl = QStringLiteral("https://api.github.com/repos/ArduPilot/ardupilot/contents/Tools/Frame_params/%1?ref=master"); QString paramFileUrl = QStringLiteral("https://api.github.com/repos/ArduPilot/ardupilot/contents/Tools/Frame_params/%1?ref=master");
QGCFileDownload* downloader = new QGCFileDownload(this); QGCFileDownload* downloader = new QGCFileDownload(this);
connect(downloader, &QGCFileDownload::downloadFinished, this, &APMAirframeComponentController::_githubJsonDownloadFinished); connect(downloader, &QGCFileDownload::downloadComplete, this, &APMAirframeComponentController::_githubJsonDownloadComplete);
connect(downloader, &QGCFileDownload::error, this, &APMAirframeComponentController::_githubJsonDownloadError);
downloader->download(paramFileUrl.arg(paramFile)); downloader->download(paramFileUrl.arg(paramFile));
} }
void APMAirframeComponentController::_githubJsonDownloadFinished(QString remoteFile, QString localFile) void APMAirframeComponentController::_githubJsonDownloadComplete(QString /*remoteFile*/, QString localFile, QString errorMsg)
{ {
Q_UNUSED(remoteFile); if (errorMsg.isEmpty()) {
QFile jsonFile(localFile); QFile jsonFile(localFile);
if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) { if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
qWarning() << "Unable to open github json file" << localFile << jsonFile.errorString(); qWarning() << "Unable to open github json file" << localFile << jsonFile.errorString();
...@@ -247,28 +245,22 @@ void APMAirframeComponentController::_githubJsonDownloadFinished(QString remoteF ...@@ -247,28 +245,22 @@ void APMAirframeComponentController::_githubJsonDownloadFinished(QString remoteF
QJsonObject json = doc.object(); QJsonObject json = doc.object();
QGCFileDownload* downloader = new QGCFileDownload(this); QGCFileDownload* downloader = new QGCFileDownload(this);
connect(downloader, &QGCFileDownload::downloadFinished, this, &APMAirframeComponentController::_paramFileDownloadFinished); connect(downloader, &QGCFileDownload::downloadComplete, this, &APMAirframeComponentController::_paramFileDownloadComplete);
connect(downloader, &QGCFileDownload::error, this, &APMAirframeComponentController::_paramFileDownloadError);
downloader->download(json[QLatin1Literal("download_url")].toString()); downloader->download(json[QLatin1Literal("download_url")].toString());
} } else {
void APMAirframeComponentController::_githubJsonDownloadError(QString errorMsg)
{
qgcApp()->showAppMessage(tr("Param file github json download failed: %1").arg(errorMsg)); qgcApp()->showAppMessage(tr("Param file github json download failed: %1").arg(errorMsg));
qgcApp()->restoreOverrideCursor(); qgcApp()->restoreOverrideCursor();
}
} }
void APMAirframeComponentController::_paramFileDownloadFinished(QString remoteFile, QString localFile) void APMAirframeComponentController::_paramFileDownloadComplete(QString /*remoteFile*/, QString localFile, QString errorMsg)
{ {
Q_UNUSED(remoteFile); if (errorMsg.isEmpty()) {
_loadParametersFromDownloadFile(localFile); _loadParametersFromDownloadFile(localFile);
} } else {
void APMAirframeComponentController::_paramFileDownloadError(QString errorMsg)
{
qgcApp()->showAppMessage(tr("Param file download failed: %1").arg(errorMsg)); qgcApp()->showAppMessage(tr("Param file download failed: %1").arg(errorMsg));
qgcApp()->restoreOverrideCursor(); qgcApp()->restoreOverrideCursor();
}
} }
APMFrameClass::APMFrameClass(const QString& name, bool copter, int frameClass, Fact* frameTypeFact, QObject* parent) APMFrameClass::APMFrameClass(const QString& name, bool copter, int frameClass, Fact* frameTypeFact, QObject* parent)
......
...@@ -35,10 +35,8 @@ public: ...@@ -35,10 +35,8 @@ public:
Q_INVOKABLE void loadParameters(const QString& paramFile); Q_INVOKABLE void loadParameters(const QString& paramFile);
private slots: private slots:
void _githubJsonDownloadFinished(QString remoteFile, QString localFile); void _githubJsonDownloadComplete(QString remoteFile, QString localFile, QString errorMsg);
void _githubJsonDownloadError(QString errorMsg); void _paramFileDownloadComplete(QString remoteFile, QString localFile, QString errorMsg);
void _paramFileDownloadFinished(QString remoteFile, QString localFile);
void _paramFileDownloadError(QString errorMsg);
private: private:
void _fillFrameClasses(void); void _fillFrameClasses(void);
......
...@@ -831,19 +831,15 @@ void FirmwarePlugin::checkIfIsLatestStable(Vehicle* vehicle) ...@@ -831,19 +831,15 @@ void FirmwarePlugin::checkIfIsLatestStable(Vehicle* vehicle)
QGCFileDownload* downloader = new QGCFileDownload(this); QGCFileDownload* downloader = new QGCFileDownload(this);
connect( connect(
downloader, downloader,
&QGCFileDownload::downloadFinished, &QGCFileDownload::downloadComplete,
this, this,
[vehicle, this](QString remoteFile, QString localFile) { [vehicle, this](QString remoteFile, QString localFile, QString errorMsg) {
if (errorMsg.isEmpty()) {
_versionFileDownloadFinished(remoteFile, localFile, vehicle); _versionFileDownloadFinished(remoteFile, localFile, vehicle);
sender()->deleteLater(); } else {
});
connect(
downloader,
&QGCFileDownload::error,
this,
[=](QString errorMsg) {
qCDebug(FirmwarePluginLog) << "Failed to download the latest fw version file. Error: " << errorMsg; qCDebug(FirmwarePluginLog) << "Failed to download the latest fw version file. Error: " << errorMsg;
downloader->deleteLater(); }
sender()->deleteLater();
}); });
downloader->download(versionFile); downloader->download(versionFile);
} }
......
...@@ -866,21 +866,22 @@ void QGCApplication::_checkForNewVersion() ...@@ -866,21 +866,22 @@ void QGCApplication::_checkForNewVersion()
if (_parseVersionText(applicationVersion(), _majorVersion, _minorVersion, _buildVersion)) { if (_parseVersionText(applicationVersion(), _majorVersion, _minorVersion, _buildVersion)) {
QString versionCheckFile = toolbox()->corePlugin()->stableVersionCheckFileUrl(); QString versionCheckFile = toolbox()->corePlugin()->stableVersionCheckFileUrl();
if (!versionCheckFile.isEmpty()) { if (!versionCheckFile.isEmpty()) {
_currentVersionDownload = new QGCFileDownload(this); QGCFileDownload* download = new QGCFileDownload(this);
connect(_currentVersionDownload, &QGCFileDownload::downloadFinished, this, &QGCApplication::_currentVersionDownloadFinished); connect(download, &QGCFileDownload::downloadComplete, this, &QGCApplication::_qgcCurrentStableVersionDownloadComplete);
connect(_currentVersionDownload, &QGCFileDownload::error, this, &QGCApplication::_currentVersionDownloadError); download->download(versionCheckFile);
_currentVersionDownload->download(versionCheckFile);
} }
} }
} }
#endif #endif
} }
void QGCApplication::_currentVersionDownloadFinished(QString /*remoteFile*/, QString localFile) void QGCApplication::_qgcCurrentStableVersionDownloadComplete(QString /*remoteFile*/, QString localFile, QString errorMsg)
{ {
#ifdef __mobile__ #ifdef __mobile__
Q_UNUSED(localFile); Q_UNUSED(localFile)
Q_UNUSED(errorMsg)
#else #else
if (errorMsg.isEmpty()) {
QFile versionFile(localFile); QFile versionFile(localFile);
if (versionFile.open(QIODevice::ReadOnly)) { if (versionFile.open(QIODevice::ReadOnly)) {
QTextStream textStream(&versionFile); QTextStream textStream(&versionFile);
...@@ -893,21 +894,18 @@ void QGCApplication::_currentVersionDownloadFinished(QString /*remoteFile*/, QSt ...@@ -893,21 +894,18 @@ void QGCApplication::_currentVersionDownloadFinished(QString /*remoteFile*/, QSt
if (_majorVersion < majorVersion || if (_majorVersion < majorVersion ||
(_majorVersion == majorVersion && _minorVersion < minorVersion) || (_majorVersion == majorVersion && _minorVersion < minorVersion) ||
(_majorVersion == majorVersion && _minorVersion == minorVersion && _buildVersion < buildVersion)) { (_majorVersion == majorVersion && _minorVersion == minorVersion && _buildVersion < buildVersion)) {
//-- TODO showAppMessage(tr("There is a newer version of %1 available. You can download it from %2.").arg(applicationName()).arg(toolbox()->corePlugin()->stableDownloadLocation()), tr("New Version Available"));
///QGCMessageBox::information(tr("New Version Available"), tr("There is a newer version of %1 available. You can download it from %2.").arg(applicationName()).arg(toolbox()->corePlugin()->stableDownloadLocation()));
} }
} }
} }
} else {
qDebug() << "Download QGC stable version failed" << errorMsg;
}
_currentVersionDownload->deleteLater(); sender()->deleteLater();
#endif #endif
} }
void QGCApplication::_currentVersionDownloadError(QString /*errorMsg*/)
{
_currentVersionDownload->deleteLater();
}
bool QGCApplication::_parseVersionText(const QString& versionString, int& majorVersion, int& minorVersion, int& buildVersion) bool QGCApplication::_parseVersionText(const QString& versionString, int& majorVersion, int& minorVersion, int& buildVersion)
{ {
QRegularExpression regExp("v(\\d+)\\.(\\d+)\\.(\\d+)"); QRegularExpression regExp("v(\\d+)\\.(\\d+)\\.(\\d+)");
......
...@@ -41,7 +41,6 @@ ...@@ -41,7 +41,6 @@
class QQmlApplicationEngine; class QQmlApplicationEngine;
class QGCSingleton; class QGCSingleton;
class QGCToolbox; class QGCToolbox;
class QGCFileDownload;
/** /**
* @brief The main application and management class. * @brief The main application and management class.
...@@ -167,8 +166,7 @@ public: ...@@ -167,8 +166,7 @@ public:
private slots: private slots:
void _missingParamsDisplay (void); void _missingParamsDisplay (void);
void _currentVersionDownloadFinished(QString remoteFile, QString localFile); void _qgcCurrentStableVersionDownloadComplete (QString remoteFile, QString localFile, QString errorMsg);
void _currentVersionDownloadError (QString errorMsg);
bool _parseVersionText (const QString& versionString, int& majorVersion, int& minorVersion, int& buildVersion); bool _parseVersionText (const QString& versionString, int& majorVersion, int& minorVersion, int& buildVersion);
void _onGPSConnect (void); void _onGPSConnect (void);
void _onGPSDisconnect (void); void _onGPSDisconnect (void);
...@@ -194,7 +192,6 @@ private: ...@@ -194,7 +192,6 @@ private:
int _majorVersion = 0; int _majorVersion = 0;
int _minorVersion = 0; int _minorVersion = 0;
int _buildVersion = 0; int _buildVersion = 0;
QGCFileDownload* _currentVersionDownload = nullptr;
GPSRTKFactGroup* _gpsRtkFactGroup = nullptr; GPSRTKFactGroup* _gpsRtkFactGroup = nullptr;
QGCToolbox* _toolbox = nullptr; QGCToolbox* _toolbox = nullptr;
QQuickItem* _mainRootWindow = nullptr; QQuickItem* _mainRootWindow = nullptr;
......
...@@ -31,29 +31,6 @@ bool QGCFileDownload::download(const QString& remoteFile, bool redirect) ...@@ -31,29 +31,6 @@ bool QGCFileDownload::download(const QString& remoteFile, bool redirect)
return false; return false;
} }
// Split out filename from path
QString remoteFileName = QFileInfo(remoteFile).fileName();
if (remoteFileName.isEmpty()) {
qWarning() << "Unabled to parse filename from downloadFile" << remoteFile;
return false;
}
// Strip out parameters from remote filename
int parameterIndex = remoteFileName.indexOf("?");
if (parameterIndex != -1) {
remoteFileName = remoteFileName.left(parameterIndex);
}
// Determine location to download file to
QString localFile = QStandardPaths::writableLocation(QStandardPaths::TempLocation);
if (localFile.isEmpty()) {
localFile = QStandardPaths::writableLocation(QStandardPaths::DownloadLocation);
if (localFile.isEmpty()) {
qDebug() << "Unabled to find writable download location. Tried downloads and temp directory.";
return false;
}
}
localFile += "/" + remoteFileName;
QUrl remoteUrl; QUrl remoteUrl;
if (remoteFile.startsWith("http:") || remoteFile.startsWith("https:")) { if (remoteFile.startsWith("http:") || remoteFile.startsWith("https:")) {
...@@ -72,9 +49,6 @@ bool QGCFileDownload::download(const QString& remoteFile, bool redirect) ...@@ -72,9 +49,6 @@ bool QGCFileDownload::download(const QString& remoteFile, bool redirect)
tProxy.setType(QNetworkProxy::DefaultProxy); tProxy.setType(QNetworkProxy::DefaultProxy);
setProxy(tProxy); setProxy(tProxy);
// Store local file location in user attribute so we can retrieve when the download finishes
networkRequest.setAttribute(QNetworkRequest::User, localFile);
QNetworkReply* networkReply = get(networkRequest); QNetworkReply* networkReply = get(networkRequest);
if (!networkReply) { if (!networkReply) {
qWarning() << "QNetworkAccessManager::get failed"; qWarning() << "QNetworkAccessManager::get failed";
...@@ -84,8 +58,7 @@ bool QGCFileDownload::download(const QString& remoteFile, bool redirect) ...@@ -84,8 +58,7 @@ bool QGCFileDownload::download(const QString& remoteFile, bool redirect)
connect(networkReply, &QNetworkReply::downloadProgress, this, &QGCFileDownload::downloadProgress); connect(networkReply, &QNetworkReply::downloadProgress, this, &QGCFileDownload::downloadProgress);
connect(networkReply, &QNetworkReply::finished, this, &QGCFileDownload::_downloadFinished); connect(networkReply, &QNetworkReply::finished, this, &QGCFileDownload::_downloadFinished);
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) #if QT_VERSION < QT_VERSION_CHECK(5, 15, 0)
connect(networkReply, static_cast<void (QNetworkReply::*)(QNetworkReply::NetworkError)>(&QNetworkReply::error), connect(networkReply, static_cast<void (QNetworkReply::*)(QNetworkReply::NetworkError)>(&QNetworkReply::error), this, &QGCFileDownload::_downloadError);
this, &QGCFileDownload::_downloadError);
#else #else
connect(networkReply, &QNetworkReply::errorOccurred, this, &QGCFileDownload::_downloadError); connect(networkReply, &QNetworkReply::errorOccurred, this, &QGCFileDownload::_downloadError);
#endif #endif
...@@ -112,25 +85,46 @@ void QGCFileDownload::_downloadFinished(void) ...@@ -112,25 +85,46 @@ void QGCFileDownload::_downloadFinished(void)
return; return;
} }
// Download file location is in user attribute // Split out filename from path
QString downloadFilename = reply->request().attribute(QNetworkRequest::User).toString(); QString remoteFileName = QFileInfo(reply->url().toString()).fileName();
if (remoteFileName.isEmpty()) {
qWarning() << "Unabled to parse filename from remote url" << reply->url().toString();
remoteFileName = "DownloadedFile";
}
// Strip out http parameters from remote filename
int parameterIndex = remoteFileName.indexOf("?");
if (parameterIndex != -1) {
remoteFileName = remoteFileName.left(parameterIndex);
}
// Determine location to download file to
QString downloadFilename = QStandardPaths::writableLocation(QStandardPaths::TempLocation);
if (downloadFilename.isEmpty()) {
downloadFilename = QStandardPaths::writableLocation(QStandardPaths::DownloadLocation);
if (downloadFilename.isEmpty()) {
emit downloadComplete(_originalRemoteFile, QString(), tr("Unabled to find writable download location. Tried downloads and temp directory."));
return;
}
}
downloadFilename += "/" + remoteFileName;
if (!downloadFilename.isEmpty()) { if (!downloadFilename.isEmpty()) {
// Store downloaded file in download location // Store downloaded file in download location
QFile file(downloadFilename); QFile file(downloadFilename);
if (!file.open(QIODevice::WriteOnly)) { if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
emit error(tr("Could not save downloaded file to %1. Error: %2").arg(downloadFilename).arg(file.errorString())); emit downloadComplete(_originalRemoteFile, downloadFilename, tr("Could not save downloaded file to %1. Error: %2").arg(downloadFilename).arg(file.errorString()));
return; return;
} }
file.write(reply->readAll()); file.write(reply->readAll());
file.close(); file.close();
emit downloadFinished(_originalRemoteFile, downloadFilename); emit downloadComplete(_originalRemoteFile, downloadFilename, QString());
} else { } else {
QString errorMsg = "Internal error"; QString errorMsg = "Internal error";
qWarning() << errorMsg; qWarning() << errorMsg;
emit error(errorMsg); emit downloadComplete(_originalRemoteFile, downloadFilename, errorMsg);
} }
reply->deleteLater(); reply->deleteLater();
...@@ -151,5 +145,5 @@ void QGCFileDownload::_downloadError(QNetworkReply::NetworkError code) ...@@ -151,5 +145,5 @@ void QGCFileDownload::_downloadError(QNetworkReply::NetworkError code)
errorMsg = tr("Error during download. Error: %1").arg(code); errorMsg = tr("Error during download. Error: %1").arg(code);
} }
emit error(errorMsg); emit downloadComplete(_originalRemoteFile, QString(), errorMsg);
} }
...@@ -7,9 +7,7 @@ ...@@ -7,9 +7,7 @@
* *
****************************************************************************/ ****************************************************************************/
#pragma once
#ifndef QGCFileDownload_H
#define QGCFileDownload_H
#include <QNetworkReply> #include <QNetworkReply>
...@@ -28,8 +26,7 @@ public: ...@@ -28,8 +26,7 @@ public:
signals: signals:
void downloadProgress(qint64 curr, qint64 total); void downloadProgress(qint64 curr, qint64 total);
void downloadFinished(QString remoteFile, QString localFile); void downloadComplete(QString remoteFile, QString localFile, QString errorMsg);
void error(QString errorMsg);
private: private:
void _downloadFinished(void); void _downloadFinished(void);
...@@ -37,5 +34,3 @@ private: ...@@ -37,5 +34,3 @@ private:
QString _originalRemoteFile; QString _originalRemoteFile;
}; };
#endif
...@@ -582,9 +582,8 @@ void FirmwareUpgradeController::_downloadFirmware(void) ...@@ -582,9 +582,8 @@ void FirmwareUpgradeController::_downloadFirmware(void)
_appendStatusLog(tr(" From: %1").arg(_firmwareFilename)); _appendStatusLog(tr(" From: %1").arg(_firmwareFilename));
QGCFileDownload* downloader = new QGCFileDownload(this); QGCFileDownload* downloader = new QGCFileDownload(this);
connect(downloader, &QGCFileDownload::downloadFinished, this, &FirmwareUpgradeController::_firmwareDownloadFinished); connect(downloader, &QGCFileDownload::downloadComplete, this, &FirmwareUpgradeController::_firmwareDownloadComplete);
connect(downloader, &QGCFileDownload::downloadProgress, this, &FirmwareUpgradeController::_firmwareDownloadProgress); connect(downloader, &QGCFileDownload::downloadProgress, this, &FirmwareUpgradeController::_firmwareDownloadProgress);
connect(downloader, &QGCFileDownload::error, this, &FirmwareUpgradeController::_firmwareDownloadError);
downloader->download(_firmwareFilename); downloader->download(_firmwareFilename);
} }
...@@ -598,10 +597,9 @@ void FirmwareUpgradeController::_firmwareDownloadProgress(qint64 curr, qint64 to ...@@ -598,10 +597,9 @@ void FirmwareUpgradeController::_firmwareDownloadProgress(qint64 curr, qint64 to
} }
/// @brief Called when the firmware download completes. /// @brief Called when the firmware download completes.
void FirmwareUpgradeController::_firmwareDownloadFinished(QString remoteFile, QString localFile) void FirmwareUpgradeController::_firmwareDownloadComplete(QString /*remoteFile*/, QString localFile, QString errorMsg)
{ {
Q_UNUSED(remoteFile); if (errorMsg.isEmpty()) {
_appendStatusLog(tr("Download complete")); _appendStatusLog(tr("Download complete"));
FirmwareImage* image = new FirmwareImage(this); FirmwareImage* image = new FirmwareImage(this);
...@@ -626,12 +624,9 @@ void FirmwareUpgradeController::_firmwareDownloadFinished(QString remoteFile, QS ...@@ -626,12 +624,9 @@ void FirmwareUpgradeController::_firmwareDownloadFinished(QString remoteFile, QS
} }
_threadController->flash(image); _threadController->flash(image);
} } else {
/// @brief Called when an error occurs during download
void FirmwareUpgradeController::_firmwareDownloadError(QString errorMsg)
{
_errorCancel(errorMsg); _errorCancel(errorMsg);
}
} }
/// @brief returns firmware type as a string /// @brief returns firmware type as a string
...@@ -809,15 +804,13 @@ FirmwareUpgradeController::FirmwareVehicleType_t FirmwareUpgradeController::vehi ...@@ -809,15 +804,13 @@ FirmwareUpgradeController::FirmwareVehicleType_t FirmwareUpgradeController::vehi
void FirmwareUpgradeController::_determinePX4StableVersion(void) void FirmwareUpgradeController::_determinePX4StableVersion(void)
{ {
QGCFileDownload* downloader = new QGCFileDownload(this); QGCFileDownload* downloader = new QGCFileDownload(this);
connect(downloader, &QGCFileDownload::downloadFinished, this, &FirmwareUpgradeController::_px4ReleasesGithubDownloadFinished); connect(downloader, &QGCFileDownload::downloadComplete, this, &FirmwareUpgradeController::_px4ReleasesGithubDownloadComplete);
connect(downloader, &QGCFileDownload::error, this, &FirmwareUpgradeController::_px4ReleasesGithubDownloadError);
downloader->download(QStringLiteral("https://api.github.com/repos/PX4/Firmware/releases")); downloader->download(QStringLiteral("https://api.github.com/repos/PX4/Firmware/releases"));
} }
void FirmwareUpgradeController::_px4ReleasesGithubDownloadFinished(QString remoteFile, QString localFile) void FirmwareUpgradeController::_px4ReleasesGithubDownloadComplete(QString /*remoteFile*/, QString localFile, QString errorMsg)
{ {
Q_UNUSED(remoteFile); if (errorMsg.isEmpty()) {
QFile jsonFile(localFile); QFile jsonFile(localFile);
if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) { if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
qCWarning(FirmwareUpgradeLog) << "Unable to open github px4 releases json file" << localFile << jsonFile.errorString(); qCWarning(FirmwareUpgradeLog) << "Unable to open github px4 releases json file" << localFile << jsonFile.errorString();
...@@ -865,11 +858,9 @@ void FirmwareUpgradeController::_px4ReleasesGithubDownloadFinished(QString remot ...@@ -865,11 +858,9 @@ void FirmwareUpgradeController::_px4ReleasesGithubDownloadFinished(QString remot
if (!foundBeta) { if (!foundBeta) {
qCDebug(FirmwareUpgradeLog()) << "Unable to find px4 beta version" << localFile; qCDebug(FirmwareUpgradeLog()) << "Unable to find px4 beta version" << localFile;
} }
} } else {
void FirmwareUpgradeController::_px4ReleasesGithubDownloadError(QString errorMsg)
{
qCWarning(FirmwareUpgradeLog) << "PX4 releases github download failed" << errorMsg; qCWarning(FirmwareUpgradeLog) << "PX4 releases github download failed" << errorMsg;
}
} }
void FirmwareUpgradeController::_downloadArduPilotManifest(void) void FirmwareUpgradeController::_downloadArduPilotManifest(void)
...@@ -878,15 +869,13 @@ void FirmwareUpgradeController::_downloadArduPilotManifest(void) ...@@ -878,15 +869,13 @@ void FirmwareUpgradeController::_downloadArduPilotManifest(void)
emit downloadingFirmwareListChanged(true); emit downloadingFirmwareListChanged(true);
QGCFileDownload* downloader = new QGCFileDownload(this); QGCFileDownload* downloader = new QGCFileDownload(this);
connect(downloader, &QGCFileDownload::downloadFinished, this, &FirmwareUpgradeController::_ardupilotManifestDownloadFinished); connect(downloader, &QGCFileDownload::downloadComplete, this, &FirmwareUpgradeController::_ardupilotManifestDownloadComplete);
connect(downloader, &QGCFileDownload::error, this, &FirmwareUpgradeController::_ardupilotManifestDownloadError);
downloader->download(QStringLiteral("http://firmware.ardupilot.org/manifest.json.gz")); downloader->download(QStringLiteral("http://firmware.ardupilot.org/manifest.json.gz"));
} }
void FirmwareUpgradeController::_ardupilotManifestDownloadFinished(QString remoteFile, QString localFile) void FirmwareUpgradeController::_ardupilotManifestDownloadComplete(QString remoteFile, QString localFile, QString errorMsg)
{ {
Q_UNUSED(remoteFile); if (errorMsg.isEmpty()) {
// Delete the QGCFileDownload object // Delete the QGCFileDownload object
sender()->deleteLater(); sender()->deleteLater();
...@@ -929,8 +918,7 @@ void FirmwareUpgradeController::_ardupilotManifestDownloadFinished(QString remot ...@@ -929,8 +918,7 @@ void FirmwareUpgradeController::_ardupilotManifestDownloadFinished(QString remot
firmwareInfo.vehicleType = firmwareVehicleType; firmwareInfo.vehicleType = firmwareVehicleType;
firmwareInfo.url = firmwareJson[_manifestUrlJsonKey].toString(); firmwareInfo.url = firmwareJson[_manifestUrlJsonKey].toString();
firmwareInfo.version = firmwareJson[_manifestMavFirmwareVersionJsonKey].toString(); firmwareInfo.version = firmwareJson[_manifestMavFirmwareVersionJsonKey].toString();
firmwareInfo.chibios = format == QStringLiteral("apj"); firmwareInfo.chibios = format == QStringLiteral("apj"); firmwareInfo.fmuv2 = platform.contains(QStringLiteral("fmuv2"));
firmwareInfo.fmuv2 = platform.contains(QStringLiteral("fmuv2"));
QJsonArray bootloaderArray = firmwareJson[_manifestBootloaderStrJsonKey].toArray(); QJsonArray bootloaderArray = firmwareJson[_manifestBootloaderStrJsonKey].toArray();
for (int j=0; j<bootloaderArray.count(); j++) { for (int j=0; j<bootloaderArray.count(); j++) {
...@@ -959,11 +947,9 @@ void FirmwareUpgradeController::_ardupilotManifestDownloadFinished(QString remot ...@@ -959,11 +947,9 @@ void FirmwareUpgradeController::_ardupilotManifestDownloadFinished(QString remot
_downloadingFirmwareList = false; _downloadingFirmwareList = false;
emit downloadingFirmwareListChanged(false); emit downloadingFirmwareListChanged(false);
} } else {
void FirmwareUpgradeController::_ardupilotManifestDownloadError(QString errorMsg)
{
qCWarning(FirmwareUpgradeLog) << "ArduPilot Manifest download failed" << errorMsg; qCWarning(FirmwareUpgradeLog) << "ArduPilot Manifest download failed" << errorMsg;
}
} }
FirmwareUpgradeController::FirmwareBuildType_t FirmwareUpgradeController::_manifestMavFirmwareVersionTypeToFirmwareBuildType(const QString& manifestMavFirmwareVersionType) FirmwareUpgradeController::FirmwareBuildType_t FirmwareUpgradeController::_manifestMavFirmwareVersionTypeToFirmwareBuildType(const QString& manifestMavFirmwareVersionType)
......
...@@ -169,30 +169,27 @@ signals: ...@@ -169,30 +169,27 @@ signals:
void downloadingFirmwareListChanged (bool downloadingFirmwareList); void downloadingFirmwareListChanged (bool downloadingFirmwareList);
private slots: private slots:
void _firmwareDownloadProgress(qint64 curr, qint64 total); void _firmwareDownloadProgress (qint64 curr, qint64 total);
void _firmwareDownloadFinished(QString remoteFile, QString localFile); void _firmwareDownloadComplete (QString remoteFile, QString localFile, QString errorMsg);
void _firmwareDownloadError(QString errorMsg); void _foundBoard (bool firstAttempt, const QSerialPortInfo& portInfo, int boardType, QString boardName);
void _foundBoard(bool firstAttempt, const QSerialPortInfo& portInfo, int boardType, QString boardName); void _noBoardFound (void);
void _noBoardFound(void); void _boardGone (void);
void _boardGone(); void _foundBoardInfo (int bootloaderVersion, int boardID, int flashSize);
void _foundBoardInfo(int bootloaderVersion, int boardID, int flashSize); void _error (const QString& errorString);
void _error(const QString& errorString); void _status (const QString& statusString);
void _status(const QString& statusString); void _bootloaderSyncFailed (void);
void _bootloaderSyncFailed(void); void _flashComplete (void);
void _flashComplete(void); void _updateProgress (int curr, int total);
void _updateProgress(int curr, int total); void _eraseStarted (void);
void _eraseStarted(void); void _eraseComplete (void);
void _eraseComplete(void); void _eraseProgressTick (void);
void _eraseProgressTick(void); void _px4ReleasesGithubDownloadComplete (QString remoteFile, QString localFile, QString errorMsg);
void _px4ReleasesGithubDownloadFinished(QString remoteFile, QString localFile); void _ardupilotManifestDownloadComplete (QString remoteFile, QString localFile, QString errorMsg);
void _px4ReleasesGithubDownloadError(QString errorMsg); void _buildAPMFirmwareNames (void);
void _ardupilotManifestDownloadFinished(QString remoteFile, QString localFile);
void _ardupilotManifestDownloadError(QString errorMsg);
void _buildAPMFirmwareNames(void);
private: private:
QHash<FirmwareIdentifier, QString>* _firmwareHashForBoardId(int boardId); QHash<FirmwareIdentifier, QString>* _firmwareHashForBoardId(int boardId);
void _getFirmwareFile(FirmwareIdentifier firmwareId); void _getFirmwareFile (FirmwareIdentifier firmwareId);
void _initFirmwareHash (void); void _initFirmwareHash (void);
void _downloadFirmware (void); void _downloadFirmware (void);
void _appendStatusLog (const QString& text, bool critical = false); void _appendStatusLog (const QString& text, bool critical = false);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment