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
168a7326
Unverified
Commit
168a7326
authored
Dec 27, 2018
by
Gus Grubba
Committed by
GitHub
Dec 27, 2018
Browse files
Merge pull request #7103 from mavlink/taisyncLink
Taisync support
parents
b5cf395c
c00b0256
Changes
34
Hide whitespace changes
Inline
Side-by-side
QGCCommon.pri
View file @
168a7326
...
...
@@ -21,6 +21,7 @@ linux {
message("Linux build")
CONFIG += LinuxBuild
DEFINES += __STDC_LIMIT_MACROS
DEFINES += QGC_GST_TAISYNC_ENABLED
linux-clang {
message("Linux clang")
QMAKE_CXXFLAGS += -Qunused-arguments -fcolor-diagnostics
...
...
@@ -29,6 +30,7 @@ linux {
message("Linux R-Pi2 build")
CONFIG += LinuxBuild
DEFINES += __STDC_LIMIT_MACROS __rasp_pi2__
DEFINES += QGC_GST_TAISYNC_ENABLED
} else : android-g++ | android-clang {
CONFIG += AndroidBuild MobileBuild
DEFINES += __android__
...
...
@@ -50,6 +52,7 @@ linux {
message("Windows build")
CONFIG += WindowsBuild
DEFINES += __STDC_LIMIT_MACROS
DEFINES += QGC_GST_TAISYNC_ENABLED
} else {
error("Unsupported Windows toolchain, only Visual Studio 2015 is supported")
}
...
...
@@ -59,6 +62,7 @@ linux {
CONFIG += MacBuild
CONFIG += x86_64
CONFIG -= x86
DEFINES += QGC_GST_TAISYNC_ENABLED
equals(QT_MAJOR_VERSION, 5) | greaterThan(QT_MINOR_VERSION, 5) {
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
} else {
...
...
@@ -83,6 +87,7 @@ linux {
DEFINES += QGC_NO_GOOGLE_MAPS
DEFINES += NO_SERIAL_LINK
DEFINES += QGC_DISABLE_UVC
DEFINES += QGC_GST_TAISYNC_ENABLED
QMAKE_IOS_DEPLOYMENT_TARGET = 8.0
QMAKE_APPLE_TARGETED_DEVICE_FAMILY = 1,2 # Universal
QMAKE_LFLAGS += -Wl,-no_pie
...
...
build_ios.sh
View file @
168a7326
...
...
@@ -5,7 +5,7 @@ if [ ! -d /Volumes/RAMDisk ] ; then
exit
1
fi
#-- Set to my local installation
QMAKE
=
/Users/gus/Applications/Qt/5.11.
0
/ios/bin/qmake
QMAKE
=
/Users/gus/Applications/Qt/5.11.
2
/ios/bin/qmake
#-- Using Travis variables as this will eventually live there
SHADOW_BUILD_DIR
=
/Volumes/RAMDisk/build-qgroundcontrol-iOS-Release
TRAVIS_BUILD_DIR
=
/Users/gus/github/work/UpstreamQGC
...
...
qgroundcontrol.pro
View file @
168a7326
...
...
@@ -628,7 +628,7 @@ HEADERS += \
AndroidBuild
{
HEADERS
+=
\
src
/
Joystick
/
JoystickAndroid
.
h
\
src
/
Joystick
/
JoystickAndroid
.
h
\
}
DebugBuild
{
...
...
@@ -714,7 +714,7 @@ iOSBuild {
AndroidBuild
{
SOURCES
+=
src
/
MobileScreenMgr
.
cc
\
src
/
Joystick
/
JoystickAndroid
.
cc
\
src
/
Joystick
/
JoystickAndroid
.
cc
\
}
SOURCES
+=
\
...
...
@@ -1106,6 +1106,33 @@ SOURCES += \
src
/
FactSystem
/
ParameterManager
.
cc
\
src
/
FactSystem
/
SettingsFact
.
cc
\
#-------------------------------------------------------------------------------------
#
Taisync
contains
(
DEFINES
,
QGC_GST_TAISYNC_ENABLED
)
{
INCLUDEPATH
+=
\
src
/
Taisync
HEADERS
+=
\
src
/
Taisync
/
TaisyncManager
.
h
\
src
/
Taisync
/
TaisyncHandler
.
h
\
src
/
Taisync
/
TaisyncSettings
.
h
\
SOURCES
+=
\
src
/
Taisync
/
TaisyncManager
.
cc
\
src
/
Taisync
/
TaisyncHandler
.
cc
\
src
/
Taisync
/
TaisyncSettings
.
cc
\
iOSBuild
|
AndroidBuild
{
HEADERS
+=
\
src
/
Taisync
/
TaisyncTelemetry
.
h
\
src
/
Taisync
/
TaisyncVideoReceiver
.
h
\
SOURCES
+=
\
src
/
Taisync
/
TaisyncTelemetry
.
cc
\
src
/
Taisync
/
TaisyncVideoReceiver
.
cc
\
}
}
#-------------------------------------------------------------------------------------
#
AirMap
...
...
qgroundcontrol.qrc
View file @
168a7326
...
...
@@ -199,6 +199,7 @@
<file alias="SurveyItemEditor.qml">src/PlanView/SurveyItemEditor.qml</file>
<file alias="SyslinkComponent.qml">src/AutoPilotPlugins/Common/SyslinkComponent.qml</file>
<file alias="TcpSettings.qml">src/ui/preferences/TcpSettings.qml</file>
<file alias="TaisyncSettings.qml">src/Taisync/TaisyncSettings.qml</file>
<file alias="test.qml">src/test.qml</file>
<file alias="UdpSettings.qml">src/ui/preferences/UdpSettings.qml</file>
<file alias="ValuePageWidget.qml">src/FlightMap/Widgets/ValuePageWidget.qml</file>
...
...
src/FactSystem/Fact.cc
View file @
168a7326
...
...
@@ -147,15 +147,20 @@ void Fact::setCookedValue(const QVariant& value)
}
}
void
Fact
::
setEnumStringValue
(
const
QString
&
value
)
int
Fact
::
valueIndex
(
const
QString
&
value
)
{
if
(
_metaData
)
{
int
index
=
_metaData
->
enumStrings
().
indexOf
(
value
);
if
(
index
!=
-
1
)
{
setCookedValue
(
_metaData
->
enumValues
()[
index
]);
}
}
else
{
qWarning
()
<<
kMissingMetadata
<<
name
();
return
_metaData
->
enumStrings
().
indexOf
(
value
);
}
qWarning
()
<<
kMissingMetadata
<<
name
();
return
-
1
;
}
void
Fact
::
setEnumStringValue
(
const
QString
&
value
)
{
int
index
=
valueIndex
(
value
);
if
(
index
!=
-
1
)
{
setCookedValue
(
_metaData
->
enumValues
()[
index
]);
}
}
...
...
src/FactSystem/Fact.h
View file @
168a7326
...
...
@@ -138,6 +138,7 @@ public:
void
setCookedValue
(
const
QVariant
&
value
);
void
setEnumIndex
(
int
index
);
void
setEnumStringValue
(
const
QString
&
value
);
int
valueIndex
(
const
QString
&
value
);
// The following methods allow you to defer sending of the valueChanged signals in order to implement
// rate limited signalling for ui performance. Used by FactGroup for example.
...
...
src/FlightDisplay/VideoManager.cc
View file @
168a7326
...
...
@@ -34,10 +34,6 @@ QGC_LOGGING_CATEGORY(VideoManagerLog, "VideoManagerLog")
//-----------------------------------------------------------------------------
VideoManager
::
VideoManager
(
QGCApplication
*
app
,
QGCToolbox
*
toolbox
)
:
QGCTool
(
app
,
toolbox
)
,
_videoReceiver
(
nullptr
)
,
_videoSettings
(
nullptr
)
,
_fullScreen
(
false
)
,
_activeVehicle
(
nullptr
)
{
}
...
...
src/FlightDisplay/VideoManager.h
View file @
168a7326
...
...
@@ -36,6 +36,7 @@ public:
Q_PROPERTY
(
bool
hasVideo
READ
hasVideo
NOTIFY
hasVideoChanged
)
Q_PROPERTY
(
bool
isGStreamer
READ
isGStreamer
NOTIFY
isGStreamerChanged
)
Q_PROPERTY
(
bool
isAutoStream
READ
isAutoStream
NOTIFY
isAutoStreamChanged
)
Q_PROPERTY
(
bool
isTaisync
READ
isTaisync
WRITE
setIsTaisync
NOTIFY
isTaisyncChanged
)
Q_PROPERTY
(
QString
videoSourceID
READ
videoSourceID
NOTIFY
videoSourceIDChanged
)
Q_PROPERTY
(
bool
uvcEnabled
READ
uvcEnabled
CONSTANT
)
Q_PROPERTY
(
bool
fullScreen
READ
fullScreen
WRITE
setfullScreen
NOTIFY
fullScreenChanged
)
...
...
@@ -45,6 +46,7 @@ public:
bool
hasVideo
();
bool
isGStreamer
();
bool
isAutoStream
();
bool
isTaisync
()
{
return
_isTaisync
;
}
bool
fullScreen
()
{
return
_fullScreen
;
}
QString
videoSourceID
()
{
return
_videoSourceID
;
}
QString
autoURL
()
{
return
QString
(
_streamInfo
.
uri
);
}
...
...
@@ -59,6 +61,7 @@ public:
#endif
void
setfullScreen
(
bool
f
)
{
_fullScreen
=
f
;
emit
fullScreenChanged
();
}
void
setIsTaisync
(
bool
t
)
{
_isTaisync
=
t
;
emit
isTaisyncChanged
();
}
// Override from QGCTool
void
setToolbox
(
QGCToolbox
*
toolbox
);
...
...
@@ -73,6 +76,7 @@ signals:
void
fullScreenChanged
();
void
isAutoStreamChanged
();
void
aspectRatioChanged
();
void
isTaisyncChanged
();
private
slots
:
void
_videoSourceChanged
();
...
...
@@ -88,11 +92,13 @@ private:
void
_updateSettings
();
void
_restartVideo
();
VideoReceiver
*
_videoReceiver
;
VideoSettings
*
_videoSettings
;
private:
bool
_isTaisync
=
false
;
VideoReceiver
*
_videoReceiver
=
nullptr
;
VideoSettings
*
_videoSettings
=
nullptr
;
QString
_videoSourceID
;
bool
_fullScreen
;
Vehicle
*
_activeVehicle
;
bool
_fullScreen
=
false
;
Vehicle
*
_activeVehicle
=
nullptr
;
mavlink_video_stream_information_t
_streamInfo
;
};
...
...
src/QGCToolbox.cc
View file @
168a7326
...
...
@@ -35,64 +35,48 @@
#else
#include
"AirspaceManager.h"
#endif
#if defined(QGC_GST_TAISYNC_ENABLED)
#include
"TaisyncManager.h"
#endif
#if defined(QGC_CUSTOM_BUILD)
#include CUSTOMHEADER
#endif
QGCToolbox
::
QGCToolbox
(
QGCApplication
*
app
)
:
_audioOutput
(
NULL
)
,
_factSystem
(
NULL
)
,
_firmwarePluginManager
(
NULL
)
#ifndef __mobile__
,
_gpsManager
(
NULL
)
#endif
,
_imageProvider
(
NULL
)
,
_joystickManager
(
NULL
)
,
_linkManager
(
NULL
)
,
_mavlinkProtocol
(
NULL
)
,
_missionCommandTree
(
NULL
)
,
_multiVehicleManager
(
NULL
)
,
_mapEngineManager
(
NULL
)
,
_uasMessageHandler
(
NULL
)
,
_followMe
(
NULL
)
,
_qgcPositionManager
(
NULL
)
,
_videoManager
(
NULL
)
,
_mavlinkLogManager
(
NULL
)
,
_corePlugin
(
NULL
)
,
_settingsManager
(
NULL
)
,
_airspaceManager
(
NULL
)
{
// SettingsManager must be first so settings are available to any subsequent tools
_settingsManager
=
new
SettingsManager
(
app
,
this
);
_settingsManager
=
new
SettingsManager
(
app
,
this
);
//-- Scan and load plugins
_scanAndLoadPlugins
(
app
);
_audioOutput
=
new
AudioOutput
(
app
,
this
);
_factSystem
=
new
FactSystem
(
app
,
this
);
_firmwarePluginManager
=
new
FirmwarePluginManager
(
app
,
this
);
_audioOutput
=
new
AudioOutput
(
app
,
this
);
_factSystem
=
new
FactSystem
(
app
,
this
);
_firmwarePluginManager
=
new
FirmwarePluginManager
(
app
,
this
);
#ifndef __mobile__
_gpsManager
=
new
GPSManager
(
app
,
this
);
_gpsManager
=
new
GPSManager
(
app
,
this
);
#endif
_imageProvider
=
new
QGCImageProvider
(
app
,
this
);
_joystickManager
=
new
JoystickManager
(
app
,
this
);
_linkManager
=
new
LinkManager
(
app
,
this
);
_mavlinkProtocol
=
new
MAVLinkProtocol
(
app
,
this
);
_missionCommandTree
=
new
MissionCommandTree
(
app
,
this
);
_multiVehicleManager
=
new
MultiVehicleManager
(
app
,
this
);
_mapEngineManager
=
new
QGCMapEngineManager
(
app
,
this
);
_uasMessageHandler
=
new
UASMessageHandler
(
app
,
this
);
_qgcPositionManager
=
new
QGCPositionManager
(
app
,
this
);
_followMe
=
new
FollowMe
(
app
,
this
);
_videoManager
=
new
VideoManager
(
app
,
this
);
_mavlinkLogManager
=
new
MAVLinkLogManager
(
app
,
this
);
_imageProvider
=
new
QGCImageProvider
(
app
,
this
);
_joystickManager
=
new
JoystickManager
(
app
,
this
);
_linkManager
=
new
LinkManager
(
app
,
this
);
_mavlinkProtocol
=
new
MAVLinkProtocol
(
app
,
this
);
_missionCommandTree
=
new
MissionCommandTree
(
app
,
this
);
_multiVehicleManager
=
new
MultiVehicleManager
(
app
,
this
);
_mapEngineManager
=
new
QGCMapEngineManager
(
app
,
this
);
_uasMessageHandler
=
new
UASMessageHandler
(
app
,
this
);
_qgcPositionManager
=
new
QGCPositionManager
(
app
,
this
);
_followMe
=
new
FollowMe
(
app
,
this
);
_videoManager
=
new
VideoManager
(
app
,
this
);
_mavlinkLogManager
=
new
MAVLinkLogManager
(
app
,
this
);
//-- Airmap Manager
//-- This should be "pluggable" so an arbitrary AirSpace manager can be used
//-- For now, we instantiate the one and only AirMap provider
#if defined(QGC_AIRMAP_ENABLED)
_airspaceManager
=
new
AirMapManager
(
app
,
this
);
_airspaceManager
=
new
AirMapManager
(
app
,
this
);
#else
_airspaceManager
=
new
AirspaceManager
(
app
,
this
);
_airspaceManager
=
new
AirspaceManager
(
app
,
this
);
#endif
#if defined(QGC_GST_TAISYNC_ENABLED)
_taisyncManager
=
new
TaisyncManager
(
app
,
this
);
#endif
}
...
...
@@ -100,7 +84,6 @@ void QGCToolbox::setChildToolboxes(void)
{
// SettingsManager must be first so settings are available to any subsequent tools
_settingsManager
->
setToolbox
(
this
);
_corePlugin
->
setToolbox
(
this
);
_audioOutput
->
setToolbox
(
this
);
_factSystem
->
setToolbox
(
this
);
...
...
@@ -121,6 +104,9 @@ void QGCToolbox::setChildToolboxes(void)
_videoManager
->
setToolbox
(
this
);
_mavlinkLogManager
->
setToolbox
(
this
);
_airspaceManager
->
setToolbox
(
this
);
#if defined(QGC_GST_TAISYNC_ENABLED)
_taisyncManager
->
setToolbox
(
this
);
#endif
}
void
QGCToolbox
::
_scanAndLoadPlugins
(
QGCApplication
*
app
)
...
...
@@ -139,7 +125,7 @@ void QGCToolbox::_scanAndLoadPlugins(QGCApplication* app)
QGCTool
::
QGCTool
(
QGCApplication
*
app
,
QGCToolbox
*
toolbox
)
:
QObject
(
toolbox
)
,
_app
(
app
)
,
_toolbox
(
NULL
)
,
_toolbox
(
nullptr
)
{
}
...
...
src/QGCToolbox.h
View file @
168a7326
...
...
@@ -33,6 +33,9 @@ class MAVLinkLogManager;
class
QGCCorePlugin
;
class
SettingsManager
;
class
AirspaceManager
;
#if defined(QGC_GST_TAISYNC_ENABLED)
class
TaisyncManager
;
#endif
/// This is used to manage all of our top level services/tools
class
QGCToolbox
:
public
QObject
{
...
...
@@ -41,25 +44,28 @@ class QGCToolbox : public QObject {
public:
QGCToolbox
(
QGCApplication
*
app
);
FirmwarePluginManager
*
firmwarePluginManager
(
void
)
{
return
_firmwarePluginManager
;
}
AudioOutput
*
audioOutput
(
void
)
{
return
_audioOutput
;
}
JoystickManager
*
joystickManager
(
void
)
{
return
_joystickManager
;
}
LinkManager
*
linkManager
(
void
)
{
return
_linkManager
;
}
MAVLinkProtocol
*
mavlinkProtocol
(
void
)
{
return
_mavlinkProtocol
;
}
MissionCommandTree
*
missionCommandTree
(
void
)
{
return
_missionCommandTree
;
}
MultiVehicleManager
*
multiVehicleManager
(
void
)
{
return
_multiVehicleManager
;
}
QGCMapEngineManager
*
mapEngineManager
(
void
)
{
return
_mapEngineManager
;
}
QGCImageProvider
*
imageProvider
()
{
return
_imageProvider
;
}
UASMessageHandler
*
uasMessageHandler
(
void
)
{
return
_uasMessageHandler
;
}
FollowMe
*
followMe
(
void
)
{
return
_followMe
;
}
QGCPositionManager
*
qgcPositionManager
(
void
)
{
return
_qgcPositionManager
;
}
VideoManager
*
videoManager
(
void
)
{
return
_videoManager
;
}
MAVLinkLogManager
*
mavlinkLogManager
(
void
)
{
return
_mavlinkLogManager
;
}
QGCCorePlugin
*
corePlugin
(
void
)
{
return
_corePlugin
;
}
SettingsManager
*
settingsManager
(
void
)
{
return
_settingsManager
;
}
AirspaceManager
*
airspaceManager
(
void
)
{
return
_airspaceManager
;
}
FirmwarePluginManager
*
firmwarePluginManager
()
{
return
_firmwarePluginManager
;
}
AudioOutput
*
audioOutput
()
{
return
_audioOutput
;
}
JoystickManager
*
joystickManager
()
{
return
_joystickManager
;
}
LinkManager
*
linkManager
()
{
return
_linkManager
;
}
MAVLinkProtocol
*
mavlinkProtocol
()
{
return
_mavlinkProtocol
;
}
MissionCommandTree
*
missionCommandTree
()
{
return
_missionCommandTree
;
}
MultiVehicleManager
*
multiVehicleManager
()
{
return
_multiVehicleManager
;
}
QGCMapEngineManager
*
mapEngineManager
()
{
return
_mapEngineManager
;
}
QGCImageProvider
*
imageProvider
()
{
return
_imageProvider
;
}
UASMessageHandler
*
uasMessageHandler
()
{
return
_uasMessageHandler
;
}
FollowMe
*
followMe
()
{
return
_followMe
;
}
QGCPositionManager
*
qgcPositionManager
()
{
return
_qgcPositionManager
;
}
VideoManager
*
videoManager
()
{
return
_videoManager
;
}
MAVLinkLogManager
*
mavlinkLogManager
()
{
return
_mavlinkLogManager
;
}
QGCCorePlugin
*
corePlugin
()
{
return
_corePlugin
;
}
SettingsManager
*
settingsManager
()
{
return
_settingsManager
;
}
AirspaceManager
*
airspaceManager
()
{
return
_airspaceManager
;
}
#ifndef __mobile__
GPSManager
*
gpsManager
(
void
)
{
return
_gpsManager
;
}
GPSManager
*
gpsManager
()
{
return
_gpsManager
;
}
#endif
#if defined(QGC_GST_TAISYNC_ENABLED)
TaisyncManager
*
taisyncManager
()
{
return
_taisyncManager
;
}
#endif
private:
...
...
@@ -67,27 +73,30 @@ private:
void
_scanAndLoadPlugins
(
QGCApplication
*
app
);
AudioOutput
*
_audioOutput
;
FactSystem
*
_factSystem
;
FirmwarePluginManager
*
_firmwarePluginManager
;
AudioOutput
*
_audioOutput
=
nullptr
;
FactSystem
*
_factSystem
=
nullptr
;
FirmwarePluginManager
*
_firmwarePluginManager
=
nullptr
;
#ifndef __mobile__
GPSManager
*
_gpsManager
;
GPSManager
*
_gpsManager
=
nullptr
;
#endif
QGCImageProvider
*
_imageProvider
=
nullptr
;
JoystickManager
*
_joystickManager
=
nullptr
;
LinkManager
*
_linkManager
=
nullptr
;
MAVLinkProtocol
*
_mavlinkProtocol
=
nullptr
;
MissionCommandTree
*
_missionCommandTree
=
nullptr
;
MultiVehicleManager
*
_multiVehicleManager
=
nullptr
;
QGCMapEngineManager
*
_mapEngineManager
=
nullptr
;
UASMessageHandler
*
_uasMessageHandler
=
nullptr
;
FollowMe
*
_followMe
=
nullptr
;
QGCPositionManager
*
_qgcPositionManager
=
nullptr
;
VideoManager
*
_videoManager
=
nullptr
;
MAVLinkLogManager
*
_mavlinkLogManager
=
nullptr
;
QGCCorePlugin
*
_corePlugin
=
nullptr
;
SettingsManager
*
_settingsManager
=
nullptr
;
AirspaceManager
*
_airspaceManager
=
nullptr
;
#if defined(QGC_GST_TAISYNC_ENABLED)
TaisyncManager
*
_taisyncManager
=
nullptr
;
#endif
QGCImageProvider
*
_imageProvider
;
JoystickManager
*
_joystickManager
;
LinkManager
*
_linkManager
;
MAVLinkProtocol
*
_mavlinkProtocol
;
MissionCommandTree
*
_missionCommandTree
;
MultiVehicleManager
*
_multiVehicleManager
;
QGCMapEngineManager
*
_mapEngineManager
;
UASMessageHandler
*
_uasMessageHandler
;
FollowMe
*
_followMe
;
QGCPositionManager
*
_qgcPositionManager
;
VideoManager
*
_videoManager
;
MAVLinkLogManager
*
_mavlinkLogManager
;
QGCCorePlugin
*
_corePlugin
;
SettingsManager
*
_settingsManager
;
AirspaceManager
*
_airspaceManager
;
friend
class
QGCApplication
;
};
...
...
src/QmlControls/QGroundControlQmlGlobal.cc
View file @
168a7326
...
...
@@ -29,23 +29,9 @@ double QGroundControlQmlGlobal::_zoom = 2;
QGroundControlQmlGlobal
::
QGroundControlQmlGlobal
(
QGCApplication
*
app
,
QGCToolbox
*
toolbox
)
:
QGCTool
(
app
,
toolbox
)
,
_flightMapInitialZoom
(
17.0
)
,
_linkManager
(
NULL
)
,
_multiVehicleManager
(
NULL
)
,
_mapEngineManager
(
NULL
)
,
_qgcPositionManager
(
NULL
)
,
_missionCommandTree
(
NULL
)
,
_videoManager
(
NULL
)
,
_mavlinkLogManager
(
NULL
)
,
_corePlugin
(
NULL
)
,
_firmwarePluginManager
(
NULL
)
,
_settingsManager
(
NULL
)
,
_gpsRtkFactGroup
(
nullptr
)
,
_airspaceManager
(
NULL
)
,
_skipSetupPage
(
false
)
{
// We clear the parent on this object since we run into shutdown problems caused by hybrid qml app. Instead we let it leak on shutdown.
setParent
(
NULL
);
setParent
(
nullptr
);
// Load last coordinates and zoom from config file
QSettings
settings
;
settings
.
beginGroup
(
_flightMapPositionSettingsGroup
);
...
...
@@ -80,6 +66,9 @@ void QGroundControlQmlGlobal::setToolbox(QGCToolbox* toolbox)
_settingsManager
=
toolbox
->
settingsManager
();
_gpsRtkFactGroup
=
qgcApp
()
->
gpsRtkFactGroup
();
_airspaceManager
=
toolbox
->
airspaceManager
();
#if defined(QGC_GST_TAISYNC_ENABLED)
_taisyncManager
=
toolbox
->
taisyncManager
();
#endif
}
void
QGroundControlQmlGlobal
::
saveGlobalSetting
(
const
QString
&
key
,
const
QString
&
value
)
...
...
src/QmlControls/QGroundControlQmlGlobal.h
View file @
168a7326
...
...
@@ -23,6 +23,11 @@
#include
"QGCLoggingCategory.h"
#include
"AppSettings.h"
#include
"AirspaceManager.h"
#if defined(QGC_GST_TAISYNC_ENABLED)
#include
"TaisyncManager.h"
#else
class
TaisyncManager
;
#endif
#ifdef QT_DEBUG
#include
"MockLink.h"
...
...
@@ -52,6 +57,8 @@ public:
Q_PROPERTY
(
FactGroup
*
gpsRtk
READ
gpsRtkFactGroup
CONSTANT
)
Q_PROPERTY
(
AirspaceManager
*
airspaceManager
READ
airspaceManager
CONSTANT
)
Q_PROPERTY
(
bool
airmapSupported
READ
airmapSupported
CONSTANT
)
Q_PROPERTY
(
TaisyncManager
*
taisyncManager
READ
taisyncManager
CONSTANT
)
Q_PROPERTY
(
bool
taisyncSupported
READ
taisyncSupported
CONSTANT
)
Q_PROPERTY
(
int
supportedFirmwareCount
READ
supportedFirmwareCount
CONSTANT
)
...
...
@@ -145,6 +152,13 @@ public:
static
QGeoCoordinate
flightMapPosition
()
{
return
_coord
;
}
static
double
flightMapZoom
()
{
return
_zoom
;
}
TaisyncManager
*
taisyncManager
()
{
return
_taisyncManager
;
}
#if defined(QGC_GST_TAISYNC_ENABLED)
bool
taisyncSupported
()
{
return
true
;
}
#else
bool
taisyncSupported
()
{
return
false
;
}
#endif
qreal
zOrderTopMost
()
{
return
1000
;
}
qreal
zOrderWidgets
()
{
return
100
;
}
qreal
zOrderMapItems
()
{
return
50
;
}
...
...
@@ -189,21 +203,22 @@ signals:
void
skipSetupPageChanged
();
private:
double
_flightMapInitialZoom
;
LinkManager
*
_linkManager
;
MultiVehicleManager
*
_multiVehicleManager
;
QGCMapEngineManager
*
_mapEngineManager
;
QGCPositionManager
*
_qgcPositionManager
;
MissionCommandTree
*
_missionCommandTree
;
VideoManager
*
_videoManager
;
MAVLinkLogManager
*
_mavlinkLogManager
;
QGCCorePlugin
*
_corePlugin
;
FirmwarePluginManager
*
_firmwarePluginManager
;
SettingsManager
*
_settingsManager
;
FactGroup
*
_gpsRtkFactGroup
;
AirspaceManager
*
_airspaceManager
;
bool
_skipSetupPage
;
double
_flightMapInitialZoom
=
17.0
;
LinkManager
*
_linkManager
=
nullptr
;
MultiVehicleManager
*
_multiVehicleManager
=
nullptr
;
QGCMapEngineManager
*
_mapEngineManager
=
nullptr
;
QGCPositionManager
*
_qgcPositionManager
=
nullptr
;
MissionCommandTree
*
_missionCommandTree
=
nullptr
;
VideoManager
*
_videoManager
=
nullptr
;
MAVLinkLogManager
*
_mavlinkLogManager
=
nullptr
;
QGCCorePlugin
*
_corePlugin
=
nullptr
;
FirmwarePluginManager
*
_firmwarePluginManager
=
nullptr
;
SettingsManager
*
_settingsManager
=
nullptr
;
FactGroup
*
_gpsRtkFactGroup
=
nullptr
;
AirspaceManager
*
_airspaceManager
=
nullptr
;
TaisyncManager
*
_taisyncManager
=
nullptr
;
bool
_skipSetupPage
=
false
;
static
const
char
*
_flightMapPositionSettingsGroup
;
static
const
char
*
_flightMapPositionLatitudeSettingsKey
;
...
...
src/Settings/App.SettingsGroup.json
View file @
168a7326
...
...
@@ -205,5 +205,19 @@
"shortDescription"
:
"Request start of MAVLink telemetry streams (ArduPilot only)"
,
"type"
:
"bool"
,
"defaultValue"
:
true
},
{
"name"
:
"enableTaisync"
,
"shortDescription"
:
"Enable Taisync Module Support"
,
"longDescription"
:
"Enable Taisync Module Support"
,
"type"
:
"bool"
,
"defaultValue"
:
false
},
{
"name"
:
"enableTaisyncVideo"
,
"shortDescription"
:
"Enable Taisync Video Support"
,
"longDescription"
:
"Enable Taisync Video Support"
,
"type"
:
"bool"
,
"defaultValue"
:
true
}
]
src/Settings/AppSettings.cc
View file @
168a7326
...
...
@@ -85,6 +85,8 @@ DECLARE_SETTINGSFACT(AppSettings, defaultFirmwareType)
DECLARE_SETTINGSFACT
(
AppSettings
,
gstDebugLevel
)
DECLARE_SETTINGSFACT
(
AppSettings
,
followTarget
)
DECLARE_SETTINGSFACT
(
AppSettings
,
apmStartMavlinkStreams
)
DECLARE_SETTINGSFACT
(
AppSettings
,
enableTaisync
)
DECLARE_SETTINGSFACT
(
AppSettings
,
enableTaisyncVideo
)
DECLARE_SETTINGSFACT_NO_FUNC
(
AppSettings
,
indoorPalette
)
{
...
...
src/Settings/AppSettings.h
View file @
168a7326
...
...
@@ -14,7 +14,7 @@
class
AppSettings
:
public
SettingsGroup
{
Q_OBJECT
public:
AppSettings
(
QObject
*
parent
=
nullptr
);
...
...
@@ -43,6 +43,8 @@ public:
DEFINE_SETTINGFACT
(
defaultFirmwareType
)
DEFINE_SETTINGFACT
(
gstDebugLevel
)
DEFINE_SETTINGFACT
(
followTarget
)
DEFINE_SETTINGFACT
(
enableTaisync
)
DEFINE_SETTINGFACT
(
enableTaisyncVideo
)
// Although this is a global setting it only affects ArduPilot vehicle since PX4 automatically starts the stream from the vehicle side
DEFINE_SETTINGFACT
(
apmStartMavlinkStreams
)
...
...
src/Settings/AutoConnect.SettingsGroup.json
View file @
168a7326
...
...
@@ -72,12 +72,5 @@
"shortDescription"
:
"UDP target host port for autoconnect"
,
"type"
:
"uint32"
,
"defaultValue"
:
14550
},
{
"name"
:
"autoConnectTaisyncUSB"
,
"shortDescription"
:
"Automatically connect to a Taisync Ground Module"
,
"longDescription"
:
"If this option is enabled GroundControl will automatically connect to a Taisync Ground Module which is connected via USB."
,
"type"
:
"bool"
,
"defaultValue"
:
false
}
]
src/Settings/AutoConnectSettings.cc
View file @
168a7326
...
...
@@ -23,7 +23,6 @@ DECLARE_SETTINGSFACT(AutoConnectSettings, autoConnectUDP)
DECLARE_SETTINGSFACT
(
AutoConnectSettings
,
udpListenPort
)
DECLARE_SETTINGSFACT
(
AutoConnectSettings
,
udpTargetHostIP
)
DECLARE_SETTINGSFACT
(
AutoConnectSettings
,
udpTargetHostPort
)
DECLARE_SETTINGSFACT
(
AutoConnectSettings
,
autoconnectTaisyncUSB
)
DECLARE_SETTINGSFACT_NO_FUNC
(
AutoConnectSettings
,
autoConnectPixhawk
)
{
...
...
src/Settings/AutoConnectSettings.h
View file @
168a7326
...
...
@@ -14,7 +14,7 @@
class
AutoConnectSettings
:
public
SettingsGroup
{
Q_OBJECT
public:
AutoConnectSettings
(
QObject
*
parent
=
nullptr
);
...
...
@@ -31,6 +31,5 @@ public:
DEFINE_SETTINGFACT
(
udpListenPort
)
DEFINE_SETTINGFACT
(
udpTargetHostIP
)
DEFINE_SETTINGFACT
(
udpTargetHostPort
)
DEFINE_SETTINGFACT
(
autoconnectTaisyncUSB
)
};
src/Settings/SettingsGroup.h
View file @
168a7326
...
...
@@ -54,13 +54,19 @@
class
SettingsGroup
:
public
QObject
{
Q_OBJECT
public:
/// @param name Name for this Settings group
/// @param settingsGroup Group to place settings in for QSettings::setGroup
SettingsGroup
(
const
QString
&
name
,
const
QString
&
settingsGroup
,
QObject
*
parent
=
nullptr
);
Q_PROPERTY
(
bool
visible
MEMBER
_visible
CONSTANT
)
Q_PROPERTY
(
bool
visible
READ
visible
WRITE
setVisible
NOTIFY
visibleChanged
)
virtual
bool
visible
()
{
return
_visible
;
}
virtual
void
setVisible
(
bool
vis
)
{
_visible
=
vis
;
emit
visibleChanged
();
}
signals:
void
visibleChanged
();
protected:
SettingsFact
*
_createSettingsFact
(
const
QString
&
factName
);
...
...
src/Taisync/TaisyncHandler.cc
0 → 100644
View file @
168a7326
/****************************************************************************
*
* (c) 2009-2016 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
"TaisyncHandler.h"
#include
"SettingsManager.h"
#include
"QGCApplication.h"
#include
"VideoManager.h"
QGC_LOGGING_CATEGORY
(
TaisyncLog
,
"TaisyncLog"
)
QGC_LOGGING_CATEGORY
(
TaisyncVerbose
,
"TaisyncVerbose"
)
//-----------------------------------------------------------------------------
TaisyncHandler
::
TaisyncHandler
(
QObject
*
parent
)
:
QObject
(
parent
)
{
}
//-----------------------------------------------------------------------------
TaisyncHandler
::~
TaisyncHandler
()
{
close
();
}
//-----------------------------------------------------------------------------
bool
TaisyncHandler
::
close
()
{
bool
res
=
(
_tcpSocket
||
_tcpServer
);
if
(
_tcpSocket
)
{
qCDebug
(
TaisyncLog
)
<<
"Close Taisync TCP socket on port"
<<
_tcpSocket
->
localPort
();
_tcpSocket
->
close
();
_tcpSocket
->
deleteLater
();
_tcpSocket
=
nullptr
;
}
if
(
_tcpServer
)
{
qCDebug
(
TaisyncLog
)
<<
"Close Taisync TCP server on port"
<<
_tcpServer
->
serverPort
();;
_tcpServer
->
close
();
_tcpServer
->
deleteLater
();
_tcpServer
=
nullptr
;
}
return
res
;
}
//-----------------------------------------------------------------------------
bool
TaisyncHandler
::
_start
(
uint16_t
port
,
QHostAddress
addr
)
{
close
();
_serverMode
=
addr
==
QHostAddress
::
AnyIPv4
;
if
(
_serverMode
)
{
if
(
!
_tcpServer
)
{
qCDebug
(
TaisyncLog
)
<<
"Listen for Taisync TCP on port"
<<
port
;
_tcpServer
=
new
QTcpServer
(
this
);
QObject
::
connect
(
_tcpServer
,
&
QTcpServer
::
newConnection
,
this
,
&
TaisyncHandler
::
_newConnection
);
_tcpServer
->
listen
(
QHostAddress
::
AnyIPv4
,
port
);
}
}
else
{
_tcpSocket
=
new
QTcpSocket
();
QObject
::
connect
(
_tcpSocket
,
&
QIODevice
::
readyRead
,
this
,
&
TaisyncHandler
::
_readBytes
);
qCDebug
(
TaisyncLog
)
<<
"Connecting to"
<<
addr
;
_tcpSocket
->
connectToHost
(
addr
,
port
);
if
(
!
_tcpSocket
->
waitForConnected
(
1000
))
{
close
();
return
false
;
}
emit
connected
();
}
return
true
;
}
//-----------------------------------------------------------------------------
void
TaisyncHandler
::
_newConnection
()
{
qCDebug
(
TaisyncLog
)
<<
"New Taisync TCP Connection on port"
<<
_tcpServer
->
serverPort
();
if
(
_tcpSocket
)
{
_tcpSocket
->
close
();
_tcpSocket
->
deleteLater
();
}
_tcpSocket
=
_tcpServer
->
nextPendingConnection
();
if
(
_tcpSocket
)
{
QObject
::
connect
(
_tcpSocket
,
&
QIODevice
::
readyRead
,
this
,
&
TaisyncHandler
::
_readBytes
);
QObject
::
connect
(
_tcpSocket
,
&
QAbstractSocket
::
disconnected
,
this
,
&
TaisyncHandler
::
_socketDisconnected
);
emit
connected
();
}
else
{
qCWarning
(
TaisyncLog
)
<<
"New Taisync TCP Connection provided no socket"
;
}
}
//-----------------------------------------------------------------------------
void
TaisyncHandler
::
_socketDisconnected
()
{
qCDebug
(
TaisyncLog
)
<<
"Taisync TCP Connection Closed on port"
<<
_tcpSocket
->
localPort
();
if
(
_tcpSocket
)
{
_tcpSocket
->
close
();
_tcpSocket
->
deleteLater
();
_tcpSocket
=
nullptr
;
}
emit
disconnected
();
}
Prev
1
2
Next
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