From 11ecf5f40095e80e623d65455c78cd2b46567c05 Mon Sep 17 00:00:00 2001 From: Gus Grubba Date: Tue, 16 May 2017 10:17:29 -0400 Subject: [PATCH] Moving ulogs to AppSettings save path. --- src/Settings/AppSettings.cc | 22 +++++++++++-- src/Settings/AppSettings.h | 5 +++ src/Vehicle/MAVLinkLogManager.cc | 54 ++++++++++++++++---------------- src/Vehicle/MAVLinkLogManager.h | 3 ++ 4 files changed, 54 insertions(+), 30 deletions(-) diff --git a/src/Settings/AppSettings.cc b/src/Settings/AppSettings.cc index 5cae039ac..581e13338 100644 --- a/src/Settings/AppSettings.cc +++ b/src/Settings/AppSettings.cc @@ -41,10 +41,12 @@ const char* AppSettings::waypointsFileExtension = "waypoints"; const char* AppSettings::fenceFileExtension = "fence"; const char* AppSettings::rallyPointFileExtension = "rally"; const char* AppSettings::telemetryFileExtension = "tlog"; +const char* AppSettings::logFileExtension = "ulg"; -const char* AppSettings::parameterDirectory = "Parameters"; -const char* AppSettings::telemetryDirectory = "Telemetry"; -const char* AppSettings::missionDirectory = "Missions"; +const char* AppSettings::parameterDirectory = "Parameters"; +const char* AppSettings::telemetryDirectory = "Telemetry"; +const char* AppSettings::missionDirectory = "Missions"; +const char* AppSettings::logDirectory = "Logs"; AppSettings::AppSettings(QObject* parent) : SettingsGroup(appSettingsGroupName, QString() /* root settings group */, parent) @@ -100,6 +102,7 @@ void AppSettings::_checkSavePathDirectories(void) savePathDir.mkdir(parameterDirectory); savePathDir.mkdir(telemetryDirectory); savePathDir.mkdir(missionDirectory); + savePathDir.mkdir(logDirectory); } } @@ -273,6 +276,19 @@ QString AppSettings::telemetrySavePath(void) return fullPath; } +QString AppSettings::logSavePath(void) +{ + QString fullPath; + + QString path = savePath()->rawValue().toString(); + if (!path.isEmpty() && QDir(path).exists()) { + QDir dir(path); + return dir.filePath(logDirectory); + } + + return fullPath; +} + Fact* AppSettings::autoLoadMissions(void) { if (!_autoLoadMissionsFact) { diff --git a/src/Settings/AppSettings.h b/src/Settings/AppSettings.h index ce5669bf2..5587de269 100644 --- a/src/Settings/AppSettings.h +++ b/src/Settings/AppSettings.h @@ -41,12 +41,14 @@ public: Q_PROPERTY(QString missionSavePath READ missionSavePath NOTIFY savePathsChanged) Q_PROPERTY(QString parameterSavePath READ parameterSavePath NOTIFY savePathsChanged) Q_PROPERTY(QString telemetrySavePath READ telemetrySavePath NOTIFY savePathsChanged) + Q_PROPERTY(QString logSavePath READ logSavePath NOTIFY savePathsChanged) Q_PROPERTY(QString planFileExtension MEMBER planFileExtension CONSTANT) Q_PROPERTY(QString missionFileExtension MEMBER missionFileExtension CONSTANT) Q_PROPERTY(QString waypointsFileExtension MEMBER waypointsFileExtension CONSTANT) Q_PROPERTY(QString parameterFileExtension MEMBER parameterFileExtension CONSTANT) Q_PROPERTY(QString telemetryFileExtension MEMBER telemetryFileExtension CONSTANT) + Q_PROPERTY(QString logFileExtension MEMBER logFileExtension CONSTANT) Fact* offlineEditingFirmwareType (void); Fact* offlineEditingVehicleType (void); @@ -69,6 +71,7 @@ public: QString missionSavePath (void); QString parameterSavePath (void); QString telemetrySavePath (void); + QString logSavePath (void); static MAV_AUTOPILOT offlineEditingFirmwareTypeFromFirmwareType(MAV_AUTOPILOT firmwareType); static MAV_TYPE offlineEditingVehicleTypeFromVehicleType(MAV_TYPE vehicleType); @@ -101,11 +104,13 @@ public: static const char* fenceFileExtension; static const char* rallyPointFileExtension; static const char* telemetryFileExtension; + static const char* logFileExtension; // Child directories of savePath for specific file types static const char* parameterDirectory; static const char* telemetryDirectory; static const char* missionDirectory; + static const char* logDirectory; signals: void savePathsChanged(void); diff --git a/src/Vehicle/MAVLinkLogManager.cc b/src/Vehicle/MAVLinkLogManager.cc index efeca2c8a..a8ebe0ea6 100644 --- a/src/Vehicle/MAVLinkLogManager.cc +++ b/src/Vehicle/MAVLinkLogManager.cc @@ -9,6 +9,8 @@ #include "MAVLinkLogManager.h" #include "QGCApplication.h" +#include "SettingsManager.h" + #include #include #include @@ -30,7 +32,6 @@ static const char* kDefaultPx4URL = "http://logs.px4.io/upload"; static const char* kEnableAutoUploadKey = "EnableAutoUpload"; static const char* kEnableAutoStartKey = "EnableAutoStart"; static const char* kEnableDeletetKey = "EnableDelete"; -static const char* kUlogExtension = ".ulg"; static const char* kSidecarExtension = ".uploaded"; static const char* kVideoURLKey = "VideoURL"; static const char* kWindSpeedKey = "WindSpeed"; @@ -54,7 +55,7 @@ MAVLinkLogFiles::MAVLinkLogFiles(MAVLinkLogManager* manager, const QString& file if(!newFile) { _size = (quint32)fi.size(); QString sideCar = filePath; - sideCar.replace(kUlogExtension, kSidecarExtension); + sideCar.replace(manager->logExtension(), kSidecarExtension); QFileInfo sc(sideCar); _uploaded = sc.exists(); } @@ -152,9 +153,9 @@ MAVLinkLogProcessor::create(MAVLinkLogManager* manager, const QString path, uint _fileName.sprintf("%s/%03d-%s%s", path.toLatin1().data(), id, - QDateTime::currentDateTime().toString("yyyy-MM-dd-hh-mm-ss-zzz").toLatin1().data(), - kUlogExtension); - _fd = fopen(_fileName.toLatin1().data(), "wb"); + QDateTime::currentDateTime().toString("yyyy-MM-dd-hh-mm-ss-zzz").toLocal8Bit().data(), + manager->logExtension().toLocal8Bit().data()); + _fd = fopen(_fileName.toLocal8Bit().data(), "wb"); if(_fd) { _record = new MAVLinkLogFiles(manager, _fileName, true); _record->setWriting(true); @@ -322,25 +323,6 @@ MAVLinkLogManager::MAVLinkLogManager(QGCApplication* app, QGCToolbox* toolbox) setWindSpeed(settings.value(kWindSpeedKey, -1).toInt()); setRating(settings.value(kRateKey, "notset").toString()); setPublicLog(settings.value(kPublicLogKey, true).toBool()); - //-- Logging location - _logPath = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); - _logPath += "/MAVLinkLogs"; - if(!QDir(_logPath).exists()) { - if(!QDir().mkpath(_logPath)) { - qCWarning(MAVLinkLogManagerLog) << "Could not create MAVLink log download path:" << _logPath; - _loggingDisabled = true; - } - } - if(!_loggingDisabled) { - //-- Load current list of logs - QString filter = "*"; - filter += kUlogExtension; - QDirIterator it(_logPath, QStringList() << filter, QDir::Files); - while(it.hasNext()) { - _insertNewLog(new MAVLinkLogFiles(this, it.next())); - } - qCDebug(MAVLinkLogManagerLog) << "MAVLink logs directory:" << _logPath; - } } //----------------------------------------------------------------------------- @@ -356,7 +338,25 @@ MAVLinkLogManager::setToolbox(QGCToolbox* toolbox) QGCTool::setToolbox(toolbox); QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership); qmlRegisterUncreatableType("QGroundControl.MAVLinkLogManager", 1, 0, "MAVLinkLogManager", "Reference only"); + //-- Logging location + _ulogExtension = "."; + _ulogExtension += qgcApp()->toolbox()->settingsManager()->appSettings()->logFileExtension; + _logPath = qgcApp()->toolbox()->settingsManager()->appSettings()->logSavePath(); + if(!QDir(_logPath).exists()) { + if(!QDir().mkpath(_logPath)) { + qCWarning(MAVLinkLogManagerLog) << "Could not create MAVLink log download path:" << _logPath; + _loggingDisabled = true; + } + } if(!_loggingDisabled) { + //-- Load current list of logs + QString filter = "*"; + filter += _ulogExtension; + QDirIterator it(_logPath, QStringList() << filter, QDir::Files); + while(it.hasNext()) { + _insertNewLog(new MAVLinkLogFiles(this, it.next())); + } + qCDebug(MAVLinkLogManagerLog) << "MAVLink logs directory:" << _logPath; connect(toolbox->multiVehicleManager(), &MultiVehicleManager::activeVehicleChanged, this, &MAVLinkLogManager::_activeVehicleChanged); } } @@ -579,7 +579,7 @@ MAVLinkLogManager::_deleteLog(MAVLinkLogFiles* log) qCWarning(MAVLinkLogManagerLog) << "Could not delete MAVLink log file:" << _logPath; } //-- Remove sidecar file (if any) - filePath.replace(kUlogExtension, kSidecarExtension); + filePath.replace(_ulogExtension, kSidecarExtension); QFile sgone(filePath); if(sgone.exists()) { sgone.remove(); @@ -796,7 +796,7 @@ MAVLinkLogManager::_uploadFinished() _currentLogfile->setUploaded(true); //-- Write side-car file to flag it as uploaded QString sideCar = _makeFilename(_currentLogfile->name()); - sideCar.replace(kUlogExtension, kSidecarExtension); + sideCar.replace(_ulogExtension, kSidecarExtension); FILE* f = fopen(sideCar.toLatin1().data(), "wb"); if(f) { fclose(f); @@ -956,6 +956,6 @@ MAVLinkLogManager::_makeFilename(const QString& baseName) QString filePath = _logPath; filePath += "/"; filePath += baseName; - filePath += kUlogExtension; + filePath += _ulogExtension; return filePath; } diff --git a/src/Vehicle/MAVLinkLogManager.h b/src/Vehicle/MAVLinkLogManager.h index bd511932d..507b8bea8 100644 --- a/src/Vehicle/MAVLinkLogManager.h +++ b/src/Vehicle/MAVLinkLogManager.h @@ -145,6 +145,7 @@ public: bool publicLog () { return _publicLog; } int windSpeed () { return _windSpeed; } QString rating () { return _rating; } + QString logExtension () { return _ulogExtension; } QmlObjectListModel* logFiles () { return &_logFiles; } @@ -224,6 +225,8 @@ private: int _windSpeed; QString _rating; bool _publicLog; + QString _ulogExtension; + }; #endif -- 2.22.0