UASInterface.h 3.43 KB
Newer Older
1 2
/****************************************************************************
 *
Gus Grubba's avatar
Gus Grubba committed
3
 * (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
4 5 6 7 8
 *
 * QGroundControl is licensed according to the terms in the file
 * COPYING.md in the root of the source code directory.
 *
 ****************************************************************************/
pixhawk's avatar
pixhawk committed
9

Donald Gagne's avatar
Donald Gagne committed
10 11 12
// NO NEW CODE HERE
// UASInterface, UAS.h/cc are deprecated. All new functionality should go into Vehicle.h/cc
//
pixhawk's avatar
pixhawk committed
13

14
#pragma once
pixhawk's avatar
pixhawk committed
15 16 17 18 19

#include <QObject>
#include <QList>
#include <QAction>
#include <QColor>
20
#include <QPointer>
pixhawk's avatar
pixhawk committed
21 22 23 24 25 26 27 28 29

#include "LinkInterface.h"

/**
 * @brief Interface for all robots.
 *
 * This interface is abstract and thus cannot be instantiated. It serves only as type definition.
 * It represents an unmanned aerial vehicle, e.g. a micro air vehicle.
 **/
lm's avatar
lm committed
30 31
class UASInterface : public QObject
{
pixhawk's avatar
pixhawk committed
32 33 34 35 36 37
    Q_OBJECT
public:
    virtual ~UASInterface() {}

    /* MANAGEMENT */

38
    virtual int getUASID() const = 0; ///< Get the ID of the connected UAS
pixhawk's avatar
pixhawk committed
39
    /** @brief The time interval the robot is switched on **/
40
    virtual quint64 getUptime() const = 0;
pixhawk's avatar
pixhawk committed
41 42

public slots:
43 44
    /** @brief Order the robot to pair its receiver **/
    virtual void pairRX(int rxType, int rxSubType) = 0;
pixhawk's avatar
pixhawk committed
45 46 47 48 49 50

signals:
    /** @brief The robot is connected **/
    void connected();
    /** @brief The robot is disconnected **/
    void disconnected();
51

pixhawk's avatar
pixhawk committed
52 53 54 55 56 57 58 59
    /**
     * @brief The battery status has been updated
     *
     * @param uas sending system
     * @param voltage battery voltage
     * @param percent remaining capacity in percent
     * @param seconds estimated remaining flight time in seconds
     */
dongfang's avatar
dongfang committed
60
    void batteryChanged(UASInterface* uas, double voltage, double current, double percent, int seconds);
pixhawk's avatar
pixhawk committed
61
    void statusChanged(UASInterface* uas, QString status);
62

pixhawk's avatar
pixhawk committed
63 64
    void imageStarted(int imgid, int width, int height, int depth, int channels);
    void imageDataReceived(int imgid, const unsigned char* imageData, int length, int startIndex);
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82

    /** @brief Optical flow status changed */
    void opticalFlowStatusChanged(bool supported, bool enabled, bool ok);
    /** @brief Vision based localization status changed */
    void visionLocalizationStatusChanged(bool supported, bool enabled, bool ok);
    /** @brief Infrared / Ultrasound status changed */
    void distanceSensorStatusChanged(bool supported, bool enabled, bool ok);
    /** @brief Gyroscope status changed */
    void gyroStatusChanged(bool supported, bool enabled, bool ok);
    /** @brief Accelerometer status changed */
    void accelStatusChanged(bool supported, bool enabled, bool ok);
    /** @brief Magnetometer status changed */
    void magSensorStatusChanged(bool supported, bool enabled, bool ok);
    /** @brief Barometer status changed */
    void baroStatusChanged(bool supported, bool enabled, bool ok);
    /** @brief Differential pressure / airspeed status changed */
    void airspeedStatusChanged(bool supported, bool enabled, bool ok);

83 84 85
    // ERROR AND STATUS SIGNALS
    /** @brief Name of system changed */
    void nameChanged(QString newName);
86 87
    /** @brief Core specifications have changed */
    void systemSpecsChanged(int uasId);
88

dogmaphobic's avatar
dogmaphobic committed
89 90 91
    // Log Download Signals
    void logEntry   (UASInterface* uas, uint32_t time_utc, uint32_t size, uint16_t id, uint16_t num_logs, uint16_t last_log_num);
    void logData    (UASInterface* uas, uint32_t ofs, uint16_t id, uint8_t count, const uint8_t* data);
92

pixhawk's avatar
pixhawk committed
93 94
};

lm's avatar
lm committed
95
Q_DECLARE_INTERFACE(UASInterface, "org.qgroundcontrol/1.0")
96