ADSBVehicle.h 1.98 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
/****************************************************************************
 *
 *   (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.
 *
 ****************************************************************************/

#pragma once

#include <QObject>
#include <QGeoCoordinate>

#include "QGCMAVLink.h"

class ADSBVehicle : public QObject
{
    Q_OBJECT

public:
    ADSBVehicle(mavlink_adsb_vehicle_t& adsbVehicle, QObject* parent = NULL);

24 25
    ADSBVehicle(const QGeoCoordinate& location, float heading, QObject* parent = NULL);

26
    Q_PROPERTY(int              icaoAddress READ icaoAddress    CONSTANT)
27
    Q_PROPERTY(QString          callsign    READ callsign       NOTIFY callsignChanged)
28 29 30 31 32
    Q_PROPERTY(QGeoCoordinate   coordinate  READ coordinate     NOTIFY coordinateChanged)
    Q_PROPERTY(double           altitude    READ altitude       NOTIFY altitudeChanged)     // NaN for not available
    Q_PROPERTY(double           heading     READ heading        NOTIFY headingChanged)      // NaN for not available

    int             icaoAddress (void) const { return _icaoAddress; }
33
    QString         callsign    (void) const { return _callsign; }
34 35 36 37 38 39 40
    QGeoCoordinate  coordinate  (void) const { return _coordinate; }
    double          altitude    (void) const { return _altitude; }
    double          heading     (void) const { return _heading; }

    /// Update the vehicle with new information
    void update(mavlink_adsb_vehicle_t& adsbVehicle);

41
    void update(const QGeoCoordinate& location, float heading);
42 43
signals:
    void coordinateChanged(QGeoCoordinate coordinate);
44
    void callsignChanged(QString callsign);
45 46 47 48 49
    void altitudeChanged(double altitude);
    void headingChanged(double heading);

private:
    uint32_t        _icaoAddress;
50
    QString         _callsign;
51 52 53 54
    QGeoCoordinate  _coordinate;
    double          _altitude;
    double          _heading;
};