TaisyncManager.h 3.94 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 24 25 26 27 28 29 30 31 32 33 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 60 61
/****************************************************************************
 *
 *   (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 "QGCToolbox.h"
#include "QGCLoggingCategory.h"
#include "TaisyncSettings.h"
#if defined(__ios__) || defined(__android__)
#include "TaisyncTelemetry.h"
#include "TaisyncVideoReceiver.h"
#endif

#include <QTimer>

class AppSettings;
class QGCApplication;

//-----------------------------------------------------------------------------
class TaisyncManager : public QGCTool
{
    Q_OBJECT
public:

    Q_PROPERTY(bool     connected           READ connected                                  NOTIFY connectedChanged)
    Q_PROPERTY(bool     linkConnected       READ linkConnected                              NOTIFY linkChanged)
    Q_PROPERTY(QString  linkVidFormat       READ linkVidFormat                              NOTIFY linkChanged)
    Q_PROPERTY(int      uplinkRSSI          READ uplinkRSSI                                 NOTIFY linkChanged)
    Q_PROPERTY(int      downlinkRSSI        READ downlinkRSSI                               NOTIFY linkChanged)
    Q_PROPERTY(QString  serialNumber        READ serialNumber                               NOTIFY linkChanged)
    Q_PROPERTY(QString  fwVersion           READ fwVersion                                  NOTIFY linkChanged)

    explicit TaisyncManager                 (QGCApplication* app, QGCToolbox* toolbox);
    ~TaisyncManager                         () override;

    void    setToolbox                      (QGCToolbox* toolbox) override;

    bool    connected                       () { return _isConnected; }
    bool    linkConnected                   () { return _linkConnected; }
    QString linkVidFormat                   () { return _linkVidFormat; }
    int     uplinkRSSI                      () { return _downlinkRSSI; }
    int     downlinkRSSI                    () { return _uplinkRSSI; }
    QString serialNumber                    () { return _serialNumber; }
    QString fwVersion                       () { return _fwVersion; }

signals:
    void    linkChanged                     ();
    void    connectedChanged                ();

private slots:
    void    _connected                      ();
    void    _checkTaisync                   ();
    void    _updateSettings                 (QByteArray jSonData);
    void    _setEnabled                     ();
    void    _setVideoEnabled                ();
Gus Grubba's avatar
Gus Grubba committed
62 63 64 65
#if defined(__ios__) || defined(__android__)
    void    _readUDPBytes                   ();
    void    _readTelemBytes                 (QByteArray bytesIn);
#endif
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

private:

    enum {
        REQ_LINK_STATUS,
        REQ_DEV_INFO,
        REQ_FREQ_SCAN,
        REQ_LAST
    };

    int                     _currReq        = REQ_LAST;
    bool                    _running        = false;
    bool                    _isConnected    = false;
    AppSettings*            _appSettings    = nullptr;
    TaisyncManager*         _taiManager     = nullptr;
    TaisyncSettings*        _taiSettings    = nullptr;
#if defined(__ios__) || defined(__android__)
    TaisyncTelemetry*       _taiTelemetery  = nullptr;
    TaisyncVideoReceiver*   _taiVideo       = nullptr;
Gus Grubba's avatar
Gus Grubba committed
85
    QUdpSocket*             _telemetrySocket= nullptr;
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
#endif
    bool        _enableVideo                = true;
    bool        _enabled                    = true;
    bool        _linkConnected              = false;
    QTimer      _workTimer;
    QString     _linkVidFormat;
    int         _downlinkRSSI               = 0;
    int         _uplinkRSSI                 = 0;
    bool        _savedVideoState            = true;
    QVariant    _savedVideoSource;
    QVariant    _savedVideoUDP;
    QVariant    _savedAR;
    QString     _serialNumber;
    QString     _fwVersion;
};