-
Notifications
You must be signed in to change notification settings - Fork 3
/
MAVLinkProtocol1.h
88 lines (73 loc) · 3.1 KB
/
MAVLinkProtocol1.h
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/*===================================================================
APM_PLANNER Open Source Ground Control Station
(c) 2014 APM_PLANNER PROJECT <http://www.diydrones.com>
This file is part of the APM_PLANNER project
APM_PLANNER is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
APM_PLANNER is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with APM_PLANNER. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/
/**
* @file
* @brief MAVLinkProtocol
* This class handles incoming mavlink_message_t packets.
* It will create a UAS class if one does not exist for a particular heartbeat systemid
* It will pass mavlink_message_t on to the UAS class for further parsing
*
* @author Michael Carpenter <malcom2073@gmail.com>
* @author QGROUNDCONTROL PROJECT - This code has GPLv3+ snippets from QGROUNDCONTROL, (c) 2009, 2010 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
*/
#ifndef NEW_MAVLINKPARSER_H
#define NEW_MAVLINKPARSER_H
#include <QThread>
#include "libs/mavlink/include/mavlink/v1.0/ardupilotmega/mavlink.h"
#include <QByteArray>
#include "LinkInterface.h"
#include <QFile>
#include "QGC.h"
#include <QDataStream>
#include "UASInterface1.h"
//#include "MAVLinkDecoder1.h"
class LinkManager;
class MAVLinkProtocol : public QObject
{
Q_OBJECT
public:
explicit MAVLinkProtocol();
~MAVLinkProtocol();
void setConnectionManager(LinkManager *manager) { m_connectionManager = manager; }
void sendMessage(mavlink_message_t) { }
void stopLogging();
bool startLogging(const QString& filename);
bool loggingEnabled() { return m_loggingEnabled; }
private:
int getSystemId() { return 252; }
int getComponentId() { return 1; }
bool m_loggingEnabled;
QFile *m_logfile;
bool m_throwAwayGCSPackets;
LinkManager *m_connectionManager;
bool versionMismatchIgnore;
QMap<int,qint64> totalReceiveCounter;
QMap<int,qint64> currReceiveCounter;
QMap<int,QMap<int,uint8_t> > lastIndex;
QMap<int,qint64> totalLossCounter;
QMap<int,qint64> currLossCounter;
bool m_enable_version_check;
signals:
void protocolStatusMessage(const QString& title, const QString& message);
void valueChanged(const int uasId, const QString& name, const QString& unit, const QVariant& value, const quint64 msec);
void textMessageReceived(int uasid, int componentid, int severity, const QString& text);
void receiveLossChanged(int id,float value);
void messageReceived(LinkInterface *link,mavlink_message_t message);
public slots:
void receiveBytes(LinkInterface* link, QByteArray b);
};
#endif // NEW_MAVLINKPARSER_H