Commit 4cdf8022 authored by DoinLakeFlyer's avatar DoinLakeFlyer

parents 1c4e2252 a5ee3e26
...@@ -7,13 +7,15 @@ Note: This file only contains high level features or important fixes. ...@@ -7,13 +7,15 @@ Note: This file only contains high level features or important fixes.
* Support mavlink terrain protocol which queries gcs for terrain height information. Allows planning missions with TERRAIN\_FRAME. * Support mavlink terrain protocol which queries gcs for terrain height information. Allows planning missions with TERRAIN\_FRAME.
* Fly: New instrument values display/editing support * Fly: New instrument values display/editing support
* Plan: Added new VTOL Landing Pattern support * Plan: Added new VTOL Landing Pattern support
* Plan: Much better conversion of missions to KML for 3d visualization/verification of missions
## 4.0 ## 4.0
### 4.0.6 - Not yet released ### 4.0.6 - Not yet released
* Plan: Much better conversion of missions to KML for 3d visualization/verification of missions
* Analyze/Log Download - Fix download on mobile versions of QGC * Analyze/Log Download - Fix download on mobile versions of QGC
* Fly: Fix problems where Continue Mission and Change Altitude were not available after a Mission Pause.
* PX4 Flow: Fix video display problem
### 4.0.5 - Stable ### 4.0.5 - Stable
......
...@@ -912,6 +912,11 @@ void APMFirmwarePlugin::guidedModeChangeAltitude(Vehicle* vehicle, double altitu ...@@ -912,6 +912,11 @@ void APMFirmwarePlugin::guidedModeChangeAltitude(Vehicle* vehicle, double altitu
return; return;
} }
if (abs(altitudeChange) < 0.01) {
// This prevents unecessary changes to Guided mode when the users selects pause and doesn't really touch the altitude slider
return;
}
setGuidedMode(vehicle, true); setGuidedMode(vehicle, true);
mavlink_message_t msg; mavlink_message_t msg;
......
...@@ -639,8 +639,7 @@ Item { ...@@ -639,8 +639,7 @@ Item {
{ {
name: qsTr("Action"), name: qsTr("Action"),
iconSource: "/res/action.svg", iconSource: "/res/action.svg",
buttonVisible: !_guidedController.showPause, buttonVisible: _anyActionAvailable,
buttonEnabled: _anyActionAvailable,
action: -1 action: -1
} }
] ]
......
...@@ -203,7 +203,12 @@ Item { ...@@ -203,7 +203,12 @@ Item {
} }
_outputState() _outputState()
} }
// End of hack onShowChangeAltChanged: {
if (_corePlugin.guidedActionsControllerLogging()) {
console.log("showChangeAlt", showChangeAlt)
}
_outputState()
}
on_VehicleFlyingChanged: { on_VehicleFlyingChanged: {
_outputState() _outputState()
......
...@@ -31,6 +31,11 @@ Rectangle { ...@@ -31,6 +31,11 @@ Rectangle {
} }
property bool allChecksPassed: false property bool allChecksPassed: false
property var vehicleCopy: activeVehicle
onVehicleCopyChanged: {
checkListRepeater.model.reset()
}
onAllChecksPassedChanged: { onAllChecksPassedChanged: {
if (allChecksPassed) { if (allChecksPassed) {
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <QRegularExpression> #include <QRegularExpression>
#include <QFontDatabase> #include <QFontDatabase>
#include <QQuickWindow> #include <QQuickWindow>
#include <QQuickImageProvider>
#ifdef QGC_ENABLE_BLUETOOTH #ifdef QGC_ENABLE_BLUETOOTH
#include <QBluetoothLocalDevice> #include <QBluetoothLocalDevice>
...@@ -102,6 +103,7 @@ ...@@ -102,6 +103,7 @@
#include "TrajectoryPoints.h" #include "TrajectoryPoints.h"
#include "ValuesWidgetController.h" #include "ValuesWidgetController.h"
#include "RCToParamDialogController.h" #include "RCToParamDialogController.h"
#include "QGCImageProvider.h"
#if defined(QGC_ENABLE_PAIRING) #if defined(QGC_ENABLE_PAIRING)
#include "PairingManager.h" #include "PairingManager.h"
...@@ -573,6 +575,10 @@ bool QGCApplication::_initForNormalAppBoot() ...@@ -573,6 +575,10 @@ bool QGCApplication::_initForNormalAppBoot()
_qmlAppEngine = toolbox()->corePlugin()->createRootWindow(this); _qmlAppEngine = toolbox()->corePlugin()->createRootWindow(this);
// Image provider for PX4 Flow
QQuickImageProvider* pImgProvider = dynamic_cast<QQuickImageProvider*>(qgcApp()->toolbox()->imageProvider());
_qmlAppEngine->addImageProvider(QStringLiteral("QGCImages"), pImgProvider);
QQuickWindow* rootWindow = (QQuickWindow*)qgcApp()->mainRootWindow(); QQuickWindow* rootWindow = (QQuickWindow*)qgcApp()->mainRootWindow();
if (rootWindow) { if (rootWindow) {
......
...@@ -43,7 +43,13 @@ DECLARE_SETTINGGROUP(App, "") ...@@ -43,7 +43,13 @@ DECLARE_SETTINGGROUP(App, "")
SettingsFact* savePathFact = qobject_cast<SettingsFact*>(savePath()); SettingsFact* savePathFact = qobject_cast<SettingsFact*>(savePath());
QString appName = qgcApp()->applicationName(); QString appName = qgcApp()->applicationName();
#ifdef __mobile__
// Mobile builds always use the runtime generated location for savePath. The reason is that for example on iOS the save path includes
// a UID for the app in it. When you then update the app that UID could change which in turn makes any saved value invalid.
if (true) {
#else
if (savePathFact->rawValue().toString().isEmpty() && _nameToMetaDataMap[savePathName]->rawDefaultValue().toString().isEmpty()) { if (savePathFact->rawValue().toString().isEmpty() && _nameToMetaDataMap[savePathName]->rawDefaultValue().toString().isEmpty()) {
#endif
#ifdef __mobile__ #ifdef __mobile__
#ifdef __ios__ #ifdef __ios__
QDir rootDir = QDir(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation)); QDir rootDir = QDir(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation));
......
...@@ -117,5 +117,12 @@ ...@@ -117,5 +117,12 @@
"longDescription": "Disable Video Stream when disarmed.", "longDescription": "Disable Video Stream when disarmed.",
"type": "bool", "type": "bool",
"defaultValue": false "defaultValue": false
},
{
"name": "lowLatencyMode",
"shortDescription": "Tweaks video for lower latency",
"longDescription": "If this option is enabled, the rtpjitterbuffer is removed and the video sink is set to assynchronous mode, reducing the latency by about 200 ms.",
"type": "bool",
"defaultValue": false
} }
] ]
...@@ -82,6 +82,7 @@ DECLARE_SETTINGSFACT(VideoSettings, enableStorageLimit) ...@@ -82,6 +82,7 @@ DECLARE_SETTINGSFACT(VideoSettings, enableStorageLimit)
DECLARE_SETTINGSFACT(VideoSettings, rtspTimeout) DECLARE_SETTINGSFACT(VideoSettings, rtspTimeout)
DECLARE_SETTINGSFACT(VideoSettings, streamEnabled) DECLARE_SETTINGSFACT(VideoSettings, streamEnabled)
DECLARE_SETTINGSFACT(VideoSettings, disableWhenDisarmed) DECLARE_SETTINGSFACT(VideoSettings, disableWhenDisarmed)
DECLARE_SETTINGSFACT(VideoSettings, lowLatencyMode)
DECLARE_SETTINGSFACT_NO_FUNC(VideoSettings, videoSource) DECLARE_SETTINGSFACT_NO_FUNC(VideoSettings, videoSource)
{ {
......
...@@ -34,6 +34,7 @@ public: ...@@ -34,6 +34,7 @@ public:
DEFINE_SETTINGFACT(rtspTimeout) DEFINE_SETTINGFACT(rtspTimeout)
DEFINE_SETTINGFACT(streamEnabled) DEFINE_SETTINGFACT(streamEnabled)
DEFINE_SETTINGFACT(disableWhenDisarmed) DEFINE_SETTINGFACT(disableWhenDisarmed)
DEFINE_SETTINGFACT(lowLatencyMode)
Q_PROPERTY(bool streamConfigured READ streamConfigured NOTIFY streamConfiguredChanged) Q_PROPERTY(bool streamConfigured READ streamConfigured NOTIFY streamConfiguredChanged)
Q_PROPERTY(QString rtspVideoSource READ rtspVideoSource CONSTANT) Q_PROPERTY(QString rtspVideoSource READ rtspVideoSource CONSTANT)
......
...@@ -538,6 +538,7 @@ void Vehicle::_commonInit() ...@@ -538,6 +538,7 @@ void Vehicle::_commonInit()
// Set video stream to udp if running ArduSub and Video is disabled // Set video stream to udp if running ArduSub and Video is disabled
if (sub() && _settingsManager->videoSettings()->videoSource()->rawValue() == VideoSettings::videoDisabled) { if (sub() && _settingsManager->videoSettings()->videoSource()->rawValue() == VideoSettings::videoDisabled) {
_settingsManager->videoSettings()->videoSource()->setRawValue(VideoSettings::videoSourceUDPH264); _settingsManager->videoSettings()->videoSource()->setRawValue(VideoSettings::videoSourceUDPH264);
_settingsManager->videoSettings()->lowLatencyMode()->setRawValue(true);
} }
//-- Airspace Management //-- Airspace Management
......
...@@ -89,6 +89,7 @@ VideoManager::setToolbox(QGCToolbox *toolbox) ...@@ -89,6 +89,7 @@ VideoManager::setToolbox(QGCToolbox *toolbox)
connect(_videoSettings->rtspUrl(), &Fact::rawValueChanged, this, &VideoManager::_rtspUrlChanged); connect(_videoSettings->rtspUrl(), &Fact::rawValueChanged, this, &VideoManager::_rtspUrlChanged);
connect(_videoSettings->tcpUrl(), &Fact::rawValueChanged, this, &VideoManager::_tcpUrlChanged); connect(_videoSettings->tcpUrl(), &Fact::rawValueChanged, this, &VideoManager::_tcpUrlChanged);
connect(_videoSettings->aspectRatio(), &Fact::rawValueChanged, this, &VideoManager::_aspectRatioChanged); connect(_videoSettings->aspectRatio(), &Fact::rawValueChanged, this, &VideoManager::_aspectRatioChanged);
connect(_videoSettings->lowLatencyMode(),&Fact::rawValueChanged, this, &VideoManager::_lowLatencyModeChanged);
MultiVehicleManager *pVehicleMgr = qgcApp()->toolbox()->multiVehicleManager(); MultiVehicleManager *pVehicleMgr = qgcApp()->toolbox()->multiVehicleManager();
connect(pVehicleMgr, &MultiVehicleManager::activeVehicleChanged, this, &VideoManager::_setActiveVehicle); connect(pVehicleMgr, &MultiVehicleManager::activeVehicleChanged, this, &VideoManager::_setActiveVehicle);
...@@ -422,6 +423,13 @@ VideoManager::_tcpUrlChanged() ...@@ -422,6 +423,13 @@ VideoManager::_tcpUrlChanged()
_restartVideo(); _restartVideo();
} }
//-----------------------------------------------------------------------------
void
VideoManager::_lowLatencyModeChanged()
{
restartVideo();
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool bool
VideoManager::hasVideo() VideoManager::hasVideo()
......
...@@ -105,6 +105,7 @@ protected slots: ...@@ -105,6 +105,7 @@ protected slots:
void _udpPortChanged (); void _udpPortChanged ();
void _rtspUrlChanged (); void _rtspUrlChanged ();
void _tcpUrlChanged (); void _tcpUrlChanged ();
void _lowLatencyModeChanged ();
void _updateUVC (); void _updateUVC ();
void _setActiveVehicle (Vehicle* vehicle); void _setActiveVehicle (Vehicle* vehicle);
void _aspectRatioChanged (); void _aspectRatioChanged ();
......
...@@ -1033,6 +1033,16 @@ Rectangle { ...@@ -1033,6 +1033,16 @@ Rectangle {
fact: QGroundControl.settingsManager.videoSettings.disableWhenDisarmed fact: QGroundControl.settingsManager.videoSettings.disableWhenDisarmed
visible: _isGst && QGroundControl.settingsManager.videoSettings.disableWhenDisarmed.visible visible: _isGst && QGroundControl.settingsManager.videoSettings.disableWhenDisarmed.visible
} }
QGCLabel {
text: qsTr("Low Latency Mode")
visible: _isGst && QGroundControl.settingsManager.videoSettings.lowLatencyMode.visible
}
FactCheckBox {
text: ""
fact: QGroundControl.settingsManager.videoSettings.lowLatencyMode
visible: _isGst && QGroundControl.settingsManager.videoSettings.lowLatencyMode.visible
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment