3#ifndef QGC_NO_ARDUPILOT_DIALECT
10#include <QtCore/QFileInfo>
16#ifndef QGC_NO_ARDUPILOT_DIALECT
20QString _apmFileVehicleName(
const QString &vehicleType)
22 if (vehicleType == QStringLiteral(
"ArduCopter")) {
return QStringLiteral(
"Copter"); }
23 if (vehicleType == QStringLiteral(
"ArduPlane")) {
return QStringLiteral(
"Plane"); }
24 if (vehicleType == QStringLiteral(
"ArduRover")) {
return QStringLiteral(
"Rover"); }
25 if (vehicleType == QStringLiteral(
"ArduSub")) {
return QStringLiteral(
"Sub"); }
31QString _findAPMMetaDataFile(
const QString &fileVehicleName,
int major,
int minor)
33 int currMajor = major;
34 int currMinor = minor;
36 while (currMajor >= 4 && currMinor > 0) {
37 const QString file = QStringLiteral(
":/FirmwarePlugin/APM/APMParameterFactMetaData.%1.%2.%3.json")
38 .arg(fileVehicleName).arg(currMajor).arg(currMinor);
39 if (QFileInfo::exists(file)) {
50 for (
int i = 0; i < 10; i++) {
51 const QString file = QStringLiteral(
":/FirmwarePlugin/APM/APMParameterFactMetaData.%1.4.%2.json")
52 .arg(fileVehicleName).arg(i);
53 if (QFileInfo::exists(file)) {
65 for (
int i = 0; i < parameters.size(); i++) {
66 QVariantMap row = parameters[i].toMap();
68 const QString name = row.value(QStringLiteral(
"name")).toString();
69 const bool isFloat = row.value(QStringLiteral(
"isFloat"),
false).toBool();
80 row[QStringLiteral(
"decimalPlaces")] = factMeta->
decimalPlaces();
81 row[QStringLiteral(
"units")] = factMeta->
rawUnits();
83 row[QStringLiteral(
"enumStrings")] = QVariant::fromValue(factMeta->
enumStrings());
84 row[QStringLiteral(
"enumValues")] = QVariant::fromValue(factMeta->
enumValues());
94 if (parameters.isEmpty()) {
100 QStringLiteral(
":/FirmwarePlugin/PX4/PX4ParameterFactMetaData.json"));
102 _enrichRows(parameters, metaData);
107#ifndef QGC_NO_ARDUPILOT_DIALECT
109 const QString &vehicleType,
113 if (parameters.isEmpty()) {
117 const QString fileVehicleName = _apmFileVehicleName(vehicleType);
118 if (fileVehicleName.isEmpty()) {
119 qCDebug(LogViewerParamMetaDataLog) <<
"Unknown APM vehicle type:" << vehicleType;
125 const int startMajor = (major >= 4) ? major : 9;
126 const int startMinor = (minor >= 0) ? minor : 99;
128 const QString metaDataFile = _findAPMMetaDataFile(fileVehicleName, startMajor, startMinor);
129 if (metaDataFile.isEmpty()) {
130 qCDebug(LogViewerParamMetaDataLog) <<
"No APM metadata file found for" << vehicleType
131 << major <<
"." << minor;
135 qCDebug(LogViewerParamMetaDataLog) <<
"Loading APM metadata:" << metaDataFile;
140 _enrichRows(parameters, metaData);
#define QGC_LOGGING_CATEGORY(name, categoryStr)