diff --git a/src/AutoPilotPlugins/PX4/SafetyComponent.qml b/src/AutoPilotPlugins/PX4/SafetyComponent.qml index 3b8efd8ebde75a23068afd73995bc5abdc211d03..314fd1ff3a9c4055a93e75f108974a47ad9884ba 100644 --- a/src/AutoPilotPlugins/PX4/SafetyComponent.qml +++ b/src/AutoPilotPlugins/PX4/SafetyComponent.qml @@ -43,7 +43,7 @@ SetupPage { property real _imageWidth: ScreenTools.defaultFontPixelWidth * 15 property real _imageHeight: ScreenTools.defaultFontPixelHeight * 3 - property Fact _disableLogging: controller.getParameterFact(-1, "SDLOG_MODE") + property Fact _enableLogging: controller.getParameterFact(-1, "SDLOG_MODE") property Fact _fenceAction: controller.getParameterFact(-1, "GF_ACTION") property Fact _fenceRadius: controller.getParameterFact(-1, "GF_MAX_HOR_DIST") property Fact _fenceAlt: controller.getParameterFact(-1, "GF_MAX_VER_DIST") @@ -498,7 +498,7 @@ SetupPage { Item { width: 1; height: _margins; Layout.columnSpan: 3 } QGCLabel { - text: qsTr("Vehicle Logging") + text: qsTr("Vehicle Telemetry Logging") Layout.columnSpan: 3 } @@ -507,10 +507,11 @@ SetupPage { Item { width: _margins; height: 1 } GridLayout { - id: loggingGrid - columns: 4 + id: loggingGrid + columns: 4 + columnSpacing: ScreenTools.defaultFontPixelWidth * 4 Item { - Layout.fillWidth: true + Layout.fillWidth: true } Image { mipmap: true @@ -522,13 +523,13 @@ SetupPage { height: _imageHeight } QGCCheckBox { - text: qsTr("Disable vehicle logging") - checkedState: _disableLogging ? (_disableLogging.value < 0 ? Qt.Checked : Qt.Unchecked) : Qt.Unchecked + text: qsTr("Enable telemetry logging to vehicle storage") + checkedState: _enableLogging ? (_enableLogging.value >= 0 ? Qt.Checked : Qt.Unchecked) : Qt.Unchecked Layout.minimumWidth: _editFieldWidth Layout.alignment: Qt.AlignVCenter onClicked: { - if(_disableLogging) { - _disableLogging.value = checked ? -1 : 0 + if(_enableLogging) { + _enableLogging.value = checked ? 0 : -1 } } } diff --git a/src/Settings/App.SettingsGroup.json b/src/Settings/App.SettingsGroup.json index 79c01e92d942a8a1e09ff2a9102e3a36d9707054..225fcdeff6bd7f1a5aee5e0a146db31aa3610199 100644 --- a/src/Settings/App.SettingsGroup.json +++ b/src/Settings/App.SettingsGroup.json @@ -237,10 +237,10 @@ "defaultValue": 0 }, { - "name": "disableLocalLogging", - "shortDescription": "Disable local logging", - "longDescription": "If this option is enabled nothing will be stored to disk.", + "name": "enableLocalLogging", + "shortDescription": "Enable local telemetry logging", + "longDescription": "If this option is enabled telemetry logs from vehicle will be stored to disk.", "type": "bool", - "defaultValue": false + "defaultValue": true } ] diff --git a/src/Settings/AppSettings.cc b/src/Settings/AppSettings.cc index 438c54d10b2eadcdee640c7a61904380691b21c8..77e0b8970a27beaefe7abbd19840975c28da0a2f 100644 --- a/src/Settings/AppSettings.cc +++ b/src/Settings/AppSettings.cc @@ -94,7 +94,7 @@ DECLARE_SETTINGSFACT(AppSettings, enableTaisync) DECLARE_SETTINGSFACT(AppSettings, enableTaisyncVideo) DECLARE_SETTINGSFACT(AppSettings, enableMicrohard) DECLARE_SETTINGSFACT(AppSettings, language) -DECLARE_SETTINGSFACT(AppSettings, disableLocalLogging) +DECLARE_SETTINGSFACT(AppSettings, enableLocalLogging) DECLARE_SETTINGSFACT_NO_FUNC(AppSettings, indoorPalette) { diff --git a/src/Settings/AppSettings.h b/src/Settings/AppSettings.h index 9c73005f83dbf736ea752caf7ee0c585817fac96..3dc1a763b56f129d807894d4b024259a30c3d1ea 100644 --- a/src/Settings/AppSettings.h +++ b/src/Settings/AppSettings.h @@ -48,7 +48,7 @@ public: DEFINE_SETTINGFACT(enableTaisyncVideo) DEFINE_SETTINGFACT(enableMicrohard) DEFINE_SETTINGFACT(language) - DEFINE_SETTINGFACT(disableLocalLogging) + DEFINE_SETTINGFACT(enableLocalLogging) // Although this is a global setting it only affects ArduPilot vehicle since PX4 automatically starts the stream from the vehicle side DEFINE_SETTINGFACT(apmStartMavlinkStreams) diff --git a/src/comm/MAVLinkProtocol.cc b/src/comm/MAVLinkProtocol.cc index 5f89daa86b6210071b559c4269bf11e9b282f5c3..f1288555e063f7450ac0e5e006a0be05e66f6bdf 100644 --- a/src/comm/MAVLinkProtocol.cc +++ b/src/comm/MAVLinkProtocol.cc @@ -405,7 +405,7 @@ void MAVLinkProtocol::_startLogging(void) return; } AppSettings* appSettings = _app->toolbox()->settingsManager()->appSettings(); - if(appSettings->disableLocalLogging()->rawValue().toBool()) { + if(!appSettings->enableLocalLogging()->rawValue().toBool()) { return; } #ifdef __mobile__ @@ -440,7 +440,7 @@ void MAVLinkProtocol::_stopLogging(void) if (_closeLogFile()) { if ((_vehicleWasArmed || _app->toolbox()->settingsManager()->appSettings()->telemetrySaveNotArmed()->rawValue().toBool()) && _app->toolbox()->settingsManager()->appSettings()->telemetrySave()->rawValue().toBool() && - !_app->toolbox()->settingsManager()->appSettings()->disableLocalLogging()->rawValue().toBool()) { + _app->toolbox()->settingsManager()->appSettings()->enableLocalLogging()->rawValue().toBool()) { emit saveTelemetryLog(_tempLogFile.fileName()); } else { QFile::remove(_tempLogFile.fileName()); diff --git a/src/ui/preferences/GeneralSettings.qml b/src/ui/preferences/GeneralSettings.qml index f73edb7e338b6285c49126f34168833ad8950eec..96b73bcbdc12ba28352c226942b69d3ea124478e 100644 --- a/src/ui/preferences/GeneralSettings.qml +++ b/src/ui/preferences/GeneralSettings.qml @@ -262,31 +262,6 @@ QGCView { property Fact _audioMuted: QGroundControl.settingsManager.appSettings.audioMuted } - FactCheckBox { - id: disableLogging - text: qsTr("Disable local logging") - fact: _disableLogging - visible: _disableLogging.visible - property Fact _disableLogging: QGroundControl.settingsManager.appSettings.disableLocalLogging - } - - FactCheckBox { - id: promptSaveLog - text: qsTr("Save telemetry log after each flight") - fact: _telemetrySave - visible: _telemetrySave.visible - enabled: !disableLogging.checked - property Fact _telemetrySave: QGroundControl.settingsManager.appSettings.telemetrySave - } - - FactCheckBox { - text: qsTr("Save telemetry log even if vehicle was not armed") - fact: _telemetrySaveNotArmed - visible: _telemetrySaveNotArmed.visible - enabled: promptSaveLog.checked && !disableLogging.checked - property Fact _telemetrySaveNotArmed: QGroundControl.settingsManager.appSettings.telemetrySaveNotArmed - } - FactCheckBox { text: qsTr("AutoLoad Missions") fact: _autoLoad @@ -378,6 +353,48 @@ QGCView { } } + Item { width: 1; height: _margins } + QGCLabel { + id: loggingSectionLabel + text: qsTr("Telemetry Logs from Vehicle") + } + Rectangle { + Layout.preferredHeight: loggingCol.height + (_margins * 2) + Layout.preferredWidth: loggingCol.width + (_margins * 2) + color: qgcPal.windowShade + Layout.fillWidth: true + ColumnLayout { + id: loggingCol + anchors.margins: _margins + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + spacing: _margins + FactCheckBox { + id: enableLogging + text: qsTr("Save telemetry logs to disk") + fact: _enableLogging + visible: _enableLogging.visible + property Fact _enableLogging: QGroundControl.settingsManager.appSettings.enableLocalLogging + } + FactCheckBox { + id: promptSaveLog + text: qsTr("Save telemetry log after each flight") + fact: _telemetrySave + visible: _telemetrySave.visible + enabled: enableLogging.checked + property Fact _telemetrySave: QGroundControl.settingsManager.appSettings.telemetrySave + } + FactCheckBox { + id: logIfNotArmed + text: qsTr("Save telemetry logs even if vehicle was not armed") + fact: _telemetrySaveNotArmed + visible: _telemetrySaveNotArmed.visible + enabled: promptSaveLog.checked && enableLogging.checked + property Fact _telemetrySaveNotArmed: QGroundControl.settingsManager.appSettings.telemetrySaveNotArmed + } + } + } + Item { width: 1; height: _margins } QGCLabel { diff --git a/src/ui/preferences/MavlinkSettings.qml b/src/ui/preferences/MavlinkSettings.qml index d2041356bb33a00d082eade5826c8eff1f4b1b87..639802fd59d45b5063a2582b3c2bf733ef3f1736 100644 --- a/src/ui/preferences/MavlinkSettings.qml +++ b/src/ui/preferences/MavlinkSettings.qml @@ -35,8 +35,8 @@ Rectangle { property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle property bool _showMavlinkLog: QGroundControl.corePlugin.options.showMavlinkLogOptions property bool _showAPMStreamRates: QGroundControl.apmFirmwareSupported && QGroundControl.settingsManager.apmMavlinkStreamRateSettings.visible - property Fact _disableLoggingFact: QGroundControl.settingsManager.appSettings.disableLocalLogging - property bool _disableLogging: _disableLogging ? _disableLogging.rawValue : false + property Fact _enableLoggingFact: QGroundControl.settingsManager.appSettings.enableLocalLogging + property bool _enableLogging: _enableLoggingFact ? _enableLoggingFact.rawValue : true QGCPalette { id: qgcPal } @@ -372,14 +372,14 @@ Rectangle { QGCButton { text: qsTr("Start Logging") width: (_valueWidth * 0.5) - (ScreenTools.defaultFontPixelWidth * 0.5) - enabled: !QGroundControl.mavlinkLogManager.logRunning && QGroundControl.mavlinkLogManager.canStartLog && !_disableLogging + enabled: !QGroundControl.mavlinkLogManager.logRunning && QGroundControl.mavlinkLogManager.canStartLog && _enableLogging onClicked: QGroundControl.mavlinkLogManager.startLogging() anchors.verticalCenter: parent.verticalCenter } QGCButton { text: qsTr("Stop Logging") width: (_valueWidth * 0.5) - (ScreenTools.defaultFontPixelWidth * 0.5) - enabled: QGroundControl.mavlinkLogManager.logRunning && !_disableLogging + enabled: QGroundControl.mavlinkLogManager.logRunning && _enableLogging onClicked: QGroundControl.mavlinkLogManager.stopLogging() anchors.verticalCenter: parent.verticalCenter } @@ -389,7 +389,7 @@ Rectangle { QGCCheckBox { text: qsTr("Enable automatic logging") checked: QGroundControl.mavlinkLogManager.enableAutoStart - enabled: !_disableLogging + enabled: _enableLogging onClicked: { QGroundControl.mavlinkLogManager.enableAutoStart = checked } @@ -434,7 +434,7 @@ Rectangle { id: emailField text: QGroundControl.mavlinkLogManager.emailAddress width: _valueWidth - enabled: !_disableLogging + enabled: _enableLogging inputMethodHints: Qt.ImhNoAutoUppercase | Qt.ImhEmailCharactersOnly anchors.verticalCenter: parent.verticalCenter onEditingFinished: { @@ -455,7 +455,7 @@ Rectangle { id: descField text: QGroundControl.mavlinkLogManager.description width: _valueWidth - enabled: !_disableLogging + enabled: _enableLogging anchors.verticalCenter: parent.verticalCenter onEditingFinished: { saveItems(); @@ -475,7 +475,7 @@ Rectangle { id: urlField text: QGroundControl.mavlinkLogManager.uploadURL width: _valueWidth - enabled: !_disableLogging + enabled: _enableLogging inputMethodHints: Qt.ImhNoAutoUppercase | Qt.ImhUrlCharactersOnly anchors.verticalCenter: parent.verticalCenter onEditingFinished: { @@ -496,7 +496,7 @@ Rectangle { id: videoUrlField text: QGroundControl.mavlinkLogManager.videoURL width: _valueWidth - enabled: !_disableLogging + enabled: _enableLogging inputMethodHints: Qt.ImhNoAutoUppercase | Qt.ImhUrlCharactersOnly anchors.verticalCenter: parent.verticalCenter } @@ -513,7 +513,7 @@ Rectangle { QGCComboBox { id: windCombo width: _valueWidth - enabled: !_disableLogging + enabled: _enableLogging model: ListModel { id: windItems ListElement { text: "Please Select"; value: -1 } @@ -550,7 +550,7 @@ Rectangle { QGCComboBox { id: ratingCombo width: _valueWidth - enabled: !_disableLogging + enabled: _enableLogging model: ListModel { id: ratingItems ListElement { text: "Please Select"; value: "notset"} @@ -591,7 +591,7 @@ Rectangle { frameVisible: false font.pointSize: ScreenTools.defaultFontPointSize text: QGroundControl.mavlinkLogManager.feedback - enabled: !_disableLogging + enabled: _enableLogging style: TextAreaStyle { textColor: qgcPal.windowShade backgroundColor: qgcPal.text @@ -603,7 +603,7 @@ Rectangle { QGCCheckBox { text: qsTr("Make this log publicly available") checked: QGroundControl.mavlinkLogManager.publicLog - enabled: !_disableLogging + enabled: _enableLogging onClicked: { QGroundControl.mavlinkLogManager.publicLog = checked } @@ -614,7 +614,7 @@ Rectangle { id: autoUploadCheck text: qsTr("Enable automatic log uploads") checked: QGroundControl.mavlinkLogManager.enableAutoUpload - enabled: !_disableLogging + enabled: _enableLogging onClicked: { saveItems(); if(checked && QGroundControl.mavlinkLogManager.emailAddress === "") @@ -626,7 +626,7 @@ Rectangle { QGCCheckBox { text: qsTr("Delete log file after uploading") checked: QGroundControl.mavlinkLogManager.deleteAfterUpload - enabled: autoUploadCheck.checked && !_disableLogging + enabled: autoUploadCheck.checked && _enableLogging onClicked: { QGroundControl.mavlinkLogManager.deleteAfterUpload = checked }