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
04a290e8
Commit
04a290e8
authored
Jun 12, 2017
by
Don Gagne
Committed by
GitHub
Jun 12, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #5285 from DonLakeFlyer/ConfigurableUDP
Allow UDP auto connect to be controlled through settings
parents
8332d927
32fc12c5
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
83 additions
and
13 deletions
+83
-13
AutoConnect.SettingsGroup.json
src/Settings/AutoConnect.SettingsGroup.json
+18
-0
AutoConnectSettings.cc
src/Settings/AutoConnectSettings.cc
+39
-6
AutoConnectSettings.h
src/Settings/AutoConnectSettings.h
+12
-0
LinkManager.cc
src/comm/LinkManager.cc
+1
-1
UDPLink.cc
src/comm/UDPLink.cc
+13
-3
UDPLink.h
src/comm/UDPLink.h
+0
-3
No files found.
src/Settings/AutoConnect.SettingsGroup.json
View file @
04a290e8
...
@@ -40,5 +40,23 @@
...
@@ -40,5 +40,23 @@
"longDescription"
:
"If this option is enabled GroundControl will automatically connect to a LibrePilot board which is connected via USB."
,
"longDescription"
:
"If this option is enabled GroundControl will automatically connect to a LibrePilot board which is connected via USB."
,
"type"
:
"bool"
,
"type"
:
"bool"
,
"defaultValue"
:
true
"defaultValue"
:
true
},
{
"name"
:
"AutoconnectUDPListenPort"
,
"shortDescription"
:
"UDP port for autoconnect"
,
"type"
:
"uint32"
,
"defaultValue"
:
14550
},
{
"name"
:
"AutoconnectUDPTargetHostIP"
,
"shortDescription"
:
"UDP target host IP for autoconnect"
,
"type"
:
"string"
,
"defaultValue"
:
""
},
{
"name"
:
"AutoconnectUDPTargetHostPort"
,
"shortDescription"
:
"UDP target host port for autoconnect"
,
"type"
:
"uint32"
,
"defaultValue"
:
14550
}
}
]
]
src/Settings/AutoConnectSettings.cc
View file @
04a290e8
...
@@ -21,17 +21,23 @@ const char* AutoConnectSettings:: autoConnectSiKRadioSettingsName = "Autocon
...
@@ -21,17 +21,23 @@ const char* AutoConnectSettings:: autoConnectSiKRadioSettingsName = "Autocon
const
char
*
AutoConnectSettings
::
autoConnectPX4FlowSettingsName
=
"AutoconnectPX4Flow"
;
const
char
*
AutoConnectSettings
::
autoConnectPX4FlowSettingsName
=
"AutoconnectPX4Flow"
;
const
char
*
AutoConnectSettings
::
autoConnectRTKGPSSettingsName
=
"AutoconnectRTKGPS"
;
const
char
*
AutoConnectSettings
::
autoConnectRTKGPSSettingsName
=
"AutoconnectRTKGPS"
;
const
char
*
AutoConnectSettings
::
autoConnectLibrePilotSettingsName
=
"AutoconnectLibrePilot"
;
const
char
*
AutoConnectSettings
::
autoConnectLibrePilotSettingsName
=
"AutoconnectLibrePilot"
;
const
char
*
AutoConnectSettings
::
udpListenPortName
=
"AutoconnectUDPListenPort"
;
const
char
*
AutoConnectSettings
::
udpTargetHostIPName
=
"AutoconnectUDPTargetHostIP"
;
const
char
*
AutoConnectSettings
::
udpTargetHostPortName
=
"AutoconnectUDPTargetHostPort"
;
const
char
*
AutoConnectSettings
::
autoConnectSettingsGroupName
=
"AutoConnect"
;
const
char
*
AutoConnectSettings
::
autoConnectSettingsGroupName
=
"AutoConnect"
;
AutoConnectSettings
::
AutoConnectSettings
(
QObject
*
parent
)
AutoConnectSettings
::
AutoConnectSettings
(
QObject
*
parent
)
:
SettingsGroup
(
autoConnectSettingsGroupName
,
_settingsGroup
,
parent
)
:
SettingsGroup
(
autoConnectSettingsGroupName
,
_settingsGroup
,
parent
)
,
_autoConnectUDPFact
(
NULL
)
,
_autoConnectUDPFact
(
NULL
)
,
_autoConnectPixhawkFact
(
NULL
)
,
_autoConnectPixhawkFact
(
NULL
)
,
_autoConnectSiKRadioFact
(
NULL
)
,
_autoConnectSiKRadioFact
(
NULL
)
,
_autoConnectPX4FlowFact
(
NULL
)
,
_autoConnectPX4FlowFact
(
NULL
)
,
_autoConnectRTKGPSFact
(
NULL
)
,
_autoConnectRTKGPSFact
(
NULL
)
,
_autoConnectLibrePilotFact
(
NULL
)
,
_autoConnectLibrePilotFact
(
NULL
)
,
_udpListenPortFact
(
NULL
)
,
_udpTargetHostIPFact
(
NULL
)
,
_udpTargetHostPortFact
(
NULL
)
{
{
QQmlEngine
::
setObjectOwnership
(
this
,
QQmlEngine
::
CppOwnership
);
QQmlEngine
::
setObjectOwnership
(
this
,
QQmlEngine
::
CppOwnership
);
qmlRegisterUncreatableType
<
AutoConnectSettings
>
(
"QGroundControl.SettingsManager"
,
1
,
0
,
"AutoConnectSettings"
,
"Reference only"
);
qmlRegisterUncreatableType
<
AutoConnectSettings
>
(
"QGroundControl.SettingsManager"
,
1
,
0
,
"AutoConnectSettings"
,
"Reference only"
);
...
@@ -90,3 +96,30 @@ Fact* AutoConnectSettings::autoConnectLibrePilot(void)
...
@@ -90,3 +96,30 @@ Fact* AutoConnectSettings::autoConnectLibrePilot(void)
return
_autoConnectLibrePilotFact
;
return
_autoConnectLibrePilotFact
;
}
}
Fact
*
AutoConnectSettings
::
udpListenPort
(
void
)
{
if
(
!
_udpListenPortFact
)
{
_udpListenPortFact
=
_createSettingsFact
(
udpListenPortName
);
}
return
_udpListenPortFact
;
}
Fact
*
AutoConnectSettings
::
udpTargetHostIP
(
void
)
{
if
(
!
_udpTargetHostIPFact
)
{
_udpTargetHostIPFact
=
_createSettingsFact
(
udpTargetHostIPName
);
}
return
_udpTargetHostIPFact
;
}
Fact
*
AutoConnectSettings
::
udpTargetHostPort
(
void
)
{
if
(
!
_udpTargetHostPortFact
)
{
_udpTargetHostPortFact
=
_createSettingsFact
(
udpTargetHostPortName
);
}
return
_udpTargetHostPortFact
;
}
src/Settings/AutoConnectSettings.h
View file @
04a290e8
...
@@ -25,6 +25,9 @@ public:
...
@@ -25,6 +25,9 @@ public:
Q_PROPERTY
(
Fact
*
autoConnectPX4Flow
READ
autoConnectPX4Flow
CONSTANT
)
Q_PROPERTY
(
Fact
*
autoConnectPX4Flow
READ
autoConnectPX4Flow
CONSTANT
)
Q_PROPERTY
(
Fact
*
autoConnectRTKGPS
READ
autoConnectRTKGPS
CONSTANT
)
Q_PROPERTY
(
Fact
*
autoConnectRTKGPS
READ
autoConnectRTKGPS
CONSTANT
)
Q_PROPERTY
(
Fact
*
autoConnectLibrePilot
READ
autoConnectLibrePilot
CONSTANT
)
Q_PROPERTY
(
Fact
*
autoConnectLibrePilot
READ
autoConnectLibrePilot
CONSTANT
)
Q_PROPERTY
(
Fact
*
udpListenPort
READ
udpListenPort
CONSTANT
)
///< Port to listen on for UDP autoconnect
Q_PROPERTY
(
Fact
*
udpTargetHostIP
READ
udpTargetHostIP
CONSTANT
)
///< Target host IP for UDP autoconnect, empty string for none
Q_PROPERTY
(
Fact
*
udpTargetHostPort
READ
udpTargetHostPort
CONSTANT
)
///< Target host post for UDP autoconnect
Fact
*
autoConnectUDP
(
void
);
Fact
*
autoConnectUDP
(
void
);
Fact
*
autoConnectPixhawk
(
void
);
Fact
*
autoConnectPixhawk
(
void
);
...
@@ -32,6 +35,9 @@ public:
...
@@ -32,6 +35,9 @@ public:
Fact
*
autoConnectPX4Flow
(
void
);
Fact
*
autoConnectPX4Flow
(
void
);
Fact
*
autoConnectRTKGPS
(
void
);
Fact
*
autoConnectRTKGPS
(
void
);
Fact
*
autoConnectLibrePilot
(
void
);
Fact
*
autoConnectLibrePilot
(
void
);
Fact
*
udpListenPort
(
void
);
Fact
*
udpTargetHostIP
(
void
);
Fact
*
udpTargetHostPort
(
void
);
static
const
char
*
autoConnectSettingsGroupName
;
static
const
char
*
autoConnectSettingsGroupName
;
...
@@ -41,6 +47,9 @@ public:
...
@@ -41,6 +47,9 @@ public:
static
const
char
*
autoConnectPX4FlowSettingsName
;
static
const
char
*
autoConnectPX4FlowSettingsName
;
static
const
char
*
autoConnectRTKGPSSettingsName
;
static
const
char
*
autoConnectRTKGPSSettingsName
;
static
const
char
*
autoConnectLibrePilotSettingsName
;
static
const
char
*
autoConnectLibrePilotSettingsName
;
static
const
char
*
udpListenPortName
;
static
const
char
*
udpTargetHostIPName
;
static
const
char
*
udpTargetHostPortName
;
private:
private:
SettingsFact
*
_autoConnectUDPFact
;
SettingsFact
*
_autoConnectUDPFact
;
...
@@ -49,6 +58,9 @@ private:
...
@@ -49,6 +58,9 @@ private:
SettingsFact
*
_autoConnectPX4FlowFact
;
SettingsFact
*
_autoConnectPX4FlowFact
;
SettingsFact
*
_autoConnectRTKGPSFact
;
SettingsFact
*
_autoConnectRTKGPSFact
;
SettingsFact
*
_autoConnectLibrePilotFact
;
SettingsFact
*
_autoConnectLibrePilotFact
;
SettingsFact
*
_udpListenPortFact
;
SettingsFact
*
_udpTargetHostIPFact
;
SettingsFact
*
_udpTargetHostPortFact
;
static
const
char
*
_settingsGroup
;
static
const
char
*
_settingsGroup
;
};
};
...
...
src/comm/LinkManager.cc
View file @
04a290e8
...
@@ -459,8 +459,8 @@ void LinkManager::_updateAutoConnectLinks(void)
...
@@ -459,8 +459,8 @@ void LinkManager::_updateAutoConnectLinks(void)
}
}
if
(
!
foundUDP
&&
_autoConnectSettings
->
autoConnectUDP
()
->
rawValue
().
toBool
())
{
if
(
!
foundUDP
&&
_autoConnectSettings
->
autoConnectUDP
()
->
rawValue
().
toBool
())
{
qCDebug
(
LinkManagerLog
)
<<
"New auto-connect UDP port added"
;
qCDebug
(
LinkManagerLog
)
<<
"New auto-connect UDP port added"
;
// Default UDPConfiguration is set up for autoconnect
UDPConfiguration
*
udpConfig
=
new
UDPConfiguration
(
_defaultUPDLinkName
);
UDPConfiguration
*
udpConfig
=
new
UDPConfiguration
(
_defaultUPDLinkName
);
udpConfig
->
setLocalPort
(
QGC_UDP_LOCAL_PORT
);
udpConfig
->
setDynamic
(
true
);
udpConfig
->
setDynamic
(
true
);
SharedLinkConfigurationPointer
config
=
addConfiguration
(
udpConfig
);
SharedLinkConfigurationPointer
config
=
addConfiguration
(
udpConfig
);
createConnectedLink
(
config
);
createConnectedLink
(
config
);
...
...
src/comm/UDPLink.cc
View file @
04a290e8
...
@@ -23,10 +23,13 @@
...
@@ -23,10 +23,13 @@
#include <QNetworkProxy>
#include <QNetworkProxy>
#include <QNetworkInterface>
#include <QNetworkInterface>
#include <iostream>
#include <iostream>
#include <QHostInfo>
#include "UDPLink.h"
#include "UDPLink.h"
#include "QGC.h"
#include "QGC.h"
#include <QHostInfo>
#include "QGCApplication.h"
#include "SettingsManager.h"
#include "AutoConnectSettings.h"
#define REMOVE_GONE_HOSTS 0
#define REMOVE_GONE_HOSTS 0
...
@@ -329,7 +332,12 @@ void UDPLink::_deregisterZeroconf()
...
@@ -329,7 +332,12 @@ void UDPLink::_deregisterZeroconf()
UDPConfiguration
::
UDPConfiguration
(
const
QString
&
name
)
:
LinkConfiguration
(
name
)
UDPConfiguration
::
UDPConfiguration
(
const
QString
&
name
)
:
LinkConfiguration
(
name
)
{
{
_localPort
=
QGC_UDP_LOCAL_PORT
;
AutoConnectSettings
*
settings
=
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
autoConnectSettings
();
_localPort
=
settings
->
udpListenPort
()
->
rawValue
().
toInt
();
QString
targetHostIP
=
settings
->
udpTargetHostIP
()
->
rawValue
().
toString
();
if
(
!
targetHostIP
.
isEmpty
())
{
addHost
(
targetHostIP
,
settings
->
udpTargetHostPort
()
->
rawValue
().
toInt
());
}
}
}
UDPConfiguration
::
UDPConfiguration
(
UDPConfiguration
*
source
)
:
LinkConfiguration
(
source
)
UDPConfiguration
::
UDPConfiguration
(
UDPConfiguration
*
source
)
:
LinkConfiguration
(
source
)
...
@@ -499,11 +507,13 @@ void UDPConfiguration::saveSettings(QSettings& settings, const QString& root)
...
@@ -499,11 +507,13 @@ void UDPConfiguration::saveSettings(QSettings& settings, const QString& root)
void
UDPConfiguration
::
loadSettings
(
QSettings
&
settings
,
const
QString
&
root
)
void
UDPConfiguration
::
loadSettings
(
QSettings
&
settings
,
const
QString
&
root
)
{
{
AutoConnectSettings
*
acSettings
=
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
autoConnectSettings
();
_confMutex
.
lock
();
_confMutex
.
lock
();
_hosts
.
clear
();
_hosts
.
clear
();
_confMutex
.
unlock
();
_confMutex
.
unlock
();
settings
.
beginGroup
(
root
);
settings
.
beginGroup
(
root
);
_localPort
=
(
quint16
)
settings
.
value
(
"port"
,
QGC_UDP_LOCAL_PORT
).
toUInt
();
_localPort
=
(
quint16
)
settings
.
value
(
"port"
,
acSettings
->
udpListenPort
()
->
rawValue
().
toInt
()
).
toUInt
();
int
hostCount
=
settings
.
value
(
"hostCount"
,
0
).
toInt
();
int
hostCount
=
settings
.
value
(
"hostCount"
,
0
).
toInt
();
for
(
int
i
=
0
;
i
<
hostCount
;
i
++
)
{
for
(
int
i
=
0
;
i
<
hostCount
;
i
++
)
{
QString
hkey
=
QString
(
"host%1"
).
arg
(
i
);
QString
hkey
=
QString
(
"host%1"
).
arg
(
i
);
...
...
src/comm/UDPLink.h
View file @
04a290e8
...
@@ -34,9 +34,6 @@
...
@@ -34,9 +34,6 @@
#include "QGCConfig.h"
#include "QGCConfig.h"
#include "LinkManager.h"
#include "LinkManager.h"
#define QGC_UDP_LOCAL_PORT 14550
#define QGC_UDP_TARGET_PORT 14555
class
UDPConfiguration
:
public
LinkConfiguration
class
UDPConfiguration
:
public
LinkConfiguration
{
{
Q_OBJECT
Q_OBJECT
...
...
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