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
4b8834cc
Commit
4b8834cc
authored
Aug 15, 2020
by
DonLakeFlyer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
parent
4dec1b4c
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
15 additions
and
33 deletions
+15
-33
UDPLink.cc
src/comm/UDPLink.cc
+14
-15
UDPLink.h
src/comm/UDPLink.h
+1
-18
No files found.
src/comm/UDPLink.cc
View file @
4b8834cc
...
...
@@ -160,8 +160,12 @@ void UDPLink::_writeBytes(const QByteArray data)
return
;
}
emit
bytesSent
(
this
,
data
);
QMutexLocker
locker
(
&
_sessionTargetsMutex
);
// Send to all manually targeted systems
for
(
UDPCLient
*
target
:
_udpConfig
->
targetHosts
())
{
for
(
int
i
=
0
;
i
<
_udpConfig
->
targetHosts
().
count
();
i
++
)
{
UDPCLient
*
target
=
_udpConfig
->
targetHosts
()[
i
];
// Skip it if it's part of the session clients below
if
(
!
contains_target
(
_sessionTargets
,
target
->
address
,
target
->
port
))
{
_writeDataGram
(
data
,
target
);
...
...
@@ -219,11 +223,13 @@ void UDPLink::readBytes()
if
(
_isIpLocal
(
sender
))
{
asender
=
QHostAddress
(
QString
(
"127.0.0.1"
));
}
if
(
!
contains_target
(
_sessionTargets
,
asender
,
senderPort
))
{
QMutexLocker
locker
(
&
_sessionTargetsMutex
);
if
(
!
contains_target
(
_sessionTargets
,
asender
,
senderPort
))
{
qDebug
()
<<
"Adding target"
<<
asender
<<
senderPort
;
UDPCLient
*
target
=
new
UDPCLient
(
asender
,
senderPort
);
_sessionTargets
.
append
(
target
);
}
locker
.
unlock
();
}
//-- Send whatever is left
if
(
databuffer
.
size
())
{
...
...
@@ -280,16 +286,13 @@ bool UDPLink::_hardwareConnect()
if
(
_connectState
)
{
_socket
->
joinMulticastGroup
(
QHostAddress
(
"224.0.0.1"
));
//-- Make sure we have a large enough IO buffers
#ifdef __mobile__
int
bufferSizeMultiplier
=
1
;
_socket
->
setSocketOption
(
QAbstractSocket
::
SendBufferSizeSocketOption
,
64
*
1024
);
_socket
->
setSocketOption
(
QAbstractSocket
::
ReceiveBufferSizeSocketOption
,
128
*
1024
);
#else
int
bufferSizeMultiplier
=
4
;
_socket
->
setSocketOption
(
QAbstractSocket
::
SendBufferSizeSocketOption
,
256
*
1024
);
_socket
->
setSocketOption
(
QAbstractSocket
::
ReceiveBufferSizeSocketOption
,
512
*
1024
);
#endif
int
receiveBufferSize
=
_udpConfig
->
isTransmitOnly
()
?
0
:
512
*
1024
;
_socket
->
setSocketOption
(
QAbstractSocket
::
SendBufferSizeSocketOption
,
bufferSizeMultiplier
*
64
*
1024
);
_socket
->
setSocketOption
(
QAbstractSocket
::
ReceiveBufferSizeSocketOption
,
bufferSizeMultiplier
*
receiveBufferSize
);
_registerZeroconf
(
_udpConfig
->
localPort
(),
kZeroconfRegistration
);
QObject
::
connect
(
_socket
,
&
QUdpSocket
::
readyRead
,
this
,
&
UDPLink
::
readBytes
);
emit
connected
();
...
...
@@ -361,9 +364,7 @@ void UDPLink::_deregisterZeroconf()
//--------------------------------------------------------------------------
//-- UDPConfiguration
UDPConfiguration
::
UDPConfiguration
(
const
QString
&
name
)
:
LinkConfiguration
(
name
)
,
_transmitOnly
(
false
)
UDPConfiguration
::
UDPConfiguration
(
const
QString
&
name
)
:
LinkConfiguration
(
name
)
{
AutoConnectSettings
*
settings
=
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
autoConnectSettings
();
_localPort
=
settings
->
udpListenPort
()
->
rawValue
().
toInt
();
...
...
@@ -373,9 +374,7 @@ UDPConfiguration::UDPConfiguration(const QString& name)
}
}
UDPConfiguration
::
UDPConfiguration
(
UDPConfiguration
*
source
)
:
LinkConfiguration
(
source
)
,
_transmitOnly
(
false
)
UDPConfiguration
::
UDPConfiguration
(
UDPConfiguration
*
source
)
:
LinkConfiguration
(
source
)
{
_copyFrom
(
source
);
}
...
...
src/comm/UDPLink.h
View file @
4b8834cc
...
...
@@ -7,14 +7,6 @@
*
****************************************************************************/
/*!
* @file
* @brief UDP connection (server) for unmanned vehicles
* @author Lorenz Meier <mavteam@student.ethz.ch>
*
*/
#pragma once
#include <QString>
...
...
@@ -22,7 +14,7 @@
#include <QMap>
#include <QMutex>
#include <QUdpSocket>
#include <QMutex
Locker
>
#include <QMutex>
#include <QQueue>
#include <QByteArray>
...
...
@@ -111,14 +103,6 @@ public:
*/
void
setLocalPort
(
quint16
port
);
/*!
* @brief Set the UDP port to be transmit only. Receive buffer is set to zero.
*
*/
void
setTransmitOnly
(
bool
state
)
{
_transmitOnly
=
state
;
}
bool
isTransmitOnly
()
{
return
_transmitOnly
;
}
/*!
* @brief QML Interface
*/
...
...
@@ -150,7 +134,6 @@ private:
QList
<
UDPCLient
*>
_targetHosts
;
QStringList
_hostList
;
///< Exposed to QML
quint16
_localPort
;
bool
_transmitOnly
;
};
class
UDPLink
:
public
LinkInterface
...
...
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