Browse Source

Comp Info support for http downloads

QGC4.4
DonLakeFlyer 5 years ago
parent
commit
52e3ff14e4
  1. 44
      src/Vehicle/ComponentInformationManager.cc
  2. 8
      src/Vehicle/ComponentInformationManager.h
  3. 8
      src/comm/MockLink.cc

44
src/Vehicle/ComponentInformationManager.cc

@ -14,6 +14,7 @@ @@ -14,6 +14,7 @@
#include "JsonHelper.h"
#include "CompInfoVersion.h"
#include "CompInfoParam.h"
#include "QGCFileDownload.h"
#include <QStandardPaths>
#include <QJsonDocument>
@ -208,7 +209,7 @@ QString RequestMetaDataTypeStateMachine::_downloadCompleteJsonWorker(const QStri @@ -208,7 +209,7 @@ QString RequestMetaDataTypeStateMachine::_downloadCompleteJsonWorker(const QStri
return outputFileName;
}
void RequestMetaDataTypeStateMachine::_downloadCompleteMetaDataJson(const QString& fileName, const QString& errorMsg)
void RequestMetaDataTypeStateMachine::_ftpDownloadCompleteMetaDataJson(const QString& fileName, const QString& errorMsg)
{
qCDebug(ComponentInformationManagerLog) << "RequestMetaDataTypeStateMachine::_downloadCompleteMetaDataJson fileName:errorMsg" << fileName << errorMsg;
@ -219,7 +220,7 @@ void RequestMetaDataTypeStateMachine::_downloadCompleteMetaDataJson(const QStrin @@ -219,7 +220,7 @@ void RequestMetaDataTypeStateMachine::_downloadCompleteMetaDataJson(const QStrin
advance();
}
void RequestMetaDataTypeStateMachine::_downloadCompleteTranslationJson(const QString& fileName, const QString& errorMsg)
void RequestMetaDataTypeStateMachine::_ftpDownloadCompleteTranslationJson(const QString& fileName, const QString& errorMsg)
{
qCDebug(ComponentInformationManagerLog) << "RequestMetaDataTypeStateMachine::_downloadCompleteTranslationJson fileName:errorMsg" << fileName << errorMsg;
@ -233,6 +234,31 @@ void RequestMetaDataTypeStateMachine::_downloadCompleteTranslationJson(const QSt @@ -233,6 +234,31 @@ void RequestMetaDataTypeStateMachine::_downloadCompleteTranslationJson(const QSt
advance();
}
void RequestMetaDataTypeStateMachine::_httpDownloadCompleteMetaDataJson(QString remoteFile, QString localFile, QString errorMsg)
{
qCDebug(ComponentInformationManagerLog) << "RequestMetaDataTypeStateMachine::_httpDownloadCompleteMetaDataJson remoteFile:localFile:errorMsg" << remoteFile << localFile << errorMsg;
if (errorMsg.isEmpty()) {
_jsonMetadataFileName = _downloadCompleteJsonWorker(localFile, "metadata.json");
}
advance();
}
void RequestMetaDataTypeStateMachine::_httpDownloadCompleteTranslationJson(QString remoteFile, QString localFile, QString errorMsg)
{
qCDebug(ComponentInformationManagerLog) << "RequestMetaDataTypeStateMachine::_httpDownloadCompleteTranslationJson remoteFile:localFile:errorMsg" << remoteFile << localFile << errorMsg;
QString jsonTranslationFileName;
if (errorMsg.isEmpty()) {
jsonTranslationFileName = _downloadCompleteJsonWorker(localFile, "translation.json");
}
_compInfo->setJson(_jsonMetadataFileName, jsonTranslationFileName);
advance();
}
void RequestMetaDataTypeStateMachine::_stateRequestMetaDataJson(StateMachine* stateMachine)
{
RequestMetaDataTypeStateMachine* requestMachine = static_cast<RequestMetaDataTypeStateMachine*>(stateMachine);
@ -242,11 +268,12 @@ void RequestMetaDataTypeStateMachine::_stateRequestMetaDataJson(StateMachine* st @@ -242,11 +268,12 @@ void RequestMetaDataTypeStateMachine::_stateRequestMetaDataJson(StateMachine* st
if (compInfo->available) {
qCDebug(ComponentInformationManagerLog) << "Downloading metadata json" << compInfo->uriMetaData;
if (_uriIsFTP(compInfo->uriMetaData)) {
connect(ftpManager, &FTPManager::downloadComplete, requestMachine, &RequestMetaDataTypeStateMachine::_downloadCompleteMetaDataJson);
connect(ftpManager, &FTPManager::downloadComplete, requestMachine, &RequestMetaDataTypeStateMachine::_ftpDownloadCompleteMetaDataJson);
ftpManager->download(compInfo->uriMetaData, QStandardPaths::writableLocation(QStandardPaths::TempLocation));
} else {
// FIXME: NYI
qCDebug(ComponentInformationManagerLog) << "Skipping metadata json download. http download NYI";
QGCFileDownload* download = new QGCFileDownload(requestMachine);
connect(download, &QGCFileDownload::downloadComplete, requestMachine, &RequestMetaDataTypeStateMachine::_httpDownloadCompleteMetaDataJson);
download->download(compInfo->uriMetaData);
}
} else {
qCDebug(ComponentInformationManagerLog) << "Skipping metadata json download. Component information not available";
@ -267,11 +294,12 @@ void RequestMetaDataTypeStateMachine::_stateRequestTranslationJson(StateMachine* @@ -267,11 +294,12 @@ void RequestMetaDataTypeStateMachine::_stateRequestTranslationJson(StateMachine*
} else {
qCDebug(ComponentInformationManagerLog) << "Downloading translation json" << compInfo->uriTranslation;
if (_uriIsFTP(compInfo->uriTranslation)) {
connect(ftpManager, &FTPManager::downloadComplete, requestMachine, &RequestMetaDataTypeStateMachine::_downloadCompleteTranslationJson);
connect(ftpManager, &FTPManager::downloadComplete, requestMachine, &RequestMetaDataTypeStateMachine::_ftpDownloadCompleteTranslationJson);
ftpManager->download(compInfo->uriTranslation, QStandardPaths::writableLocation(QStandardPaths::TempLocation));
} else {
// FIXME: NYI
qCDebug(ComponentInformationManagerLog) << "Skipping translation json download. http download NYI";
QGCFileDownload* download = new QGCFileDownload(requestMachine);
connect(download, &QGCFileDownload::downloadComplete, requestMachine, &RequestMetaDataTypeStateMachine::_httpDownloadCompleteTranslationJson);
download->download(compInfo->uriTranslation);
}
}
} else {

8
src/Vehicle/ComponentInformationManager.h

@ -38,9 +38,11 @@ public: @@ -38,9 +38,11 @@ public:
void statesCompleted (void) const final;
private slots:
void _downloadCompleteMetaDataJson (const QString& file, const QString& errorMsg);
void _downloadCompleteTranslationJson(const QString& file, const QString& errorMsg);
QString _downloadCompleteJsonWorker (const QString& jsonFileName, const QString& inflatedFileName);
void _ftpDownloadCompleteMetaDataJson (const QString& file, const QString& errorMsg);
void _ftpDownloadCompleteTranslationJson (const QString& file, const QString& errorMsg);
void _httpDownloadCompleteMetaDataJson (QString remoteFile, QString localFile, QString errorMsg);
void _httpDownloadCompleteTranslationJson(QString remoteFile, QString localFile, QString errorMsg);
QString _downloadCompleteJsonWorker (const QString& jsonFileName, const QString& inflatedFileName);
private:
static void _stateRequestCompInfo (StateMachine* stateMachine);

8
src/comm/MockLink.cc

@ -1529,7 +1529,11 @@ bool MockLink::_handleRequestMessage(const mavlink_command_long_t& request, bool @@ -1529,7 +1529,11 @@ bool MockLink::_handleRequestMessage(const mavlink_command_long_t& request, bool
void MockLink::_sendVersionMetaData(void)
{
mavlink_message_t responseMsg;
#if 1
char metaDataURI[MAVLINK_MSG_COMPONENT_INFORMATION_FIELD_METADATA_URI_LEN] = "mavlinkftp://version.json.gz";
#else
char metaDataURI[MAVLINK_MSG_COMPONENT_INFORMATION_FIELD_METADATA_URI_LEN] = "https://bit.ly/31nm0fs";
#endif
char translationURI[MAVLINK_MSG_COMPONENT_INFORMATION_FIELD_TRANSLATION_URI_LEN] = "";
mavlink_msg_component_information_pack_chan(_vehicleSystemId,
@ -1548,7 +1552,11 @@ void MockLink::_sendVersionMetaData(void) @@ -1548,7 +1552,11 @@ void MockLink::_sendVersionMetaData(void)
void MockLink::_sendParameterMetaData(void)
{
mavlink_message_t responseMsg;
#if 1
char metaDataURI[MAVLINK_MSG_COMPONENT_INFORMATION_FIELD_METADATA_URI_LEN] = "mavlinkftp://parameter.json";
#else
char metaDataURI[MAVLINK_MSG_COMPONENT_INFORMATION_FIELD_METADATA_URI_LEN] = "https://bit.ly/2ZKRIRE";
#endif
char translationURI[MAVLINK_MSG_COMPONENT_INFORMATION_FIELD_TRANSLATION_URI_LEN] = "";
mavlink_msg_component_information_pack_chan(_vehicleSystemId,

Loading…
Cancel
Save