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 <QStringList>
|
||||||
#include <QtNetwork/QNetworkAccessManager>
|
#include <QtNetwork/QNetworkAccessManager>
|
||||||
#include <QtNetwork/QNetworkRequest>
|
#include <QtNetwork/QNetworkRequest>
|
||||||
|
#include <QtNetwork/QNetworkReply>
|
||||||
#include <extensionsystem/pluginmanager.h>
|
#include <extensionsystem/pluginmanager.h>
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <uavobjectutil/devicedescriptorstruct.h>
|
#include <uavobjectutil/devicedescriptorstruct.h>
|
||||||
#include <uavobjectutil/uavobjectutilmanager.h>
|
#include <uavobjectutil/uavobjectutilmanager.h>
|
||||||
#include <coreplugin/generalsettings.h>
|
|
||||||
#include "version_info/version_info.h"
|
#include "version_info/version_info.h"
|
||||||
#include "coreplugin/icore.h"
|
#include "coreplugin/icore.h"
|
||||||
#include <uavtalk/telemetrymanager.h>
|
#include <uavtalk/telemetrymanager.h>
|
||||||
@ -72,8 +72,7 @@ void UsageTrackerPlugin::shutdown()
|
|||||||
|
|
||||||
void UsageTrackerPlugin::onAutopilotConnect()
|
void UsageTrackerPlugin::onAutopilotConnect()
|
||||||
{
|
{
|
||||||
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
Core::Internal::GeneralSettings *settings = getGeneralSettings();
|
||||||
Core::Internal::GeneralSettings *settings = pm->getObject<Core::Internal::GeneralSettings>();
|
|
||||||
|
|
||||||
if (settings->collectUsageData()) {
|
if (settings->collectUsageData()) {
|
||||||
if (settings->showUsageDataDisclaimer()) {
|
if (settings->showUsageDataDisclaimer()) {
|
||||||
@ -139,14 +138,12 @@ void UsageTrackerPlugin::trackUsage()
|
|||||||
if (shouldSend(hash)) {
|
if (shouldSend(hash)) {
|
||||||
query.addQueryItem("hash", 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));
|
QUrl url("https://www.openpilot.org/opver?" + query.toString(QUrl::FullyEncoded));
|
||||||
|
|
||||||
QNetworkAccessManager *networkAccessManager = new QNetworkAccessManager();
|
QNetworkAccessManager *networkAccessManager = new QNetworkAccessManager();
|
||||||
|
|
||||||
// This will delete the network access manager instance when we're done
|
// 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()));
|
connect(networkAccessManager, SIGNAL(finished(QNetworkReply *)), networkAccessManager, SLOT(deleteLater()));
|
||||||
|
|
||||||
qDebug() << "Sending usage tracking as:" << url.toEncoded(QUrl::FullyEncoded);
|
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["fw_hash"] = devDesc.gitHash;
|
||||||
parameters["os_version"] = QSysInfo::prettyProductName() + " " + QSysInfo::currentCpuArchitecture();
|
parameters["os_version"] = QSysInfo::prettyProductName() + " " + QSysInfo::currentCpuArchitecture();
|
||||||
parameters["os_threads"] = QString::number(QThread::idealThreadCount());
|
parameters["os_threads"] = QString::number(QThread::idealThreadCount());
|
||||||
|
parameters["os_timezone"] = QTimeZone::systemTimeZoneId();
|
||||||
parameters["gcs_version"] = VersionInfo::revision();
|
parameters["gcs_version"] = VersionInfo::revision();
|
||||||
|
|
||||||
// Configuration parameters
|
// 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
|
QString UsageTrackerPlugin::getUAVFieldValue(UAVObjectManager *objManager, QString objectName, QString fieldName, int index) const
|
||||||
{
|
{
|
||||||
UAVObject *object = objManager->getObject(objectName);
|
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());
|
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();
|
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
||||||
Core::Internal::GeneralSettings *settings = pm->getObject<Core::Internal::GeneralSettings>();
|
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;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
settings->setLastUsageHash(hash);
|
m_lastHash = hash;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,9 +28,11 @@
|
|||||||
#define USAGETRACKERPLUGIN_H
|
#define USAGETRACKERPLUGIN_H
|
||||||
|
|
||||||
#include <extensionsystem/iplugin.h>
|
#include <extensionsystem/iplugin.h>
|
||||||
|
#include <coreplugin/generalsettings.h>
|
||||||
|
|
||||||
class TelemetryManager;
|
class TelemetryManager;
|
||||||
class UAVObjectManager;
|
class UAVObjectManager;
|
||||||
|
class QNetworkReply;
|
||||||
|
|
||||||
class UsageTrackerPlugin : public ExtensionSystem::IPlugin {
|
class UsageTrackerPlugin : public ExtensionSystem::IPlugin {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@ -47,11 +49,14 @@ private slots:
|
|||||||
void onAutopilotConnect();
|
void onAutopilotConnect();
|
||||||
void trackUsage();
|
void trackUsage();
|
||||||
void collectUsageParameters(QMap<QString, QString> ¶meters);
|
void collectUsageParameters(QMap<QString, QString> ¶meters);
|
||||||
|
void onFinished(QNetworkReply *reply);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
TelemetryManager *m_telemetryManager;
|
TelemetryManager *m_telemetryManager;
|
||||||
|
QString m_lastHash;
|
||||||
QString getUAVFieldValue(UAVObjectManager *objManager, QString objectName, QString fieldName, int index = 0) const;
|
QString getUAVFieldValue(UAVObjectManager *objManager, QString objectName, QString fieldName, int index = 0) const;
|
||||||
QString getQueryHash(QString source) const;
|
QString getQueryHash(QString source) const;
|
||||||
|
Core::Internal::GeneralSettings * getGeneralSettings() const;
|
||||||
bool shouldSend(const QString &hash);
|
bool shouldSend(const QString &hash);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user