mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-18 08:54:15 +01:00
OP-1777 Added more settings information.
Re-factored field access code. Added hash for integrity checks.
This commit is contained in:
parent
0a87b30572
commit
f1e1507b06
@ -33,15 +33,11 @@
|
|||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <attitudesettings.h>
|
|
||||||
#include <revosettings.h>
|
|
||||||
#include <uavobjectutil/devicedescriptorstruct.h>
|
#include <uavobjectutil/devicedescriptorstruct.h>
|
||||||
#include <uavobjectutil/uavobjectutilmanager.h>
|
#include <uavobjectutil/uavobjectutilmanager.h>
|
||||||
#include <coreplugin/generalsettings.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 "qmainwindow.h"
|
|
||||||
#include "manualcontrolsettings.h"
|
|
||||||
|
|
||||||
UsageTrackerPlugin::UsageTrackerPlugin() :
|
UsageTrackerPlugin::UsageTrackerPlugin() :
|
||||||
m_telemetryManager(NULL)
|
m_telemetryManager(NULL)
|
||||||
@ -140,8 +136,10 @@ void UsageTrackerPlugin::trackUsage()
|
|||||||
iter.next();
|
iter.next();
|
||||||
query.addQueryItem(iter.key(), iter.value());
|
query.addQueryItem(iter.key(), iter.value());
|
||||||
}
|
}
|
||||||
qDebug() << "Parameters unencoded:" << query.toString();
|
|
||||||
qDebug() << "Parameters encoded:" << query.toString(QUrl::FullyEncoded);
|
// Add checksum
|
||||||
|
query.addQueryItem("hash", getQueryHash(query.toString()));
|
||||||
|
|
||||||
QUrl url("https://www.openpilot.org/opver?" + query.toString(QUrl::FullyEncoded));
|
QUrl url("https://www.openpilot.org/opver?" + query.toString(QUrl::FullyEncoded));
|
||||||
qDebug() << "Sending usage tracking as:" << url.toEncoded(QUrl::FullyEncoded);
|
qDebug() << "Sending usage tracking as:" << url.toEncoded(QUrl::FullyEncoded);
|
||||||
networkAccessManager->get(QNetworkRequest(QUrl(url.toEncoded(QUrl::FullyEncoded))));
|
networkAccessManager->get(QNetworkRequest(QUrl(url.toEncoded(QUrl::FullyEncoded))));
|
||||||
@ -163,19 +161,55 @@ void UsageTrackerPlugin::collectUsageParameters(QMap<QString, QString> ¶mete
|
|||||||
parameters["fw_tag"] = devDesc.gitTag;
|
parameters["fw_tag"] = devDesc.gitTag;
|
||||||
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["gcs_version"] = VersionInfo::revision();
|
parameters["gcs_version"] = VersionInfo::revision();
|
||||||
parameters["localtime"] = QDateTime::currentDateTime().toString(Qt::ISODate);
|
parameters["localtime"] = QDateTime::currentDateTime().toString(Qt::ISODate);
|
||||||
|
|
||||||
// Configuration parameters
|
// Configuration parameters
|
||||||
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
||||||
UAVObjectManager *objManager = pm->getObject<UAVObjectManager>();
|
UAVObjectManager *objManager = pm->getObject<UAVObjectManager>();
|
||||||
ManualControlSettings *controlSettings = ManualControlSettings::GetInstance(objManager);
|
|
||||||
parameters["settings_receiver"] = controlSettings->getField("ChannelGroups")->getValue(ManualControlSettings::CHANNELGROUPS_THROTTLE).toString();
|
|
||||||
|
|
||||||
RevoSettings *revoSettings = RevoSettings::GetInstance(objManager);
|
parameters["settings_receiver"] = getUAVFieldValue(objManager, "ManualControlSettings", "ChannelGroups", 0);
|
||||||
// Only get this info if uavo is known by controller
|
parameters["settings_vehicle"] = getUAVFieldValue(objManager, "SystemSettings", "AirframeType");
|
||||||
if (revoSettings->isKnown()) {
|
|
||||||
parameters["settings_fusion"] = revoSettings->getField("FusionAlgorithm")->getValue().toString();
|
if ((boardModel & 0xff00) == 0x0400) {
|
||||||
|
// CopterControl family
|
||||||
|
parameters["settings_rport"] = getUAVFieldValue(objManager, "HwSettings", "CC_RcvrPort");
|
||||||
|
parameters["settings_mport"] = getUAVFieldValue(objManager, "HwSettings", "CC_MainPort");
|
||||||
|
parameters["settings_fport"] = getUAVFieldValue(objManager, "HwSettings", "CC_FlexiPort");
|
||||||
|
} else if ((boardModel & 0xff00) == 0x0900) {
|
||||||
|
// Revolution family
|
||||||
|
parameters["settings_rport"] = getUAVFieldValue(objManager, "HwSettings", "RM_RcvrPort");
|
||||||
|
parameters["settings_mport"] = getUAVFieldValue(objManager, "HwSettings", "RM_MainPort");
|
||||||
|
parameters["settings_fport"] = getUAVFieldValue(objManager, "HwSettings", "RM_FlexiPort");
|
||||||
|
parameters["settings_fusion"] = getUAVFieldValue(objManager, "RevoSettings", "FusionAlgorithm");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
parameters["settings_uport"] = getUAVFieldValue(objManager, "HwSettings", "USB_HIDPort");
|
||||||
|
parameters["settings_vport"] = getUAVFieldValue(objManager, "HwSettings", "USB_VCPPort");
|
||||||
|
|
||||||
|
parameters["settings_rotation"] = QString("%1:%2:%3")
|
||||||
|
.arg(getUAVFieldValue(objManager, "AttitudeSettings", "BoardRotation", 0))
|
||||||
|
.arg(getUAVFieldValue(objManager, "AttitudeSettings", "BoardRotation", 1))
|
||||||
|
.arg(getUAVFieldValue(objManager, "AttitudeSettings", "BoardRotation", 2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString UsageTrackerPlugin::getUAVFieldValue(UAVObjectManager *objManager, QString objectName, QString fieldName, int index) const
|
||||||
|
{
|
||||||
|
UAVObject *object = objManager->getObject(objectName);
|
||||||
|
|
||||||
|
if (object != NULL) {
|
||||||
|
UAVObjectField *field = object->getField(fieldName);
|
||||||
|
if (field != NULL) {
|
||||||
|
return field->getValue(index).toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return tr("Unknown");
|
||||||
|
}
|
||||||
|
|
||||||
|
QString UsageTrackerPlugin::getQueryHash(QString source) const
|
||||||
|
{
|
||||||
|
source += "OpenPilot Fuck Yeah!";
|
||||||
|
return QString(QCryptographicHash::hash(QByteArray(source.toStdString().c_str()), QCryptographicHash::Md5).toHex());
|
||||||
|
}
|
||||||
|
@ -48,6 +48,8 @@ private slots:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
TelemetryManager *m_telemetryManager;
|
TelemetryManager *m_telemetryManager;
|
||||||
|
QString getUAVFieldValue(UAVObjectManager *objManager, QString objectName, QString fieldName, int index = 0) const;
|
||||||
|
QString getQueryHash(QString source) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // USAGETRACKERPLUGIN_H
|
#endif // USAGETRACKERPLUGIN_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user