PX4FirmwarePlugin.h 5.14 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 15 16 17

/// @file
///     @author Don Gagne <don@thegagnes.com>

#ifndef PX4FirmwarePlugin_H
#define PX4FirmwarePlugin_H

#include "FirmwarePlugin.h"
18
#include "ParameterManager.h"
19
#include "PX4ParameterMetaData.h"
Don Gagne's avatar
Don Gagne committed
20
#include "PX4GeoFenceManager.h"
Don Gagne's avatar
Don Gagne committed
21 22 23 24 25 26

class PX4FirmwarePlugin : public FirmwarePlugin
{
    Q_OBJECT

public:
27 28
    PX4FirmwarePlugin(void);

Don Gagne's avatar
Don Gagne committed
29
    // Overrides from FirmwarePlugin
30

31 32
    QList<VehicleComponent*> componentsForVehicle(AutoPilotPlugin* vehicle) final;
    QList<MAV_CMD> supportedMissionCommands(void) final;
Don Gagne's avatar
Don Gagne committed
33

34
    AutoPilotPlugin*    autopilotPlugin                 (Vehicle* vehicle) final;
Don Gagne's avatar
Don Gagne committed
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
    bool                isCapable                       (const Vehicle *vehicle, FirmwareCapabilities capabilities) final;
    QStringList         flightModes                     (Vehicle* vehicle) final;
    QString             flightMode                      (uint8_t base_mode, uint32_t custom_mode) const final;
    bool                setFlightMode                   (const QString& flightMode, uint8_t* base_mode, uint32_t* custom_mode) final;
    void                setGuidedMode                   (Vehicle* vehicle, bool guidedMode) final;
    void                pauseVehicle                    (Vehicle* vehicle) final;
    void                guidedModeRTL                   (Vehicle* vehicle) final;
    void                guidedModeLand                  (Vehicle* vehicle) final;
    void                guidedModeTakeoff               (Vehicle* vehicle, double altitudeRel) final;
    void                guidedModeOrbit                 (Vehicle* vehicle, const QGeoCoordinate& centerCoord = QGeoCoordinate(), double radius = NAN, double velocity = NAN, double altitude = NAN) final;
    void                guidedModeGotoLocation          (Vehicle* vehicle, const QGeoCoordinate& gotoCoord) final;
    void                guidedModeChangeAltitude        (Vehicle* vehicle, double altitudeRel) final;
    bool                isGuidedMode                    (const Vehicle* vehicle) const;
    int                 manualControlReservedButtonCount(void) final;
    bool                supportsManualControl           (void) final;
    void                initializeVehicle               (Vehicle* vehicle) final;
    bool                sendHomePositionToVehicle       (void) final;
    void                addMetaDataToFact               (QObject* parameterMetaData, Fact* fact, MAV_TYPE vehicleType) final;
    QString             missionCommandOverrides         (MAV_TYPE vehicleType) const final;
    QString             getVersionParam                 (void) final { return QString("SYS_PARAM_VER"); }
55
    QString             internalParameterMetaDataFile   (Vehicle* vehicle) final { Q_UNUSED(vehicle); return QString(":/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml"); }
Don Gagne's avatar
Don Gagne committed
56 57 58 59
    void                getParameterMetaDataVersionInfo (const QString& metaDataFile, int& majorVersion, int& minorVersion) final { PX4ParameterMetaData::getParameterMetaDataVersionInfo(metaDataFile, majorVersion, minorVersion); }
    QObject*            loadParameterMetaData           (const QString& metaDataFile);
    bool                adjustIncomingMavlinkMessage    (Vehicle* vehicle, mavlink_message_t* message);
    GeoFenceManager*    newGeoFenceManager              (Vehicle* vehicle) { return new PX4GeoFenceManager(vehicle); }
60
    QString             offlineEditingParamFile(Vehicle* vehicle) final { Q_UNUSED(vehicle); return QStringLiteral(":/FirmwarePlugin/PX4/PX4.OfflineEditing.params"); }
61
    QString             brandImage                      (const Vehicle* vehicle) const { Q_UNUSED(vehicle); return QStringLiteral("/qmlimages/PX4/BrandImage"); }
62 63 64
    QString             missionFlightMode               (void) final;
    QString             rtlFlightMode                   (void) final;
    QString             takeControlFlightMode           (void) final;
Don Gagne's avatar
Don Gagne committed
65

66
    // NOTE: For internal use only. Do not use in mainline QGC code.
Don Gagne's avatar
Don Gagne committed
67 68
    // Use these constants to set flight modes using setFlightMode method. Don't use hardcoded string names since the
    // names may change.
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
    static const char* _manualFlightMode;
    static const char* _acroFlightMode;
    static const char* _stabilizedFlightMode;
    static const char* _rattitudeFlightMode;
    static const char* _altCtlFlightMode;
    static const char* _posCtlFlightMode;
    static const char* _offboardFlightMode;
    static const char* _readyFlightMode;
    static const char* _takeoffFlightMode;
    static const char* _holdFlightMode;
    static const char* _missionFlightMode;
    static const char* _rtlFlightMode;
    static const char* _landingFlightMode;
    static const char* _rtgsFlightMode;
    static const char* _followMeFlightMode;
84 85 86 87 88

private:
    void _handleAutopilotVersion(Vehicle* vehicle, mavlink_message_t* message);

    bool _versionNotified;  ///< true: user notified over version issue
Don Gagne's avatar
Don Gagne committed
89 90 91
};

#endif