Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
7b5ffc31
Commit
7b5ffc31
authored
Dec 28, 2013
by
Don Gagne
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cleanup of TCPLink from unit test findings
parent
b2331bdf
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
147 additions
and
139 deletions
+147
-139
qgroundcontrol.pro
qgroundcontrol.pro
+6
-2
SerialLink.cc
src/comm/SerialLink.cc
+2
-3
SerialLink.h
src/comm/SerialLink.h
+1
-4
TCPLink.cc
src/comm/TCPLink.cc
+89
-78
TCPLink.h
src/comm/TCPLink.h
+48
-51
QGCTCPLinkConfiguration.cc
src/ui/QGCTCPLinkConfiguration.cc
+1
-1
No files found.
qgroundcontrol.pro
View file @
7b5ffc31
...
@@ -751,13 +751,17 @@ CONFIG(debug, debug|release) {
...
@@ -751,13 +751,17 @@ CONFIG(debug, debug|release) {
src
/
qgcunittest
/
UASUnitTest
.
h
\
src
/
qgcunittest
/
UASUnitTest
.
h
\
src
/
qgcunittest
/
MockUASManager
.
h
\
src
/
qgcunittest
/
MockUASManager
.
h
\
src
/
qgcunittest
/
MockUAS
.
h
\
src
/
qgcunittest
/
MockUAS
.
h
\
src
/
qgcunittest
/
MockQGCUASParamManager
.
h
src
/
qgcunittest
/
MockQGCUASParamManager
.
h
\
src
/
qgcunittest
/
MultiSignalSpy
.
h
\
src
/
qgcunittest
/
TCPLinkTest
.
h
SOURCES
+=
\
SOURCES
+=
\
src
/
qgcunittest
/
UASUnitTest
.
cc
\
src
/
qgcunittest
/
UASUnitTest
.
cc
\
src
/
qgcunittest
/
MockUASManager
.
cc
\
src
/
qgcunittest
/
MockUASManager
.
cc
\
src
/
qgcunittest
/
MockUAS
.
cc
\
src
/
qgcunittest
/
MockUAS
.
cc
\
src
/
qgcunittest
/
MockQGCUASParamManager
.
cc
src
/
qgcunittest
/
MockQGCUASParamManager
.
cc
\
src
/
qgcunittest
/
MultiSignalSpy
.
cc
\
src
/
qgcunittest
/
TCPLinkTest
.
cc
}
}
#
Enable
Google
Earth
only
on
Mac
OS
and
Windows
with
Visual
Studio
compiler
#
Enable
Google
Earth
only
on
Mac
OS
and
Windows
with
Visual
Studio
compiler
...
...
src/comm/SerialLink.cc
View file @
7b5ffc31
...
@@ -413,8 +413,7 @@ bool SerialLink::hardwareConnect()
...
@@ -413,8 +413,7 @@ bool SerialLink::hardwareConnect()
}
}
QObject
::
connect
(
m_port
,
SIGNAL
(
aboutToClose
()),
this
,
SIGNAL
(
disconnected
()));
QObject
::
connect
(
m_port
,
SIGNAL
(
aboutToClose
()),
this
,
SIGNAL
(
disconnected
()));
QObject
::
connect
(
m_port
,
SIGNAL
(
error
(
SerialLinkPortError_t
)),
QObject
::
connect
(
m_port
,
SIGNAL
(
error
(
QSerialPort
::
SerialPortError
)),
this
,
SLOT
(
linkError
(
QSerialPort
::
SerialPortError
)));
this
,
SLOT
(
linkError
(
SerialLinkPortError_t
)));
// port->setCommTimeouts(QSerialPort::CtScheme_NonBlockingRead);
// port->setCommTimeouts(QSerialPort::CtScheme_NonBlockingRead);
...
@@ -444,7 +443,7 @@ bool SerialLink::hardwareConnect()
...
@@ -444,7 +443,7 @@ bool SerialLink::hardwareConnect()
return
true
;
// successful connection
return
true
;
// successful connection
}
}
void
SerialLink
::
linkError
(
SerialLinkPortError_t
error
)
void
SerialLink
::
linkError
(
QSerialPort
::
SerialPortError
error
)
{
{
qDebug
()
<<
error
;
qDebug
()
<<
error
;
}
}
...
...
src/comm/SerialLink.h
View file @
7b5ffc31
...
@@ -40,9 +40,6 @@ This file is part of the QGROUNDCONTROL project
...
@@ -40,9 +40,6 @@ This file is part of the QGROUNDCONTROL project
#include <configuration.h>
#include <configuration.h>
#include "SerialLinkInterface.h"
#include "SerialLinkInterface.h"
// convenience type for passing errors
typedef
QSerialPort
::
SerialPortError
SerialLinkPortError_t
;
/**
/**
* @brief The SerialLink class provides cross-platform access to serial links.
* @brief The SerialLink class provides cross-platform access to serial links.
* It takes care of the link management and provides a common API to higher
* It takes care of the link management and provides a common API to higher
...
@@ -137,7 +134,7 @@ public slots:
...
@@ -137,7 +134,7 @@ public slots:
bool
connect
();
bool
connect
();
bool
disconnect
();
bool
disconnect
();
void
linkError
(
SerialLinkPortError_t
error
);
void
linkError
(
QSerialPort
::
SerialPortError
error
);
protected:
protected:
quint64
m_bytesRead
;
quint64
m_bytesRead
;
...
...
src/comm/TCPLink.cc
View file @
7b5ffc31
...
@@ -21,13 +21,6 @@
...
@@ -21,13 +21,6 @@
======================================================================*/
======================================================================*/
/**
* @file
* @brief Definition of TCP connection (server) for unmanned vehicles
* @author Lorenz Meier <mavteam@student.ethz.ch>
*
*/
#include <QTimer>
#include <QTimer>
#include <QList>
#include <QList>
#include <QDebug>
#include <QDebug>
...
@@ -37,26 +30,29 @@
...
@@ -37,26 +30,29 @@
#include "LinkManager.h"
#include "LinkManager.h"
#include "QGC.h"
#include "QGC.h"
#include <QHostInfo>
#include <QHostInfo>
#include <QSignalSpy>
TCPLink
::
TCPLink
(
QHostAddress
hostAddress
,
quint16
socketPort
)
:
/// @file
host
(
hostAddress
),
/// @brief TCP link type for SITL support
port
(
socketPort
),
///
socket
(
NULL
),
/// @author Don Gagne <don@thegagnes.com>
socketIsConnected
(
false
)
TCPLink
::
TCPLink
(
QHostAddress
hostAddress
,
quint16
socketPort
)
:
_hostAddress
(
hostAddress
),
_port
(
socketPort
),
_socket
(
NULL
),
_socketIsConnected
(
false
)
{
{
// Set unique ID and add link to the list of links
_linkId
=
getNextLinkId
();
this
->
id
=
getNextLinkId
();
_resetName
();
this
->
name
=
tr
(
"TCP Link (port:%1)"
).
arg
(
this
->
port
);
emit
nameChanged
(
this
->
name
);
qDebug
()
<<
"TCP Created "
<<
this
->
name
;
qDebug
()
<<
"TCP Created "
<<
_
name
;
}
}
TCPLink
::~
TCPLink
()
TCPLink
::~
TCPLink
()
{
{
disconnect
();
disconnect
();
this
->
deleteLater
();
deleteLater
();
}
}
void
TCPLink
::
run
()
void
TCPLink
::
run
()
...
@@ -64,45 +60,47 @@ void TCPLink::run()
...
@@ -64,45 +60,47 @@ void TCPLink::run()
exec
();
exec
();
}
}
void
TCPLink
::
set
Address
(
const
QString
&
text
)
void
TCPLink
::
set
HostAddress
(
QHostAddress
hostAddress
)
{
{
setAddress
(
QHostAddress
(
text
));
bool
reconnect
=
false
;
}
void
TCPLink
::
setAddress
(
QHostAddress
host
)
if
(
this
->
isConnected
())
{
{
bool
reconnect
(
false
);
if
(
this
->
isConnected
())
{
disconnect
();
disconnect
();
reconnect
=
true
;
reconnect
=
true
;
}
}
this
->
host
=
host
;
if
(
reconnect
)
_hostAddress
=
hostAddress
;
{
_resetName
();
if
(
reconnect
)
{
connect
();
connect
();
}
}
}
}
void
TCPLink
::
setHostAddress
(
const
QString
&
hostAddress
)
{
setHostAddress
(
QHostAddress
(
hostAddress
));
}
void
TCPLink
::
setPort
(
int
port
)
void
TCPLink
::
setPort
(
int
port
)
{
{
bool
reconnect
(
false
)
;
bool
reconnect
=
false
;
if
(
this
->
isConnected
())
{
if
(
this
->
isConnected
())
{
disconnect
();
disconnect
();
reconnect
=
true
;
reconnect
=
true
;
}
}
this
->
port
=
port
;
this
->
name
=
tr
(
"TCP Link (port:%1)"
).
arg
(
this
->
port
)
;
_port
=
port
;
emit
nameChanged
(
this
->
name
);
_resetName
(
);
if
(
reconnect
)
{
if
(
reconnect
)
{
connect
();
connect
();
}
}
}
}
#ifdef TCPLINK_READWRITE_DEBUG
#ifdef TCPLINK_READWRITE_DEBUG
void
TCPLink
::
writeDebugBytes
(
const
char
*
data
,
qint16
size
)
void
TCPLink
::
_
writeDebugBytes
(
const
char
*
data
,
qint16
size
)
{
{
QString
bytes
;
QString
bytes
;
QString
ascii
;
QString
ascii
;
...
@@ -119,7 +117,7 @@ void TCPLink::writeDebugBytes(const char *data, qint16 size)
...
@@ -119,7 +117,7 @@ void TCPLink::writeDebugBytes(const char *data, qint16 size)
ascii
.
append
(
219
);
ascii
.
append
(
219
);
}
}
}
}
qDebug
()
<<
"Sent"
<<
size
<<
"bytes to"
<<
host
.
toString
()
<<
":"
<<
port
<<
"data:"
;
qDebug
()
<<
"Sent"
<<
size
<<
"bytes to"
<<
_hostAddress
.
toString
()
<<
":"
<<
_
port
<<
"data:"
;
qDebug
()
<<
bytes
;
qDebug
()
<<
bytes
;
qDebug
()
<<
"ASCII:"
<<
ascii
;
qDebug
()
<<
"ASCII:"
<<
ascii
;
}
}
...
@@ -128,9 +126,9 @@ void TCPLink::writeDebugBytes(const char *data, qint16 size)
...
@@ -128,9 +126,9 @@ void TCPLink::writeDebugBytes(const char *data, qint16 size)
void
TCPLink
::
writeBytes
(
const
char
*
data
,
qint64
size
)
void
TCPLink
::
writeBytes
(
const
char
*
data
,
qint64
size
)
{
{
#ifdef TCPLINK_READWRITE_DEBUG
#ifdef TCPLINK_READWRITE_DEBUG
writeDebugBytes
(
data
,
size
);
_
writeDebugBytes
(
data
,
size
);
#endif
#endif
socket
->
write
(
data
,
size
);
_
socket
->
write
(
data
,
size
);
// Log the amount and time written out for future data rate calculations.
// Log the amount and time written out for future data rate calculations.
QMutexLocker
dataRateLocker
(
&
dataRateMutex
);
QMutexLocker
dataRateLocker
(
&
dataRateMutex
);
...
@@ -145,14 +143,14 @@ void TCPLink::writeBytes(const char* data, qint64 size)
...
@@ -145,14 +143,14 @@ void TCPLink::writeBytes(const char* data, qint64 size)
**/
**/
void
TCPLink
::
readBytes
()
void
TCPLink
::
readBytes
()
{
{
qint64
byteCount
=
socket
->
bytesAvailable
();
qint64
byteCount
=
_
socket
->
bytesAvailable
();
if
(
byteCount
)
if
(
byteCount
)
{
{
QByteArray
buffer
;
QByteArray
buffer
;
buffer
.
resize
(
byteCount
);
buffer
.
resize
(
byteCount
);
socket
->
read
(
buffer
.
data
(),
buffer
.
size
());
_
socket
->
read
(
buffer
.
data
(),
buffer
.
size
());
emit
bytesReceived
(
this
,
buffer
);
emit
bytesReceived
(
this
,
buffer
);
...
@@ -166,7 +164,6 @@ void TCPLink::readBytes()
...
@@ -166,7 +164,6 @@ void TCPLink::readBytes()
}
}
}
}
/**
/**
* @brief Get the number of bytes to read.
* @brief Get the number of bytes to read.
*
*
...
@@ -174,7 +171,7 @@ void TCPLink::readBytes()
...
@@ -174,7 +171,7 @@ void TCPLink::readBytes()
**/
**/
qint64
TCPLink
::
bytesAvailable
()
qint64
TCPLink
::
bytesAvailable
()
{
{
return
socket
->
bytesAvailable
();
return
_
socket
->
bytesAvailable
();
}
}
/**
/**
...
@@ -184,15 +181,18 @@ qint64 TCPLink::bytesAvailable()
...
@@ -184,15 +181,18 @@ qint64 TCPLink::bytesAvailable()
**/
**/
bool
TCPLink
::
disconnect
()
bool
TCPLink
::
disconnect
()
{
{
this
->
quit
();
quit
();
this
->
wait
();
wait
();
if
(
socket
)
if
(
_
socket
)
{
{
socket
->
disconnect
();
_socket
->
disconnectFromHost
();
socketIsConnected
=
false
;
_socketIsConnected
=
false
;
delete
socket
;
delete
_socket
;
socket
=
NULL
;
_socket
=
NULL
;
emit
disconnected
();
emit
connected
(
false
);
}
}
return
true
;
return
true
;
...
@@ -205,42 +205,54 @@ bool TCPLink::disconnect()
...
@@ -205,42 +205,54 @@ bool TCPLink::disconnect()
**/
**/
bool
TCPLink
::
connect
()
bool
TCPLink
::
connect
()
{
{
if
(
this
->
isRunning
())
if
(
isRunning
())
{
{
this
->
quit
();
quit
();
this
->
wait
();
wait
();
}
}
bool
connected
=
this
->
hardwareConnect
();
bool
connected
=
_hardwareConnect
();
if
(
connected
)
{
start
(
HighPriority
);
start
(
HighPriority
);
}
return
connected
;
return
connected
;
}
}
bool
TCPLink
::
hardwareConnect
(
void
)
bool
TCPLink
::
_
hardwareConnect
(
void
)
{
{
socket
=
new
QTcpSocket
();
Q_ASSERT
(
_socket
==
NULL
);
_socket
=
new
QTcpSocket
();
socket
->
connectToHost
(
host
,
port
);
QSignalSpy
errorSpy
(
_socket
,
SIGNAL
(
error
(
QAbstractSocket
::
SocketError
))
);
QObject
::
connect
(
socket
,
SIGNAL
(
readyRead
()),
this
,
SLOT
(
readBytes
()));
_socket
->
connectToHost
(
_hostAddress
,
_port
);
QObject
::
connect
(
socket
,
SIGNAL
(
error
(
QAbstractSocket
::
SocketError
)),
this
,
SLOT
(
socketError
(
QAbstractSocket
::
SocketError
)));
QObject
::
connect
(
_socket
,
SIGNAL
(
readyRead
()),
this
,
SLOT
(
readBytes
()));
QObject
::
connect
(
_socket
,
SIGNAL
(
error
(
QAbstractSocket
::
SocketError
)),
this
,
SLOT
(
_socketError
(
QAbstractSocket
::
SocketError
)));
// Give the socket a second to connect to the other side otherwise error out
// Give the socket a second to connect to the other side otherwise error out
if
(
!
socket
->
waitForConnected
(
1000
))
if
(
!
_
socket
->
waitForConnected
(
1000
))
{
{
emit
communicationError
(
getName
(),
"connection failed"
);
// Whether a failed connection emits an error signal or not is platform specific.
// So in cases where it is not emitted, we emit one ourselves.
if
(
errorSpy
.
count
()
==
0
)
{
emit
communicationError
(
getName
(),
"Connection failed"
);
}
delete
_socket
;
_socket
=
NULL
;
return
false
;
return
false
;
}
}
socketIsConnected
=
true
;
_
socketIsConnected
=
true
;
emit
connected
(
true
);
emit
connected
(
true
);
emit
connected
();
return
true
;
return
true
;
}
}
void
TCPLink
::
socketError
(
QAbstractSocket
::
SocketError
socketError
)
void
TCPLink
::
_
socketError
(
QAbstractSocket
::
SocketError
socketError
)
{
{
Q_UNUSED
(
socketError
);
Q_UNUSED
(
socketError
);
emit
communicationError
(
getName
(),
"Error on socket: "
+
socket
->
errorString
());
emit
communicationError
(
getName
(),
"Error on socket: "
+
_
socket
->
errorString
());
}
}
/**
/**
...
@@ -250,26 +262,19 @@ void TCPLink::socketError(QAbstractSocket::SocketError socketError)
...
@@ -250,26 +262,19 @@ void TCPLink::socketError(QAbstractSocket::SocketError socketError)
**/
**/
bool
TCPLink
::
isConnected
()
const
bool
TCPLink
::
isConnected
()
const
{
{
return
socketIsConnected
;
return
_
socketIsConnected
;
}
}
int
TCPLink
::
getId
()
const
int
TCPLink
::
getId
()
const
{
{
return
i
d
;
return
_linkI
d
;
}
}
QString
TCPLink
::
getName
()
const
QString
TCPLink
::
getName
()
const
{
{
return
name
;
return
_
name
;
}
}
void
TCPLink
::
setName
(
QString
name
)
{
this
->
name
=
name
;
emit
nameChanged
(
this
->
name
);
}
qint64
TCPLink
::
getConnectionSpeed
()
const
qint64
TCPLink
::
getConnectionSpeed
()
const
{
{
return
54000000
;
// 54 Mbit
return
54000000
;
// 54 Mbit
...
@@ -284,3 +289,9 @@ qint64 TCPLink::getCurrentOutDataRate() const
...
@@ -284,3 +289,9 @@ qint64 TCPLink::getCurrentOutDataRate() const
{
{
return
0
;
return
0
;
}
}
void
TCPLink
::
_resetName
(
void
)
{
_name
=
QString
(
"TCP Link (host:%1 port:%2)"
).
arg
(
_hostAddress
.
toString
()).
arg
(
_port
);
emit
nameChanged
(
_name
);
}
\ No newline at end of file
src/comm/TCPLink.h
View file @
7b5ffc31
...
@@ -21,12 +21,10 @@
...
@@ -21,12 +21,10 @@
======================================================================*/
======================================================================*/
/**
/// @file
* @file
/// @brief TCP link type for SITL support
* @brief TCP connection (server) for unmanned vehicles
///
* @author Lorenz Meier <mavteam@student.ethz.ch>
/// @author Don Gagne <don@thegagnes.com>
*
*/
#ifndef TCPLINK_H
#ifndef TCPLINK_H
#define TCPLINK_H
#define TCPLINK_H
...
@@ -50,66 +48,65 @@ public:
...
@@ -50,66 +48,65 @@ public:
TCPLink
(
QHostAddress
hostAddress
=
QHostAddress
::
LocalHost
,
quint16
socketPort
=
5760
);
TCPLink
(
QHostAddress
hostAddress
=
QHostAddress
::
LocalHost
,
quint16
socketPort
=
5760
);
~
TCPLink
();
~
TCPLink
();
void
requestReset
()
{
}
void
setHostAddress
(
QHostAddress
hostAddress
);
bool
isConnected
()
const
;
QHostAddress
getHostAddress
(
void
)
const
{
return
_hostAddress
;
}
qint64
bytesAvailable
();
quint16
getPort
(
void
)
const
{
return
_port
;
}
int
getPort
()
const
{
QTcpSocket
*
getSocket
(
void
)
{
return
_socket
;
}
return
port
;
}
// LinkInterface methods
QHostAddress
getHostAddress
()
const
{
virtual
int
getId
(
void
)
const
;
return
host
;
virtual
QString
getName
(
void
)
const
;
}
virtual
bool
isConnected
(
void
)
const
;
virtual
bool
connect
(
void
);
QString
getName
()
const
;
virtual
bool
disconnect
(
void
);
int
getBaudRate
()
const
;
virtual
qint64
bytesAvailable
(
void
);
int
getBaudRateType
()
const
;
virtual
void
requestReset
(
void
)
{};
int
getFlowType
()
const
;
int
getParityType
()
const
;
int
getDataBitsType
()
const
;
int
getStopBitsType
()
const
;
// Extensive statistics for scientific purposes
// Extensive statistics for scientific purposes
qint64
getConnectionSpeed
()
const
;
qint64
getConnectionSpeed
()
const
;
qint64
getCurrentInDataRate
()
const
;
qint64
getCurrentInDataRate
()
const
;
qint64
getCurrentOutDataRate
()
const
;
qint64
getCurrentOutDataRate
()
const
;
void
run
();
int
getId
()
const
;
public
slots
:
public
slots
:
void
set
Address
(
QHostAddress
host
);
void
set
HostAddress
(
const
QString
&
hostAddress
);
void
setPort
(
int
port
);
void
setPort
(
int
port
);
void
readBytes
();
void
writeBytes
(
const
char
*
data
,
qint64
length
);
bool
connect
();
bool
disconnect
();
void
socketError
(
QAbstractSocket
::
SocketError
socketError
);
void
setAddress
(
const
QString
&
text
);
// From LinkInterface
virtual
void
writeBytes
(
const
char
*
data
,
qint64
length
);
protected:
protected
slots
:
QString
name
;
void
_socketError
(
QAbstractSocket
::
SocketError
socketError
);
QHostAddress
host
;
quint16
port
;
int
id
;
QTcpSocket
*
socket
;
bool
socketIsConnected
;
QMutex
dataMutex
;
// From LinkInterface
virtual
void
readBytes
(
void
);
void
setName
(
QString
name
);
protected:
// From LinkInterface->QThread
virtual
void
run
(
void
);
private:
private:
bool
hardwareConnect
(
void
);
void
_resetName
(
void
);
bool
_hardwareConnect
(
void
);
#ifdef TCPLINK_READWRITE_DEBUG
#ifdef TCPLINK_READWRITE_DEBUG
void
writeDebugBytes
(
const
char
*
data
,
qint16
size
);
void
_
writeDebugBytes
(
const
char
*
data
,
qint16
size
);
#endif
#endif
signals:
QString
_name
;
//Signals are defined by LinkInterface
QHostAddress
_hostAddress
;
quint16
_port
;
int
_linkId
;
QTcpSocket
*
_socket
;
bool
_socketIsConnected
;
quint64
_bitsSentTotal
;
quint64
_bitsSentCurrent
;
quint64
_bitsSentMax
;
quint64
_bitsReceivedTotal
;
quint64
_bitsReceivedCurrent
;
quint64
_bitsReceivedMax
;
quint64
_connectionStartTime
;
QMutex
_statisticsMutex
;
};
};
#endif // TCPLINK_H
#endif // TCPLINK_H
src/ui/QGCTCPLinkConfiguration.cc
View file @
7b5ffc31
...
@@ -14,7 +14,7 @@ QGCTCPLinkConfiguration::QGCTCPLinkConfiguration(TCPLink* link, QWidget *parent)
...
@@ -14,7 +14,7 @@ QGCTCPLinkConfiguration::QGCTCPLinkConfiguration(TCPLink* link, QWidget *parent)
QString
addr
=
link
->
getHostAddress
().
toString
();
QString
addr
=
link
->
getHostAddress
().
toString
();
ui
->
hostAddressLineEdit
->
setText
(
addr
);
ui
->
hostAddressLineEdit
->
setText
(
addr
);
connect
(
ui
->
portSpinBox
,
SIGNAL
(
valueChanged
(
int
)),
link
,
SLOT
(
setPort
(
int
)));
connect
(
ui
->
portSpinBox
,
SIGNAL
(
valueChanged
(
int
)),
link
,
SLOT
(
setPort
(
int
)));
connect
(
ui
->
hostAddressLineEdit
,
SIGNAL
(
textChanged
(
const
QString
&
)),
link
,
SLOT
(
setAddress
(
const
QString
&
)));
connect
(
ui
->
hostAddressLineEdit
,
SIGNAL
(
textChanged
(
const
QString
&
)),
link
,
SLOT
(
set
Host
Address
(
const
QString
&
)));
}
}
QGCTCPLinkConfiguration
::~
QGCTCPLinkConfiguration
()
QGCTCPLinkConfiguration
::~
QGCTCPLinkConfiguration
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment