You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
174 lines
6.4 KiB
174 lines
6.4 KiB
9 years ago
|
/*=====================================================================
|
||
|
|
||
|
QGroundControl Open Source Ground Control Station
|
||
|
|
||
|
(c) 2009 - 2014 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
||
|
|
||
|
This file is part of the QGROUNDCONTROL project
|
||
|
|
||
|
QGROUNDCONTROL is free software: you can redistribute it and/or modify
|
||
|
it under the terms of the GNU General Public License as published by
|
||
|
the Free Software Foundation, either version 3 of the License, or
|
||
|
(at your option) any later version.
|
||
|
|
||
|
QGROUNDCONTROL is distributed in the hope that it will be useful,
|
||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
GNU General Public License for more details.
|
||
|
|
||
|
You should have received a copy of the GNU General Public License
|
||
|
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
|
||
|
|
||
|
======================================================================*/
|
||
|
|
||
|
#ifndef MissionCommandList_H
|
||
|
#define MissionCommandList_H
|
||
|
|
||
|
#include "QGCToolbox.h"
|
||
|
#include "QGCMAVLink.h"
|
||
|
#include "QGCLoggingCategory.h"
|
||
|
#include "QmlObjectListModel.h"
|
||
|
#include "MavlinkQmlSingleton.h"
|
||
|
|
||
|
#include <QObject>
|
||
|
#include <QString>
|
||
|
#include <QJsonObject>
|
||
|
#include <QJsonValue>
|
||
|
|
||
|
class MissionCommandList;
|
||
|
class Vehicle;
|
||
|
|
||
|
/// The information associated with a mission command parameter.
|
||
|
class MavCmdParamInfo : public QObject {
|
||
|
|
||
|
Q_OBJECT
|
||
|
|
||
|
public:
|
||
|
MavCmdParamInfo(QObject* parent = NULL)
|
||
|
: QObject(parent)
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
Q_PROPERTY(int decimalPlaces READ decimalPlaces CONSTANT)
|
||
|
Q_PROPERTY(double defaultValue READ defaultValue CONSTANT)
|
||
|
Q_PROPERTY(QStringList enumStrings READ enumStrings CONSTANT)
|
||
|
Q_PROPERTY(QVariantList enumValues READ enumValues CONSTANT)
|
||
|
Q_PROPERTY(QString label READ label CONSTANT)
|
||
|
Q_PROPERTY(int param READ param CONSTANT)
|
||
|
Q_PROPERTY(QString units READ units CONSTANT)
|
||
|
|
||
|
int decimalPlaces (void) const { return _decimalPlaces; }
|
||
|
double defaultValue (void) const { return _defaultValue; }
|
||
|
QStringList enumStrings (void) const { return _enumStrings; }
|
||
|
QVariantList enumValues (void) const { return _enumValues; }
|
||
|
QString label (void) const { return _label; }
|
||
|
int param (void) const { return _param; }
|
||
|
QString units (void) const { return _units; }
|
||
|
|
||
|
private:
|
||
|
int _decimalPlaces;
|
||
|
double _defaultValue;
|
||
|
QStringList _enumStrings;
|
||
|
QVariantList _enumValues;
|
||
|
QString _label;
|
||
|
int _param;
|
||
|
QString _units;
|
||
|
|
||
|
friend class MissionCommandList;
|
||
|
};
|
||
|
|
||
|
// The information associated with a mission command.
|
||
|
class MavCmdInfo : public QObject {
|
||
|
Q_OBJECT
|
||
|
|
||
|
public:
|
||
|
MavCmdInfo(QObject* parent = NULL)
|
||
|
: QObject(parent)
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
Q_PROPERTY(QString category READ category CONSTANT)
|
||
|
Q_PROPERTY(MavlinkQmlSingleton::Qml_MAV_CMD command READ qmlCommand CONSTANT)
|
||
|
Q_PROPERTY(QString description READ description CONSTANT)
|
||
|
Q_PROPERTY(bool friendlyEdit READ friendlyEdit CONSTANT)
|
||
|
Q_PROPERTY(QString friendlyName READ friendlyName CONSTANT)
|
||
|
Q_PROPERTY(QString rawName READ rawName CONSTANT)
|
||
|
Q_PROPERTY(bool standaloneCoordinate READ standaloneCoordinate CONSTANT)
|
||
|
Q_PROPERTY(bool specifiesCoordinate READ specifiesCoordinate CONSTANT)
|
||
|
|
||
|
MavlinkQmlSingleton::Qml_MAV_CMD qmlCommand(void) const { return (MavlinkQmlSingleton::Qml_MAV_CMD)_command; }
|
||
|
MAV_CMD command(void) const { return _command; }
|
||
|
|
||
|
QString category (void) const { return _category; }
|
||
|
QString description (void) const { return _description; }
|
||
|
bool friendlyEdit (void) const { return _friendlyEdit; }
|
||
|
QString friendlyName (void) const { return _friendlyName; }
|
||
|
QString rawName (void) const { return _rawName; }
|
||
|
bool standaloneCoordinate(void) const { return _standaloneCoordinate; }
|
||
|
bool specifiesCoordinate (void) const { return _specifiesCoordinate; }
|
||
|
|
||
|
const QMap<int, MavCmdParamInfo*>& paramInfoMap(void) const { return _paramInfoMap; }
|
||
|
|
||
|
private:
|
||
|
QString _category;
|
||
|
MAV_CMD _command;
|
||
|
QString _description;
|
||
|
bool _friendlyEdit;
|
||
|
QString _friendlyName;
|
||
|
QMap<int, MavCmdParamInfo*> _paramInfoMap;
|
||
|
QString _rawName;
|
||
|
bool _standaloneCoordinate;
|
||
|
bool _specifiesCoordinate;
|
||
|
|
||
|
friend class MissionCommandList;
|
||
|
};
|
||
|
|
||
|
// A list of mission command info loaded from a json file.
|
||
|
class MissionCommandList : public QObject
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
|
||
|
public:
|
||
|
MissionCommandList(const QString& jsonFilename, QObject* parent = NULL);
|
||
|
|
||
|
Q_INVOKABLE bool contains(MavlinkQmlSingleton::Qml_MAV_CMD command) const { return contains((MAV_CMD)command); }
|
||
|
bool contains(MAV_CMD command) const;
|
||
|
|
||
|
Q_INVOKABLE QVariant getMavCmdInfo(MavlinkQmlSingleton::Qml_MAV_CMD command) const { return QVariant::fromValue(getMavCmdInfo((MAV_CMD)command)); }
|
||
|
MavCmdInfo* getMavCmdInfo(MAV_CMD command) const;
|
||
|
|
||
|
QList<MAV_CMD> commandsIds(void) const;
|
||
|
|
||
|
private:
|
||
|
void _loadMavCmdInfoJson(const QString& jsonFilename);
|
||
|
|
||
|
private:
|
||
|
QMap<MAV_CMD, MavCmdInfo*> _mavCmdInfoMap;
|
||
|
|
||
|
static const QString _categoryJsonKey;
|
||
|
static const QString _decimalPlacesJsonKey;
|
||
|
static const QString _defaultJsonKey;
|
||
|
static const QString _descriptionJsonKey;
|
||
|
static const QString _enumStringsJsonKey;
|
||
|
static const QString _enumValuesJsonKey;
|
||
|
static const QString _friendlyNameJsonKey;
|
||
|
static const QString _friendlyEditJsonKey;
|
||
|
static const QString _idJsonKey;
|
||
|
static const QString _labelJsonKey;
|
||
|
static const QString _mavCmdInfoJsonKey;
|
||
|
static const QString _param1JsonKey;
|
||
|
static const QString _param2JsonKey;
|
||
|
static const QString _param3JsonKey;
|
||
|
static const QString _param4JsonKey;
|
||
|
static const QString _paramJsonKeyFormat;
|
||
|
static const QString _rawNameJsonKey;
|
||
|
static const QString _standaloneCoordinateJsonKey;
|
||
|
static const QString _specifiesCoordinateJsonKey;
|
||
|
static const QString _unitsJsonKey;
|
||
|
static const QString _versionJsonKey;
|
||
|
};
|
||
|
|
||
|
#endif
|