Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
32fc12c5
Commit
32fc12c5
authored
Jun 12, 2017
by
DonLakeFlyer
Browse files
Allow UDP auto connect to be controlled through settings
parent
d1c2f3fb
Changes
6
Hide whitespace changes
Inline
Side-by-side
src/Settings/AutoConnect.SettingsGroup.json
View file @
32fc12c5
...
...
@@ -40,5 +40,23 @@
"longDescription"
:
"If this option is enabled GroundControl will automatically connect to a LibrePilot board which is connected via USB."
,
"type"
:
"bool"
,
"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 @
32fc12c5
...
...
@@ -21,17 +21,23 @@ const char* AutoConnectSettings:: autoConnectSiKRadioSettingsName = "Autocon
const
char
*
AutoConnectSettings
::
autoConnectPX4FlowSettingsName
=
"AutoconnectPX4Flow"
;
const
char
*
AutoConnectSettings
::
autoConnectRTKGPSSettingsName
=
"AutoconnectRTKGPS"
;
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"
;
AutoConnectSettings
::
AutoConnectSettings
(
QObject
*
parent
)
:
SettingsGroup
(
autoConnectSettingsGroupName
,
_settingsGroup
,
parent
)
,
_autoConnectUDPFact
(
NULL
)
,
_autoConnectPixhawkFact
(
NULL
)
,
_autoConnectSiKRadioFact
(
NULL
)
,
_autoConnectPX4FlowFact
(
NULL
)
,
_autoConnectRTKGPSFact
(
NULL
)
:
SettingsGroup
(
autoConnectSettingsGroupName
,
_settingsGroup
,
parent
)
,
_autoConnectUDPFact
(
NULL
)
,
_autoConnectPixhawkFact
(
NULL
)
,
_autoConnectSiKRadioFact
(
NULL
)
,
_autoConnectPX4FlowFact
(
NULL
)
,
_autoConnectRTKGPSFact
(
NULL
)
,
_autoConnectLibrePilotFact
(
NULL
)
,
_udpListenPortFact
(
NULL
)
,
_udpTargetHostIPFact
(
NULL
)
,
_udpTargetHostPortFact
(
NULL
)
{
QQmlEngine
::
setObjectOwnership
(
this
,
QQmlEngine
::
CppOwnership
);
qmlRegisterUncreatableType
<
AutoConnectSettings
>
(
"QGroundControl.SettingsManager"
,
1
,
0
,
"AutoConnectSettings"
,
"Reference only"
);
...
...
@@ -90,3 +96,30 @@ Fact* AutoConnectSettings::autoConnectLibrePilot(void)
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 @
32fc12c5
...
...
@@ -25,6 +25,9 @@ public:
Q_PROPERTY
(
Fact
*
autoConnectPX4Flow
READ
autoConnectPX4Flow
CONSTANT
)
Q_PROPERTY
(
Fact
*
autoConnectRTKGPS
READ
autoConnectRTKGPS
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
*
autoConnectPixhawk
(
void
);
...
...
@@ -32,6 +35,9 @@ public:
Fact
*
autoConnectPX4Flow
(
void
);
Fact
*
autoConnectRTKGPS
(
void
);
Fact
*
autoConnectLibrePilot
(
void
);
Fact
*
udpListenPort
(
void
);
Fact
*
udpTargetHostIP
(
void
);
Fact
*
udpTargetHostPort
(
void
);
static
const
char
*
autoConnectSettingsGroupName
;
...
...
@@ -41,6 +47,9 @@ public:
static
const
char
*
autoConnectPX4FlowSettingsName
;
static
const
char
*
autoConnectRTKGPSSettingsName
;
static
const
char
*
autoConnectLibrePilotSettingsName
;
static
const
char
*
udpListenPortName
;
static
const
char
*
udpTargetHostIPName
;
static
const
char
*
udpTargetHostPortName
;
private:
SettingsFact
*
_autoConnectUDPFact
;
...
...
@@ -49,6 +58,9 @@ private:
SettingsFact
*
_autoConnectPX4FlowFact
;
SettingsFact
*
_autoConnectRTKGPSFact
;
SettingsFact
*
_autoConnectLibrePilotFact
;
SettingsFact
*
_udpListenPortFact
;
SettingsFact
*
_udpTargetHostIPFact
;
SettingsFact
*
_udpTargetHostPortFact
;
static
const
char
*
_settingsGroup
;
};
...
...
src/comm/LinkManager.cc
View file @
32fc12c5
...
...
@@ -459,8 +459,8 @@ void LinkManager::_updateAutoConnectLinks(void)
}
if
(
!
foundUDP
&&
_autoConnectSettings
->
autoConnectUDP
()
->
rawValue
().
toBool
())
{
qCDebug
(
LinkManagerLog
)
<<
"New auto-connect UDP port added"
;
// Default UDPConfiguration is set up for autoconnect
UDPConfiguration
*
udpConfig
=
new
UDPConfiguration
(
_defaultUPDLinkName
);
udpConfig
->
setLocalPort
(
QGC_UDP_LOCAL_PORT
);
udpConfig
->
setDynamic
(
true
);
SharedLinkConfigurationPointer
config
=
addConfiguration
(
udpConfig
);
createConnectedLink
(
config
);
...
...
src/comm/UDPLink.cc
View file @
32fc12c5
...
...
@@ -23,10 +23,13 @@
#include
<QNetworkProxy>
#include
<QNetworkInterface>
#include
<iostream>
#include
<QHostInfo>
#include
"UDPLink.h"
#include
"QGC.h"
#include
<QHostInfo>
#include
"QGCApplication.h"
#include
"SettingsManager.h"
#include
"AutoConnectSettings.h"
#define REMOVE_GONE_HOSTS 0
...
...
@@ -329,7 +332,12 @@ void UDPLink::_deregisterZeroconf()
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
)
...
...
@@ -499,11 +507,13 @@ void UDPConfiguration::saveSettings(QSettings& settings, const QString& root)
void
UDPConfiguration
::
loadSettings
(
QSettings
&
settings
,
const
QString
&
root
)
{
AutoConnectSettings
*
acSettings
=
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
autoConnectSettings
();
_confMutex
.
lock
();
_hosts
.
clear
();
_confMutex
.
unlock
();
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
();
for
(
int
i
=
0
;
i
<
hostCount
;
i
++
)
{
QString
hkey
=
QString
(
"host%1"
).
arg
(
i
);
...
...
src/comm/UDPLink.h
View file @
32fc12c5
...
...
@@ -34,9 +34,6 @@
#include
"QGCConfig.h"
#include
"LinkManager.h"
#define QGC_UDP_LOCAL_PORT 14550
#define QGC_UDP_TARGET_PORT 14555
class
UDPConfiguration
:
public
LinkConfiguration
{
Q_OBJECT
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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