From e01c814e63a5a5eaba01a46121c57cf9834e1837 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Thu, 25 Jul 2019 09:28:19 -0700 Subject: [PATCH 01/13] Update for 3.5.4 release --- ChangeLog.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 8527653..c35bf8f 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -8,20 +8,20 @@ Note: This file only contains high level features or important fixes. * Major rewrite and bug fix pass through Structure Scan. Previous version had such bad problems that it can no longer be supported. Plans with Structure Scan will need to be recreated. New QGC will not load old Structure Scan plans. -### 3.5.4 - Not yet released +### 3.5.4 - Stable * Update windows drivers * Add support for FMUK66 flashing/connection * Guard against null geometry coming from gstreamer which can cause crashes * Add .apj file selection support to custom firmware flash -### 3.5.3 - Stable +### 3.5.3 * Change minimum RTK Survey-In limit to 0.01 meters * Change Windows driver detection logic * Fix crash when clicking on GeoFence polygon vertex * PX4: Fix missing ```MC_YAW_FF``` parameter in PID Tuning * ArduPilot: Fix parameter file save generating bad characters from git hash -### 3.5.2 - Stable +### 3.5.2 * Fix Ubuntu AppImage startup failure ### 3.5.1 From 385aa8981a18756db4be65bb2f33c9510847c441 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Thu, 25 Jul 2019 09:39:25 -0700 Subject: [PATCH 02/13] TTS update --- src/Audio/AudioOutput.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Audio/AudioOutput.cc b/src/Audio/AudioOutput.cc index fe6234a..6fb9519 100644 --- a/src/Audio/AudioOutput.cc +++ b/src/Audio/AudioOutput.cc @@ -125,6 +125,9 @@ QString AudioOutput::fixTextMessageForAudio(const QString& string) { if(result.contains("PREARM", Qt::CaseInsensitive)) { result.replace("PREARM", "pre arm", Qt::CaseInsensitive); } + if(result.contains("PITOT", Qt::CaseInsensitive)) { + result.replace("PITOT", "pee toe", Qt::CaseInsensitive); + } // Convert negative numbers QRegularExpression re(QStringLiteral("(-)[0-9]*\\.?[0-9]")); From 1d8d0db275c05e6fbbc092aa06741ea2bcf18832 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Sat, 27 Jul 2019 11:09:30 -0700 Subject: [PATCH 03/13] Expose reset button enable/disable --- src/QmlControls/PreFlightCheckList.qml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/QmlControls/PreFlightCheckList.qml b/src/QmlControls/PreFlightCheckList.qml index f36316b..692ce33 100644 --- a/src/QmlControls/PreFlightCheckList.qml +++ b/src/QmlControls/PreFlightCheckList.qml @@ -23,6 +23,10 @@ Rectangle { property alias model: checkListRepeater.model + function setResetEnabled(resetEnabled) { + resetButton.enabled = resetEnabled + } + property bool _passed: false function _handleGroupPassedChanged(index, passed) { @@ -80,6 +84,7 @@ Rectangle { font.pointSize: ScreenTools.mediumFontPointSize } QGCButton { + id: resetButton width: 1.2*ScreenTools.defaultFontPixelHeight height: 1.2*ScreenTools.defaultFontPixelHeight anchors.right: parent.right From 785d797c241adfb28be13d29133f1dd67c2a739d Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Wed, 14 Aug 2019 15:00:19 -0700 Subject: [PATCH 04/13] Use clearer "Approach Altitude" terminology for loiter altitude. --- src/MissionManager/FWLandingPattern.FactMetaData.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MissionManager/FWLandingPattern.FactMetaData.json b/src/MissionManager/FWLandingPattern.FactMetaData.json index 1970cdb..61906dd 100644 --- a/src/MissionManager/FWLandingPattern.FactMetaData.json +++ b/src/MissionManager/FWLandingPattern.FactMetaData.json @@ -20,7 +20,7 @@ }, { "name": "LoiterAltitude", - "shortDescription": "Aircraft will proceed to the loiter point and loiter until it reaches this altitude. Once altitude is reached the aircraft will proceed to land.", + "shortDescription": "Aircraft will proceed to the loiter point and loiter downwards until it reaches this approach altitude. Once altitude is reached the aircraft will proceed to land.", "type": "double", "units": "m", "decimalPlaces": 1, From 232fe52f6e16c4e7290fe16b6d5935da7b6d5a6a Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Wed, 14 Aug 2019 15:39:43 -0700 Subject: [PATCH 05/13] Terminology change --- src/PlanView/FWLandingPatternEditor.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PlanView/FWLandingPatternEditor.qml b/src/PlanView/FWLandingPatternEditor.qml index 2bfbd1e..4c5e081 100644 --- a/src/PlanView/FWLandingPatternEditor.qml +++ b/src/PlanView/FWLandingPatternEditor.qml @@ -66,7 +66,7 @@ Rectangle { anchors.left: parent.left anchors.right: parent.right factList: [ missionItem.loiterAltitude, missionItem.loiterRadius ] - factLabels: [ qsTr("Altitude"), qsTr("Radius") ] + factLabels: [ qsTr("Approach Alt"), qsTr("Radius") ] } Item { width: 1; height: _spacer } From 2fde74d255baaa62b4582bd78ce35b6b95e783e6 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Wed, 14 Aug 2019 16:19:10 -0700 Subject: [PATCH 06/13] Turn on popup errors for mobile builds --- src/QGCApplication.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/QGCApplication.cc b/src/QGCApplication.cc index 109b5ab..f079d25 100644 --- a/src/QGCApplication.cc +++ b/src/QGCApplication.cc @@ -478,6 +478,12 @@ bool QGCApplication::_initForNormalAppBoot(void) #ifdef __mobile__ _qmlAppEngine = toolbox()->corePlugin()->createRootWindow(this); + + // Safe to show popup error messages now that main window is created + UASMessageHandler* msgHandler = qgcApp()->toolbox()->uasMessageHandler(); + if (msgHandler) { + msgHandler->showErrorsInToolbar(); + } #else // Start the user interface MainWindow* mainWindow = MainWindow::_create(); From c31d4a7ec7a9fe6adf9937c5f384d0b89a58d8a1 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Tue, 20 Aug 2019 13:56:30 -0700 Subject: [PATCH 07/13] Fix for android builds --- .travis.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6ebda7b..ffbebe0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,8 +23,7 @@ matrix: env: SPEC=linux-g++-64 CONFIG=debug services: xvfb sudo: required - - os: android - dist: trusty + - dist: trusty language: android env: SPEC=android-g++ CONFIG=installer sudo: false From bf88ab15c56cb17bf053c99e454942d58e341c2e Mon Sep 17 00:00:00 2001 From: Pierre TILAK Date: Mon, 26 Aug 2019 08:59:20 +1200 Subject: [PATCH 08/13] MissionItem memset to 8 instead of 0 --- src/MissionManager/MissionManager.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MissionManager/MissionManager.cc b/src/MissionManager/MissionManager.cc index e5fc3bd..198ee4d 100644 --- a/src/MissionManager/MissionManager.cc +++ b/src/MissionManager/MissionManager.cc @@ -46,7 +46,7 @@ void MissionManager::writeArduPilotGuidedMissionItem(const QGeoCoordinate& gotoC mavlink_message_t messageOut; mavlink_mission_item_t missionItem; - memset(&missionItem, 8, sizeof(missionItem)); + memset(&missionItem, 0, sizeof(missionItem)); missionItem.target_system = _vehicle->id(); missionItem.target_component = _vehicle->defaultComponentId(); missionItem.seq = 0; From a8883136bfa69b0543de36d49d1601f43f837832 Mon Sep 17 00:00:00 2001 From: Pierre TILAK Date: Tue, 27 Aug 2019 09:06:08 +1200 Subject: [PATCH 09/13] Update ChangeLog --- ChangeLog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index c35bf8f..e01883f 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -8,6 +8,9 @@ Note: This file only contains high level features or important fixes. * Major rewrite and bug fix pass through Structure Scan. Previous version had such bad problems that it can no longer be supported. Plans with Structure Scan will need to be recreated. New QGC will not load old Structure Scan plans. +### 3.5.5 - Not yet released +* Fix mavlink message memset which cause wrong commands to be sent on ArduPilot GotoLocation. + ### 3.5.4 - Stable * Update windows drivers * Add support for FMUK66 flashing/connection From 54929a0b598f06fbe026c5adc8b13a619abceb9d Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Wed, 4 Sep 2019 13:45:47 -0700 Subject: [PATCH 10/13] Disable video workaround for gstreamer crashes --- src/FlightDisplay/FlightDisplayViewVideo.qml | 102 +++++++++++++++------------ src/Settings/VideoSettings.h | 2 + 2 files changed, 60 insertions(+), 44 deletions(-) diff --git a/src/FlightDisplay/FlightDisplayViewVideo.qml b/src/FlightDisplay/FlightDisplayViewVideo.qml index 365c057..8b2e231 100644 --- a/src/FlightDisplay/FlightDisplayViewVideo.qml +++ b/src/FlightDisplay/FlightDisplayViewVideo.qml @@ -72,53 +72,67 @@ Item { //-- Fit Width return _ar != 0.0 ? parent.width * (1 / _ar) : parent.height } - QGCVideoBackground { - id: videoContent - height: parent.getHeight() - width: parent.getWidth() - anchors.centerIn: parent - receiver: _videoReceiver - display: _videoReceiver && _videoReceiver.videoSurface - visible: _videoReceiver && _videoReceiver.videoRunning - Connections { - target: _videoReceiver - onImageFileChanged: { - videoContent.grabToImage(function(result) { - if (!result.saveToFile(_videoReceiver.imageFile)) { - console.error('Error capturing video frame'); - } - }); + Component { + id: videoBackgroundComponent + QGCVideoBackground { + id: videoContent + receiver: _videoReceiver + display: _videoReceiver && _videoReceiver.videoSurface + + Connections { + target: _videoReceiver + onImageFileChanged: { + videoContent.grabToImage(function(result) { + if (!result.saveToFile(_videoReceiver.imageFile)) { + console.error('Error capturing video frame'); + } + }); + } + } + Rectangle { + color: Qt.rgba(1,1,1,0.5) + height: parent.height + width: 1 + x: parent.width * 0.33 + visible: _showGrid && !QGroundControl.videoManager.fullScreen + } + Rectangle { + color: Qt.rgba(1,1,1,0.5) + height: parent.height + width: 1 + x: parent.width * 0.66 + visible: _showGrid && !QGroundControl.videoManager.fullScreen + } + Rectangle { + color: Qt.rgba(1,1,1,0.5) + width: parent.width + height: 1 + y: parent.height * 0.33 + visible: _showGrid && !QGroundControl.videoManager.fullScreen + } + Rectangle { + color: Qt.rgba(1,1,1,0.5) + width: parent.width + height: 1 + y: parent.height * 0.66 + visible: _showGrid && !QGroundControl.videoManager.fullScreen } - } - Rectangle { - color: Qt.rgba(1,1,1,0.5) - height: parent.height - width: 1 - x: parent.width * 0.33 - visible: _showGrid && !QGroundControl.videoManager.fullScreen - } - Rectangle { - color: Qt.rgba(1,1,1,0.5) - height: parent.height - width: 1 - x: parent.width * 0.66 - visible: _showGrid && !QGroundControl.videoManager.fullScreen - } - Rectangle { - color: Qt.rgba(1,1,1,0.5) - width: parent.width - height: 1 - y: parent.height * 0.33 - visible: _showGrid && !QGroundControl.videoManager.fullScreen - } - Rectangle { - color: Qt.rgba(1,1,1,0.5) - width: parent.width - height: 1 - y: parent.height * 0.66 - visible: _showGrid && !QGroundControl.videoManager.fullScreen } } + Loader { + // GStreamer is causing crashes on Lenovo laptop OpenGL Intel drivers. In order to workaround this + // we don't load a QGCVideoBackground object when video is disabled. This prevents any video rendering + // code from running. Setting QGCVideoBackground.receiver/display = null does not work to prevent any + // video OpenGL from being generated. Hence the Loader to completely remove it. + height: parent.getHeight() + width: parent.getWidth() + anchors.centerIn: parent + visible: _videoReceiver && _videoReceiver.videoRunning + sourceComponent: videoDisabled ? null : videoBackgroundComponent + + property bool videoDisabled: QGroundControl.settingsManager.videoSettings.videoSource.rawValue === QGroundControl.settingsManager.videoSettings.disabledVideoSource + } + MouseArea { anchors.fill: parent onDoubleClicked: { diff --git a/src/Settings/VideoSettings.h b/src/Settings/VideoSettings.h index a419b6a..7288e0c 100644 --- a/src/Settings/VideoSettings.h +++ b/src/Settings/VideoSettings.h @@ -40,12 +40,14 @@ public: Q_PROPERTY(QString udpVideoSource READ udpVideoSource CONSTANT) Q_PROPERTY(QString tcpVideoSource READ tcpVideoSource CONSTANT) Q_PROPERTY(QString mpegtsVideoSource READ mpegtsVideoSource CONSTANT) + Q_PROPERTY(QString disabledVideoSource READ disabledVideoSource CONSTANT) bool streamConfigured (); QString rtspVideoSource () { return videoSourceRTSP; } QString udpVideoSource () { return videoSourceUDP; } QString tcpVideoSource () { return videoSourceTCP; } QString mpegtsVideoSource () { return videoSourceMPEGTS; } + QString disabledVideoSource () { return videoDisabled; } static const char* videoSourceNoVideo; static const char* videoDisabled; From 068d6f26797e9514751a7e079219414aef477ac5 Mon Sep 17 00:00:00 2001 From: Gus Grubba Date: Mon, 7 Oct 2019 13:51:31 -0400 Subject: [PATCH 11/13] For TTS to use English --- src/Audio/AudioOutput.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Audio/AudioOutput.cc b/src/Audio/AudioOutput.cc index 6fb9519..1845565 100644 --- a/src/Audio/AudioOutput.cc +++ b/src/Audio/AudioOutput.cc @@ -20,6 +20,11 @@ AudioOutput::AudioOutput(QGCApplication* app, QGCToolbox* toolbox) : QGCTool(app, toolbox) , _tts(new QTextToSpeech(this)) { + //-- Force TTS engine to English as all incoming messages from the autopilot + // are in English and not localized. +#ifdef Q_OS_LINUX + _tts->setLocale(QLocale("en_US")); +#endif connect(_tts, &QTextToSpeech::stateChanged, this, &AudioOutput::_stateChanged); } From a58a3cfc59b6b51c0150db12938c62e6a400bfe1 Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Wed, 16 Oct 2019 11:02:54 -0700 Subject: [PATCH 12/13] Remove deprecated Resume Mission action --- src/FlightDisplay/FlightDisplayView.qml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/FlightDisplay/FlightDisplayView.qml b/src/FlightDisplay/FlightDisplayView.qml index 6c60bb2..e21e5e5 100644 --- a/src/FlightDisplay/FlightDisplayView.qml +++ b/src/FlightDisplay/FlightDisplayView.qml @@ -584,12 +584,6 @@ QGCView { visible: _guidedController.showContinueMission }, { - title: _guidedController.resumeMissionTitle, - text: _guidedController.resumeMissionMessage, - action: _guidedController.actionResumeMission, - visible: _guidedController.showResumeMission - }, - { title: _guidedController.changeAltTitle, text: _guidedController.changeAltMessage, action: _guidedController.actionChangeAlt, From 9634bad8c6477fe8c1bc8f2d37ca09f41c66d711 Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Wed, 16 Oct 2019 12:36:59 -0700 Subject: [PATCH 13/13] Disable Pause if fixed wing on approach --- ChangeLog.md | 1 + src/FlightDisplay/GuidedActionsController.qml | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index e01883f..c7cb752 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -10,6 +10,7 @@ Note: This file only contains high level features or important fixes. ### 3.5.5 - Not yet released * Fix mavlink message memset which cause wrong commands to be sent on ArduPilot GotoLocation. +* Disable Pause when fixed wing is on landing approach. ### 3.5.4 - Stable * Update windows drivers diff --git a/src/FlightDisplay/GuidedActionsController.qml b/src/FlightDisplay/GuidedActionsController.qml index c099ed6..9ba3c0f 100644 --- a/src/FlightDisplay/GuidedActionsController.qml +++ b/src/FlightDisplay/GuidedActionsController.qml @@ -101,10 +101,10 @@ Item { property bool showLand: _guidedActionsEnabled && _activeVehicle.guidedModeSupported && _vehicleArmed && !_activeVehicle.fixedWing && !_vehicleInLandMode property bool showStartMission: _guidedActionsEnabled && _missionAvailable && !_missionActive && !_vehicleFlying property bool showContinueMission: _guidedActionsEnabled && _missionAvailable && !_missionActive && _vehicleArmed && _vehicleFlying && (_currentMissionIndex < _missionItemCount - 1) - property bool showPause: _guidedActionsEnabled && _vehicleArmed && _activeVehicle.pauseVehicleSupported && _vehicleFlying && !_vehiclePaused + property bool showPause: _guidedActionsEnabled && _vehicleArmed && _activeVehicle.pauseVehicleSupported && _vehicleFlying && !_vehiclePaused && !_fixedWingOnApproach property bool showChangeAlt: _guidedActionsEnabled && _vehicleFlying && _activeVehicle.guidedModeSupported && _vehicleArmed && !_missionActive property bool showOrbit: _guidedActionsEnabled && !_hideOrbit && _vehicleFlying && _activeVehicle.orbitModeSupported && !_missionActive - property bool showLandAbort: _guidedActionsEnabled && _vehicleFlying && _activeVehicle.fixedWing && _vehicleLanding + property bool showLandAbort: _guidedActionsEnabled && _vehicleFlying && _fixedWingOnApproach property bool showGotoLocation: _guidedActionsEnabled && _vehicleFlying // Note: The '_missionItemCount - 2' is a hack to not trigger resume mission when a mission ends with an RTL item @@ -132,6 +132,7 @@ Item { property bool _hideOrbit: !QGroundControl.corePlugin.options.guidedBarShowOrbit property bool _vehicleWasFlying: false property bool _rcRSSIAvailable: _activeVehicle ? _activeVehicle.rcRSSI > 0 && _activeVehicle.rcRSSI <= 100 : false + property bool _fixedWingOnApproach: _activeVehicle ? _activeVehicle.fixedWing && _vehicleLanding : false // You can turn on log output for GuidedActionsController by turning on GuidedActionsControllerLog category property bool __guidedModeSupported: _activeVehicle ? _activeVehicle.guidedModeSupported : false