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.
* Support mavlink terrain protocol which queries gcs for terrain height information. Allows planning missions with TERRAIN\_FRAME.
* Fly: New instrument values display/editing 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.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
* 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
......
......@@ -912,6 +912,11 @@ void APMFirmwarePlugin::guidedModeChangeAltitude(Vehicle* vehicle, double altitu
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);
mavlink_message_t msg;
......
......@@ -639,8 +639,7 @@ Item {
{
name: qsTr("Action"),
iconSource: "/res/action.svg",
buttonVisible: !_guidedController.showPause,
buttonEnabled: _anyActionAvailable,
buttonVisible: _anyActionAvailable,
action: -1
}
]
......
......@@ -203,7 +203,12 @@ Item {
}
_outputState()
}
// End of hack
onShowChangeAltChanged: {
if (_corePlugin.guidedActionsControllerLogging()) {
console.log("showChangeAlt", showChangeAlt)
}
_outputState()
}
on_VehicleFlyingChanged: {
_outputState()
......
......@@ -31,6 +31,11 @@ Rectangle {
}
property bool allChecksPassed: false
property var vehicleCopy: activeVehicle
onVehicleCopyChanged: {
checkListRepeater.model.reset()
}
onAllChecksPassedChanged: {
if (allChecksPassed) {
......
......@@ -27,6 +27,7 @@
#include <QRegularExpression>
#include <QFontDatabase>
#include <QQuickWindow>
#include <QQuickImageProvider>
#ifdef QGC_ENABLE_BLUETOOTH
#include <QBluetoothLocalDevice>
......@@ -102,6 +103,7 @@
#include "TrajectoryPoints.h"
#include "ValuesWidgetController.h"
#include "RCToParamDialogController.h"
#include "QGCImageProvider.h"
#if defined(QGC_ENABLE_PAIRING)
#include "PairingManager.h"
......@@ -573,6 +575,10 @@ bool QGCApplication::_initForNormalAppBoot()
_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();
if (rootWindow) {
......
......@@ -43,7 +43,13 @@ DECLARE_SETTINGGROUP(App, "")
SettingsFact* savePathFact = qobject_cast<SettingsFact*>(savePath());
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()) {
#endif
#ifdef __mobile__
#ifdef __ios__
QDir rootDir = QDir(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation));
......
......@@ -117,5 +117,12 @@
"longDescription": "Disable Video Stream when disarmed.",
"type": "bool",
"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)
DECLARE_SETTINGSFACT(VideoSettings, rtspTimeout)
DECLARE_SETTINGSFACT(VideoSettings, streamEnabled)
DECLARE_SETTINGSFACT(VideoSettings, disableWhenDisarmed)
DECLARE_SETTINGSFACT(VideoSettings, lowLatencyMode)
DECLARE_SETTINGSFACT_NO_FUNC(VideoSettings, videoSource)
{
......
......@@ -34,6 +34,7 @@ public:
DEFINE_SETTINGFACT(rtspTimeout)
DEFINE_SETTINGFACT(streamEnabled)
DEFINE_SETTINGFACT(disableWhenDisarmed)
DEFINE_SETTINGFACT(lowLatencyMode)
Q_PROPERTY(bool streamConfigured READ streamConfigured NOTIFY streamConfiguredChanged)
Q_PROPERTY(QString rtspVideoSource READ rtspVideoSource CONSTANT)
......
......@@ -538,6 +538,7 @@ void Vehicle::_commonInit()
// Set video stream to udp if running ArduSub and Video is disabled
if (sub() && _settingsManager->videoSettings()->videoSource()->rawValue() == VideoSettings::videoDisabled) {
_settingsManager->videoSettings()->videoSource()->setRawValue(VideoSettings::videoSourceUDPH264);
_settingsManager->videoSettings()->lowLatencyMode()->setRawValue(true);
}
//-- Airspace Management
......
......@@ -89,6 +89,7 @@ VideoManager::setToolbox(QGCToolbox *toolbox)
connect(_videoSettings->rtspUrl(), &Fact::rawValueChanged, this, &VideoManager::_rtspUrlChanged);
connect(_videoSettings->tcpUrl(), &Fact::rawValueChanged, this, &VideoManager::_tcpUrlChanged);
connect(_videoSettings->aspectRatio(), &Fact::rawValueChanged, this, &VideoManager::_aspectRatioChanged);
connect(_videoSettings->lowLatencyMode(),&Fact::rawValueChanged, this, &VideoManager::_lowLatencyModeChanged);
MultiVehicleManager *pVehicleMgr = qgcApp()->toolbox()->multiVehicleManager();
connect(pVehicleMgr, &MultiVehicleManager::activeVehicleChanged, this, &VideoManager::_setActiveVehicle);
......@@ -422,6 +423,13 @@ VideoManager::_tcpUrlChanged()
_restartVideo();
}
//-----------------------------------------------------------------------------
void
VideoManager::_lowLatencyModeChanged()
{
restartVideo();
}
//-----------------------------------------------------------------------------
bool
VideoManager::hasVideo()
......
......@@ -105,6 +105,7 @@ protected slots:
void _udpPortChanged ();
void _rtspUrlChanged ();
void _tcpUrlChanged ();
void _lowLatencyModeChanged ();
void _updateUVC ();
void _setActiveVehicle (Vehicle* vehicle);
void _aspectRatioChanged ();
......
......@@ -1033,6 +1033,16 @@ Rectangle {
fact: QGroundControl.settingsManager.videoSettings.disableWhenDisarmed
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