@ -11,6 +11,7 @@
@@ -11,6 +11,7 @@
# include "TaisyncHandler.h"
# include "SettingsManager.h"
# include "QGCApplication.h"
# include "QGCCorePlugin.h"
# include "VideoManager.h"
# include <QSettings>
@ -88,10 +89,6 @@ TaisyncManager::_reset()
@@ -88,10 +89,6 @@ TaisyncManager::_reset()
emit connectedChanged ( ) ;
_linkConnected = false ;
emit linkConnectedChanged ( ) ;
_taiSettings = new TaisyncSettings ( this ) ;
connect ( _taiSettings , & TaisyncSettings : : updateSettings , this , & TaisyncManager : : _updateSettings ) ;
connect ( _taiSettings , & TaisyncSettings : : connected , this , & TaisyncManager : : _connected ) ;
connect ( _taiSettings , & TaisyncSettings : : disconnected , this , & TaisyncManager : : _disconnected ) ;
if ( ! _appSettings ) {
_appSettings = _toolbox - > settingsManager ( ) - > appSettings ( ) ;
connect ( _appSettings - > enableTaisync ( ) , & Fact : : rawValueChanged , this , & TaisyncManager : : _setEnabled ) ;
@ -183,6 +180,7 @@ TaisyncManager::setToolbox(QGCToolbox* toolbox)
@@ -183,6 +180,7 @@ TaisyncManager::setToolbox(QGCToolbox* toolbox)
_videoRateList . append ( " high " ) ;
connect ( _videoRate , & Fact : : _containerRawValueChanged , this , & TaisyncManager : : _videoSettingsChanged ) ;
}
//-- Start it all
_reset ( ) ;
}
@ -286,6 +284,12 @@ TaisyncManager::_setEnabled()
@@ -286,6 +284,12 @@ TaisyncManager::_setEnabled()
{
bool enable = _appSettings - > enableTaisync ( ) - > rawValue ( ) . toBool ( ) ;
if ( enable ) {
if ( ! _taiSettings ) {
_taiSettings = new TaisyncSettings ( this ) ;
connect ( _taiSettings , & TaisyncSettings : : updateSettings , this , & TaisyncManager : : _updateSettings ) ;
connect ( _taiSettings , & TaisyncSettings : : connected , this , & TaisyncManager : : _connected ) ;
connect ( _taiSettings , & TaisyncSettings : : disconnected , this , & TaisyncManager : : _disconnected ) ;
}
# if defined(__ios__) || defined(__android__)
if ( ! _taiTelemetery ) {
_taiTelemetery = new TaisyncTelemetry ( this ) ;
@ -298,7 +302,7 @@ TaisyncManager::_setEnabled()
@@ -298,7 +302,7 @@ TaisyncManager::_setEnabled()
_taiTelemetery - > start ( ) ;
}
# endif
_reqMask = REQ_ALL ;
_reqMask = static_cast < uint32_t > ( REQ_ALL ) ;
_workTimer . start ( 1000 ) ;
} else {
//-- Stop everything
@ -312,26 +316,28 @@ TaisyncManager::_setEnabled()
@@ -312,26 +316,28 @@ TaisyncManager::_setEnabled()
//-----------------------------------------------------------------------------
void
TaisyncManager : : _restoreVideoSettings ( Fact * setting )
{
SettingsFact * pFact = dynamic_cast < SettingsFact * > ( setting ) ;
if ( pFact ) {
pFact - > setVisible ( qgcApp ( ) - > toolbox ( ) - > corePlugin ( ) - > adjustSettingMetaData ( VideoSettings : : settingsGroup , * setting - > metaData ( ) ) ) ;
}
}
//-----------------------------------------------------------------------------
void
TaisyncManager : : _setVideoEnabled ( )
{
//-- Check both if video is enabled and Taisync support itself is enabled as well.
bool enable = _appSettings - > enableTaisyncVideo ( ) - > rawValue ( ) . toBool ( ) & & _appSettings - > enableTaisync ( ) - > rawValue ( ) . toBool ( ) ;
if ( enable ) {
//-- If we haven't already saved the previous settings...
if ( ! _savedVideoSource . isValid ( ) ) {
//-- Hide video selection as we will be fixed to Taisync video and set the way we need it.
VideoSettings * pVSettings = qgcApp ( ) - > toolbox ( ) - > settingsManager ( ) - > videoSettings ( ) ;
//-- First save current state.
_savedVideoSource = pVSettings - > videoSource ( ) - > rawValue ( ) ;
_savedVideoUDP = pVSettings - > udpPort ( ) - > rawValue ( ) ;
_savedAR = pVSettings - > aspectRatio ( ) - > rawValue ( ) ;
_savedVideoState = pVSettings - > visible ( ) ;
//-- Now set it up the way we need it do be.
pVSettings - > setVisible ( false ) ;
pVSettings - > udpPort ( ) - > setRawValue ( 5600 ) ;
pVSettings - > aspectRatio ( ) - > setRawValue ( 1024.0 / 768.0 ) ;
pVSettings - > videoSource ( ) - > setRawValue ( QString ( VideoSettings : : videoSourceUDP ) ) ;
}
//-- Set it up the way we need it do be.
VideoSettings * pVSettings = qgcApp ( ) - > toolbox ( ) - > settingsManager ( ) - > videoSettings ( ) ;
pVSettings - > setVisible ( false ) ;
pVSettings - > udpPort ( ) - > setRawValue ( 5600 ) ;
//-- TODO: this AR must come from somewhere
pVSettings - > aspectRatio ( ) - > setRawValue ( 1024.0 / 768.0 ) ;
pVSettings - > videoSource ( ) - > setRawValue ( QString ( VideoSettings : : videoSourceUDP ) ) ;
# if defined(__ios__) || defined(__android__)
if ( ! _taiVideo ) {
//-- iOS and Android receive raw h.264 and need a different pipeline
@ -350,14 +356,11 @@ TaisyncManager::_setVideoEnabled()
@@ -350,14 +356,11 @@ TaisyncManager::_setVideoEnabled()
_taiVideo = nullptr ;
}
# endif
if ( ! _savedVideoSource . isValid ( ) ) {
VideoSettings * pVSettings = qgcApp ( ) - > toolbox ( ) - > settingsManager ( ) - > videoSettings ( ) ;
pVSettings - > videoSource ( ) - > setRawValue ( _savedVideoSource ) ;
pVSettings - > udpPort ( ) - > setRawValue ( _savedVideoUDP ) ;
pVSettings - > aspectRatio ( ) - > setRawValue ( _savedAR ) ;
pVSettings - > setVisible ( _savedVideoState ) ;
_savedVideoSource . clear ( ) ;
}
VideoSettings * pVSettings = qgcApp ( ) - > toolbox ( ) - > settingsManager ( ) - > videoSettings ( ) ;
_restoreVideoSettings ( pVSettings - > videoSource ( ) ) ;
_restoreVideoSettings ( pVSettings - > aspectRatio ( ) ) ;
_restoreVideoSettings ( pVSettings - > udpPort ( ) ) ;
pVSettings - > setVisible ( true ) ;
}
_enableVideo = enable ;
}
@ -422,8 +425,10 @@ TaisyncManager::_checkTaisync()
@@ -422,8 +425,10 @@ TaisyncManager::_checkTaisync()
{
if ( _enabled ) {
if ( ! _isConnected ) {
if ( ! _taiSettings - > isServerRunning ( ) ) {
_taiSettings - > start ( ) ;
if ( _taiSettings ) {
if ( ! _taiSettings - > isServerRunning ( ) ) {
_taiSettings - > start ( ) ;
}
}
} else {
//qCDebug(TaisyncVerbose) << bin << _reqMask;