MissionCommands.h 3.28 KB
Newer Older
Don Gagne's avatar
Don Gagne committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
/*=====================================================================
 
 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 MissionCommands_H
#define MissionCommands_H

#include "QGCToolbox.h"
28 29 30 31 32 33 34 35 36 37 38
#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
39 40 41 42 43 44 45
class MissionCommands : public QGCTool
{
    Q_OBJECT
    
public:
    MissionCommands(QGCApplication* app);

46 47 48
    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
49

50 51 52 53 54 55 56
    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
57

58 59 60
    // Overrides from QGCTool
    virtual void setToolbox(QGCToolbox* toolbox);

Don Gagne's avatar
Don Gagne committed
61
private:
62
    void _createCategories(void);
63
    MAV_AUTOPILOT _firmwareTypeFromVehicle(Vehicle* vehicle) const;
Don Gagne's avatar
Don Gagne committed
64 65

private:
66 67 68
    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
69

70 71 72
    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
73 74 75
};

#endif