From 1daf1e794e4fa171f8c05120ae74b169711613ba Mon Sep 17 00:00:00 2001 From: Willian Galvani Date: Fri, 23 Aug 2019 13:06:51 -0300 Subject: [PATCH] Add checkbox for saving CSVs --- src/Settings/App.SettingsGroup.json | 7 +++++++ src/Settings/AppSettings.cc | 1 + src/Settings/AppSettings.h | 1 + src/Vehicle/Vehicle.cc | 21 +++++++++++++++++---- src/ui/preferences/GeneralSettings.qml | 8 ++++++++ 5 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/Settings/App.SettingsGroup.json b/src/Settings/App.SettingsGroup.json index a86453df8..eaa88ac86 100644 --- a/src/Settings/App.SettingsGroup.json +++ b/src/Settings/App.SettingsGroup.json @@ -263,5 +263,12 @@ "longDescription": "Use Link Pairing.", "type": "bool", "defaultValue": false +}, +{ + "name": "saveCsvTelemetry", + "shortDescription": "Save CSV Telementry Logs", + "longDescription": "If this option is enabled, all Facts will be written to a CSV file with a 1 Hertz frequency.", + "type": "bool", + "defaultValue": false } ] diff --git a/src/Settings/AppSettings.cc b/src/Settings/AppSettings.cc index b53690392..7d33e95dc 100644 --- a/src/Settings/AppSettings.cc +++ b/src/Settings/AppSettings.cc @@ -97,6 +97,7 @@ DECLARE_SETTINGSFACT(AppSettings, enableMicrohard) DECLARE_SETTINGSFACT(AppSettings, language) DECLARE_SETTINGSFACT(AppSettings, disableAllPersistence) DECLARE_SETTINGSFACT(AppSettings, usePairing) +DECLARE_SETTINGSFACT(AppSettings, saveCsvTelemetry) DECLARE_SETTINGSFACT_NO_FUNC(AppSettings, indoorPalette) { diff --git a/src/Settings/AppSettings.h b/src/Settings/AppSettings.h index 6cee9d65d..6ecbb0424 100644 --- a/src/Settings/AppSettings.h +++ b/src/Settings/AppSettings.h @@ -52,6 +52,7 @@ public: DEFINE_SETTINGFACT(language) DEFINE_SETTINGFACT(disableAllPersistence) DEFINE_SETTINGFACT(usePairing) + DEFINE_SETTINGFACT(saveCsvTelemetry) // 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/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index dbb90aff0..2419ed135 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -303,7 +303,10 @@ Vehicle::Vehicle(LinkInterface* link, connect(&_adsbTimer, &QTimer::timeout, this, &Vehicle::_adsbTimerTimeout); _adsbTimer.setSingleShot(false); _adsbTimer.start(1000); - _initializeCsv(); + + // Start csv logger + connect(&_csvLogTimer, &QTimer::timeout, this, &Vehicle::_writeCsvLine); + _csvLogTimer.start(1000); } // Disconnected Vehicle for offline editing @@ -4010,6 +4013,9 @@ void Vehicle::_pidTuningAdjustRates(bool setRatesForTuning) void Vehicle::_initializeCsv() { + if(!_toolbox->settingsManager()->appSettings()->saveCsvTelemetry()->rawValue().toBool()){ + return; + } QString now = QDateTime::currentDateTime().toString("yyyy-MM-dd hh-mm-ss"); QString fileName = QString("%1 vehicle%2.csv").arg(now).arg(_id); QDir saveDir(_toolbox->settingsManager()->appSettings()->telemetrySavePath()); @@ -4030,13 +4036,20 @@ void Vehicle::_initializeCsv() } qCDebug(VehicleLog) << "Facts logged to csv:" << allFactNames; stream << "Timestamp," << allFactNames.join(",") << "\n"; - - connect(&_csvLogTimer, &QTimer::timeout, this, &Vehicle::_writeCsvLine); - _csvLogTimer.start(1000); } void Vehicle::_writeCsvLine() { + // Only save the logs after the the vehicle gets armed, unless "Save logs even if vehicle was not armed" is checked + if(!_csvLogFile.isOpen() && + (_armed || _toolbox->settingsManager()->appSettings()->telemetrySaveNotArmed()->rawValue().toBool())){ + _initializeCsv(); + } + + if(!_csvLogFile.isOpen()){ + return; + } + QStringList allFactValues; QTextStream stream(&_csvLogFile); diff --git a/src/ui/preferences/GeneralSettings.qml b/src/ui/preferences/GeneralSettings.qml index 2809c201d..018254590 100644 --- a/src/ui/preferences/GeneralSettings.qml +++ b/src/ui/preferences/GeneralSettings.qml @@ -420,6 +420,14 @@ Rectangle { enabled: promptSaveLog.checked && !disableDataPersistence.checked property Fact _telemetrySaveNotArmed: QGroundControl.settingsManager.appSettings.telemetrySaveNotArmed } + FactCheckBox { + id: promptSaveCsv + text: qsTr("Save CSV log of telemetry data") + fact: _saveCsvTelemetry + visible: _saveCsvTelemetry.visible + enabled: !disableDataPersistence.checked + property Fact _saveCsvTelemetry: QGroundControl.settingsManager.appSettings.saveCsvTelemetry + } } } -- 2.22.0