mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-18 08:54:15 +01:00
OP-1777 Added handling of network issues.
Changed local time to timezone. Re-factored some functions.
This commit is contained in:
parent
14f2bb6ce9
commit
6a89427aa8
@ -29,13 +29,13 @@
|
||||
#include <QStringList>
|
||||
#include <QtNetwork/QNetworkAccessManager>
|
||||
#include <QtNetwork/QNetworkRequest>
|
||||
#include <QtNetwork/QNetworkReply>
|
||||
#include <extensionsystem/pluginmanager.h>
|
||||
#include <QCheckBox>
|
||||
#include <QDebug>
|
||||
#include <QMessageBox>
|
||||
#include <uavobjectutil/devicedescriptorstruct.h>
|
||||
#include <uavobjectutil/uavobjectutilmanager.h>
|
||||
#include <coreplugin/generalsettings.h>
|
||||
#include "version_info/version_info.h"
|
||||
#include "coreplugin/icore.h"
|
||||
#include <uavtalk/telemetrymanager.h>
|
||||
@ -72,8 +72,7 @@ void UsageTrackerPlugin::shutdown()
|
||||
|
||||
void UsageTrackerPlugin::onAutopilotConnect()
|
||||
{
|
||||
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
||||
Core::Internal::GeneralSettings *settings = pm->getObject<Core::Internal::GeneralSettings>();
|
||||
Core::Internal::GeneralSettings *settings = getGeneralSettings();
|
||||
|
||||
if (settings->collectUsageData()) {
|
||||
if (settings->showUsageDataDisclaimer()) {
|
||||
@ -139,14 +138,12 @@ void UsageTrackerPlugin::trackUsage()
|
||||
if (shouldSend(hash)) {
|
||||
query.addQueryItem("hash", hash);
|
||||
|
||||
// Add local timestamp
|
||||
query.addQueryItem("localtime", QDateTime::currentDateTime().toString(Qt::ISODate));
|
||||
|
||||
QUrl url("https://www.openpilot.org/opver?" + query.toString(QUrl::FullyEncoded));
|
||||
|
||||
QNetworkAccessManager *networkAccessManager = new QNetworkAccessManager();
|
||||
|
||||
// This will delete the network access manager instance when we're done
|
||||
connect(networkAccessManager, SIGNAL(finished(QNetworkReply *)), this, SLOT(onFinished(QNetworkReply *)));
|
||||
connect(networkAccessManager, SIGNAL(finished(QNetworkReply *)), networkAccessManager, SLOT(deleteLater()));
|
||||
|
||||
qDebug() << "Sending usage tracking as:" << url.toEncoded(QUrl::FullyEncoded);
|
||||
@ -171,6 +168,7 @@ void UsageTrackerPlugin::collectUsageParameters(QMap<QString, QString> ¶mete
|
||||
parameters["fw_hash"] = devDesc.gitHash;
|
||||
parameters["os_version"] = QSysInfo::prettyProductName() + " " + QSysInfo::currentCpuArchitecture();
|
||||
parameters["os_threads"] = QString::number(QThread::idealThreadCount());
|
||||
parameters["os_timezone"] = QTimeZone::systemTimeZoneId();
|
||||
parameters["gcs_version"] = VersionInfo::revision();
|
||||
|
||||
// Configuration parameters
|
||||
@ -203,6 +201,16 @@ void UsageTrackerPlugin::collectUsageParameters(QMap<QString, QString> ¶mete
|
||||
}
|
||||
}
|
||||
|
||||
void UsageTrackerPlugin::onFinished(QNetworkReply *reply)
|
||||
{
|
||||
if (reply->error() == QNetworkReply::NoError) {
|
||||
getGeneralSettings()->setLastUsageHash(m_lastHash);
|
||||
qDebug() << "Updated last usage hash to:" << m_lastHash;
|
||||
} else {
|
||||
qDebug() << "Usage tracking failed with:" << reply->errorString();
|
||||
}
|
||||
}
|
||||
|
||||
QString UsageTrackerPlugin::getUAVFieldValue(UAVObjectManager *objManager, QString objectName, QString fieldName, int index) const
|
||||
{
|
||||
UAVObject *object = objManager->getObject(objectName);
|
||||
@ -222,15 +230,19 @@ QString UsageTrackerPlugin::getQueryHash(QString source) const
|
||||
return QString(QCryptographicHash::hash(QByteArray(source.toStdString().c_str()), QCryptographicHash::Md5).toHex());
|
||||
}
|
||||
|
||||
bool UsageTrackerPlugin::shouldSend(const QString &hash)
|
||||
Core::Internal::GeneralSettings * UsageTrackerPlugin::getGeneralSettings() const
|
||||
{
|
||||
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
||||
Core::Internal::GeneralSettings *settings = pm->getObject<Core::Internal::GeneralSettings>();
|
||||
return settings;
|
||||
}
|
||||
|
||||
if (settings->lastUsageHash() == hash) {
|
||||
bool UsageTrackerPlugin::shouldSend(const QString &hash)
|
||||
{
|
||||
if (getGeneralSettings()->lastUsageHash() == hash) {
|
||||
return false;
|
||||
} else {
|
||||
settings->setLastUsageHash(hash);
|
||||
m_lastHash = hash;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -28,9 +28,11 @@
|
||||
#define USAGETRACKERPLUGIN_H
|
||||
|
||||
#include <extensionsystem/iplugin.h>
|
||||
#include <coreplugin/generalsettings.h>
|
||||
|
||||
class TelemetryManager;
|
||||
class UAVObjectManager;
|
||||
class QNetworkReply;
|
||||
|
||||
class UsageTrackerPlugin : public ExtensionSystem::IPlugin {
|
||||
Q_OBJECT
|
||||
@ -47,11 +49,14 @@ private slots:
|
||||
void onAutopilotConnect();
|
||||
void trackUsage();
|
||||
void collectUsageParameters(QMap<QString, QString> ¶meters);
|
||||
void onFinished(QNetworkReply *reply);
|
||||
|
||||
private:
|
||||
TelemetryManager *m_telemetryManager;
|
||||
QString m_lastHash;
|
||||
QString getUAVFieldValue(UAVObjectManager *objManager, QString objectName, QString fieldName, int index = 0) const;
|
||||
QString getQueryHash(QString source) const;
|
||||
Core::Internal::GeneralSettings * getGeneralSettings() const;
|
||||
bool shouldSend(const QString &hash);
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user