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
/****************************************************************************
*
* (c) 2019 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.
*
****************************************************************************/
#include "MicrohardHandler.h"
#include "SettingsManager.h"
#include "QGCApplication.h"
#include "VideoManager.h"
QGC_LOGGING_CATEGORY(MicrohardLog, "MicrohardLog")
//-----------------------------------------------------------------------------
MicrohardHandler::MicrohardHandler(QObject* parent)
: QObject (parent)
{
}
//-----------------------------------------------------------------------------
MicrohardHandler::~MicrohardHandler()
{
close();
}
//-----------------------------------------------------------------------------
bool
MicrohardHandler::close()
{
bool res = false;
if(_tcpSocket) {
qCDebug(MicrohardLog) << "Close Microhard TCP socket on port" << _tcpSocket->localPort();
_tcpSocket->close();
_tcpSocket->deleteLater();
_tcpSocket = nullptr;
res = true;
}
return res;
}
//-----------------------------------------------------------------------------
void
MicrohardHandler::_start(uint16_t port, QHostAddress addr)
{
close();
_tcpSocket = new QTcpSocket();
QObject::connect(_tcpSocket, &QIODevice::readyRead, this, &MicrohardHandler::_readBytes);
qCDebug(MicrohardLog) << "Connecting to" << addr;
_tcpSocket->connectToHost(addr, port);
QTimer::singleShot(1000, this, &MicrohardHandler::_testConnection);
}
//-----------------------------------------------------------------------------
void
MicrohardHandler::_testConnection()
{
if(_tcpSocket) {
if(_tcpSocket->state() == QAbstractSocket::ConnectedState) {
qCDebug(MicrohardLog) << "Connected";
return;
}
emit connected(0);
close();
}
}