MissionCommands.h 2.7 KB
Newer Older
1 2 3 4 5 6 7 8 9
/****************************************************************************
 *
 *   (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
 *
 * QGroundControl is licensed according to the terms in the file
 * COPYING.md in the root of the source code directory.
 *
 ****************************************************************************/

Don Gagne's avatar
Don Gagne committed
10 11 12 13 14

#ifndef MissionCommands_H
#define MissionCommands_H

#include "QGCToolbox.h"
15 16 17 18 19 20 21 22 23 24 25
#include "MissionCommandList.h"

/// Provides access to mission command information used for creating mission command ui editors. There is a base common set
/// of definitions. Individual commands can then be overriden depending on Vehicle information:
///     Common command definitions
///         MAV_AUTOPILOT common overrides
///         Fixed Wing
///             MAV_AUTOPILOT specific Fixed Wing overrides
///         Multi-Rotor
///             MAV_AUTOPILOT specific Multi Rotor overrides
/// The leaf nodes of the hierarchy take precedence over higher level branches
Don Gagne's avatar
Don Gagne committed
26 27 28 29 30 31 32
class MissionCommands : public QGCTool
{
    Q_OBJECT
    
public:
    MissionCommands(QGCApplication* app);

33 34 35
    Q_INVOKABLE const QStringList           categories              (Vehicle* vehicle) const;
    Q_INVOKABLE QString                     categoryFromCommand     (MavlinkQmlSingleton::Qml_MAV_CMD command) const;
    Q_INVOKABLE QVariant                    getCommandsForCategory  (Vehicle* vehicle, const QString& category) const;
Don Gagne's avatar
Don Gagne committed
36

37 38 39 40 41 42 43
    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, Vehicle* vehicle) const { return QVariant::fromValue(getMavCmdInfo((MAV_CMD)command, vehicle)); }
    MavCmdInfo* getMavCmdInfo(MAV_CMD command, Vehicle* vehicle) const;

    QList<MAV_CMD> commandsIds(void) const;
Don Gagne's avatar
Don Gagne committed
44

45 46 47
    // Overrides from QGCTool
    virtual void setToolbox(QGCToolbox* toolbox);

Don Gagne's avatar
Don Gagne committed
48
private:
49
    void _createCategories(void);
50
    MAV_AUTOPILOT _firmwareTypeFromVehicle(Vehicle* vehicle) const;
Don Gagne's avatar
Don Gagne committed
51 52

private:
53 54 55
    QMap<MAV_AUTOPILOT, QMap<QString, QList<MAV_CMD> > > _categoryToMavCmdListMap;

    MissionCommandList  _commonMissionCommands;                                     ///< Mission command definitions for common generic mavlink use case
Don Gagne's avatar
Don Gagne committed
56

57 58 59
    QMap<MAV_AUTOPILOT, MissionCommandList*> _autopilotToCommonMissionCommands;     ///< MAV_AUTOPILOT specific common overrides
    QMap<MAV_AUTOPILOT, MissionCommandList*> _autopilotToFixedWingMissionCommands;  ///< MAV_AUTOPILOT specific fixed wing overrides
    QMap<MAV_AUTOPILOT, MissionCommandList*> _autopilotToMultiRotorMissionCommands; ///< MAV_AUTOPILOT specific multi rotor overrides
Don Gagne's avatar
Don Gagne committed
60 61 62
};

#endif