Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion custom-example/src/FirmwarePlugin/CustomFirmwarePlugin.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
#include "PX4FirmwarePlugin.h"

class AutoPilotPlugin;
class CustomCameraManager;
class Vehicle;

class CustomFirmwarePlugin : public PX4FirmwarePlugin
Expand Down
76 changes: 76 additions & 0 deletions src/Camera/CameraMetaData.cc
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@
****************************************************************************/

#include "CameraMetaData.h"

#include <QtCore/QJsonArray>
#include <QtCore/QJsonDocument>
#include <QtCore/QJsonObject>

#include "JsonHelper.h"
#include "QGCLoggingCategory.h"

QGC_LOGGING_CATEGORY(CameraMetaDataLog, "qgc.camera.camerametadata")
Expand Down Expand Up @@ -44,3 +50,73 @@ CameraMetaData::~CameraMetaData()
{
qCDebug(CameraMetaDataLog) << this;
}

QList<CameraMetaData*> CameraMetaData::parseCameraMetaData()
{
QList<CameraMetaData*> cameraList;

QString errorString;
int version = 0;
const QJsonObject jsonObject = JsonHelper::openInternalQGCJsonFile(QStringLiteral(":/json/CameraMetaData.json"), "CameraMetaData", 1, 1, version, errorString);
if (!errorString.isEmpty()) {
qCWarning(CameraMetaDataLog) << "Internal Error:" << errorString;
return cameraList;
}

static const QList<JsonHelper::KeyValidateInfo> rootKeyInfoList = {
{ "cameraMetaData", QJsonValue::Array, true }
};
if (!JsonHelper::validateKeys(jsonObject, rootKeyInfoList, errorString)) {
qCWarning(CameraMetaDataLog) << errorString;
return cameraList;
}

static const QList<JsonHelper::KeyValidateInfo> cameraKeyInfoList = {
{ "canonicalName", QJsonValue::String, true },
{ "brand", QJsonValue::String, true },
{ "model", QJsonValue::String, true },
{ "sensorWidth", QJsonValue::Double, true },
{ "sensorHeight", QJsonValue::Double, true },
{ "imageWidth", QJsonValue::Double, true },
{ "imageHeight", QJsonValue::Double, true },
{ "focalLength", QJsonValue::Double, true },
{ "landscape", QJsonValue::Bool, true },
{ "fixedOrientation", QJsonValue::Bool, true },
{ "minTriggerInterval", QJsonValue::Double, true },
{ "deprecatedTranslatedName", QJsonValue::String, true },
};
const QJsonArray cameraInfo = jsonObject["cameraMetaData"].toArray();
for (const QJsonValue &jsonValue : cameraInfo) {
if (!jsonValue.isObject()) {
qCWarning(CameraMetaDataLog) << "Entry in CameraMetaData array is not object";
return cameraList;
}

const QJsonObject obj = jsonValue.toObject();
if (!JsonHelper::validateKeys(obj, cameraKeyInfoList, errorString)) {
qCWarning(CameraMetaDataLog) << errorString;
return cameraList;
}

const QString canonicalName = obj["canonicalName"].toString();
const QString brand = obj["brand"].toString();
const QString model = obj["model"].toString();
const double sensorWidth = obj["sensorWidth"].toDouble();
const double sensorHeight = obj["sensorHeight"].toDouble();
const double imageWidth = obj["imageWidth"].toDouble();
const double imageHeight = obj["imageHeight"].toDouble();
const double focalLength = obj["focalLength"].toDouble();
const bool landscape = obj["landscape"].toBool();
const bool fixedOrientation = obj["fixedOrientation"].toBool();
const double minTriggerInterval = obj["minTriggerInterval"].toDouble();
const QString deprecatedTranslatedName = obj["deprecatedTranslatedName"].toString();

CameraMetaData *metaData = new CameraMetaData(
canonicalName, brand, model, sensorWidth, sensorHeight,
imageWidth, imageHeight, focalLength, landscape,
fixedOrientation, minTriggerInterval, deprecatedTranslatedName);
cameraList.append(metaData);
}

return cameraList;
}
5 changes: 4 additions & 1 deletion src/Camera/CameraMetaData.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#pragma once

#include <QtCore/QLoggingCategory>
#include <QtQmlIntegration/QtQmlIntegration>

Q_DECLARE_LOGGING_CATEGORY(CameraMetaDataLog)

Expand Down Expand Up @@ -45,6 +46,8 @@ class CameraMetaData
const QString &deprecatedTranslatedName);
~CameraMetaData();

static QList<CameraMetaData*> parseCameraMetaData();

const QString canonicalName; ///< Canonical name saved in plan files. Not translated.
const QString brand; ///< Camera brand. Used for grouping.
const QString model; ///< Camerar model
Expand All @@ -63,4 +66,4 @@ class CameraMetaData
/// Newly added CameraMetaData entries should leave this value empty.
const QString deprecatedTranslatedName;
};
Q_DECLARE_METATYPE(CameraMetaData)
Q_DECLARE_METATYPE(CameraMetaData*)
Loading
Loading