PX4FirmwarePlugin.h 4.69 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

Don Gagne's avatar
Don Gagne committed
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
    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"); }
    QString             internalParameterMetaDataFile   (void) final { return QString(":/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml"); }
    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"); }
Don Gagne's avatar
Don Gagne committed
61 62 63 64 65 66 67 68 69 70 71 72 73

    // Use these constants to set flight modes using setFlightMode method. Don't use hardcoded string names since the
    // names may change.

    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;
Daniel Agar's avatar
Daniel Agar committed
74
    static const char* holdFlightMode;
Don Gagne's avatar
Don Gagne committed
75 76 77 78
    static const char* missionFlightMode;
    static const char* rtlFlightMode;
    static const char* landingFlightMode;
    static const char* rtgsFlightMode;
Jimmy Johnson's avatar
Jimmy Johnson committed
79
    static const char* followMeFlightMode;
80 81 82 83 84

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

    bool _versionNotified;  ///< true: user notified over version issue
Don Gagne's avatar
Don Gagne committed
85 86 87
};

#endif