PX4FirmwarePlugin.h 5.25 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 55
    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             getDefaultComponentIdParam      (void) const final { return QString("SYS_AUTOSTART"); }
    QString             missionCommandOverrides         (MAV_TYPE vehicleType) const final;
    QString             getVersionParam                 (void) final { return QString("SYS_PARAM_VER"); }
56
    QString             internalParameterMetaDataFile   (Vehicle* vehicle) final { Q_UNUSED(vehicle); return QString(":/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml"); }
Don Gagne's avatar
Don Gagne committed
57 58 59 60
    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); }
61
    QString             offlineEditingParamFile(Vehicle* vehicle) final { Q_UNUSED(vehicle); return QStringLiteral(":/FirmwarePlugin/PX4/PX4.OfflineEditing.params"); }
62
    QString             brandImage                      (const Vehicle* vehicle) const { Q_UNUSED(vehicle); return QStringLiteral("/qmlimages/PX4/BrandImage"); }
63 64 65
    QString             missionFlightMode               (void) final;
    QString             rtlFlightMode                   (void) final;
    QString             takeControlFlightMode           (void) final;
Don Gagne's avatar
Don Gagne committed
66

67
    // NOTE: For internal use only. Do not use in mainline QGC code.
Don Gagne's avatar
Don Gagne committed
68 69
    // Use these constants to set flight modes using setFlightMode method. Don't use hardcoded string names since the
    // names may change.
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
    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;
85 86 87 88 89

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

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

#endif