OpalLink.h 1.59 KB
Newer Older
1 2
#ifndef OPALLINK_H
#define OPALLINK_H
Bryan Godbolt's avatar
Bryan Godbolt committed
3 4 5 6 7 8 9 10 11 12 13 14
/**
  Connection to OpalRT.  This class receives MAVLink packets as if it is a true link, but it
  interprets the packets internally, and calls the appropriate api functions.

  \author Bryan Godbolt <godbolt@ualberta.ca>
*/

#include <QMutex>

#include "LinkInterface.h"
#include "LinkManager.h"
#include "MG.h"
15 16 17

class OpalLink : public LinkInterface
{
Bryan Godbolt's avatar
Bryan Godbolt committed
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
    Q_OBJECT
    /* Connection management */

    int getId();
    QString getName();
    bool isConnected();

    /* Connection characteristics */


    qint64 getNominalDataRate();
    bool isFullDuplex();
    int getLinkQuality();
    qint64 getTotalUpstream();
    qint64 getCurrentUpstream();
    qint64 getMaxUpstream();
    qint64 getBitsSent();
    qint64 getBitsReceived();


Bryan Godbolt's avatar
Bryan Godbolt committed
38
    bool connect();
Bryan Godbolt's avatar
Bryan Godbolt committed
39 40


Bryan Godbolt's avatar
Bryan Godbolt committed
41
    bool disconnect();
Bryan Godbolt's avatar
Bryan Godbolt committed
42 43


Bryan Godbolt's avatar
Bryan Godbolt committed
44
    qint64 bytesAvailable();
Bryan Godbolt's avatar
Bryan Godbolt committed
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72

public slots:


    virtual void writeBytes(const char *bytes, qint64 length) = 0;


    virtual void readBytes(char *bytes, qint64 maxLength) = 0;

signals:

    void bytesReady(LinkInterface* link);


    void bytesReceived(LinkInterface* link, QByteArray data);


    void connected();


    void disconnected();


    void connected(bool connected);


    void nameChanged(QString name);

73 74
public:
    OpalLink();
Bryan Godbolt's avatar
Bryan Godbolt committed
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91

protected:
    QString name;
    int id;
    bool connectState;

    quint64 bitsSentTotal;
    quint64 bitsSentCurrent;
    quint64 bitsSentMax;
    quint64 bitsReceivedTotal;
    quint64 bitsReceivedCurrent;
    quint64 bitsReceivedMax;
    quint64 connectionStartTime;

    QMutex statisticsMutex;

    void setName(QString name);
92 93 94
};

#endif // OPALLINK_H