From f606cddaf1866dcf4c56686ae97fd8e31ddafb30 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Sun, 7 Feb 2016 13:42:16 -0800 Subject: [PATCH] clear setting clears cached files --- src/AutoPilotPlugins/PX4/PX4AirframeLoader.cc | 13 +++++++++---- src/AutoPilotPlugins/PX4/PX4AirframeLoader.h | 5 ++++- src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc | 2 +- src/FactSystem/ParameterLoader.cc | 9 +++++++-- src/FactSystem/ParameterLoader.h | 3 +++ src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc | 11 ++++++++--- src/FirmwarePlugin/PX4/PX4ParameterMetaData.h | 3 +++ src/QGCApplication.cc | 6 ++++++ 8 files changed, 41 insertions(+), 11 deletions(-) diff --git a/src/AutoPilotPlugins/PX4/PX4AirframeLoader.cc b/src/AutoPilotPlugins/PX4/PX4AirframeLoader.cc index eff724193..4a964da71 100644 --- a/src/AutoPilotPlugins/PX4/PX4AirframeLoader.cc +++ b/src/AutoPilotPlugins/PX4/PX4AirframeLoader.cc @@ -46,10 +46,17 @@ PX4AirframeLoader::PX4AirframeLoader(AutoPilotPlugin* autopilot, UASInterface* u Q_ASSERT(uas); } +QString PX4AirframeLoader::aiframeMetaDataFile(void) +{ + QSettings settings; + QDir parameterDir = QFileInfo(settings.fileName()).dir(); + return parameterDir.filePath("PX4AirframeFactMetaData.xml"); +} + /// Load Airframe Fact meta data /// /// The meta data comes from firmware airframes.xml file. -void PX4AirframeLoader::loadAirframeFactMetaData(void) +void PX4AirframeLoader::loadAirframeMetaData(void) { if (_airframeMetaDataLoaded) { return; @@ -64,9 +71,7 @@ void PX4AirframeLoader::loadAirframeFactMetaData(void) // We want unit test builds to always use the resource based meta data to provide repeatable results if (!qgcApp()->runningUnitTests()) { // First look for meta data that comes from a firmware download. Fall back to resource if not there. - QSettings settings; - QDir parameterDir = QFileInfo(settings.fileName()).dir(); - airframeFilename = parameterDir.filePath("PX4AirframeFactMetaData.xml"); + airframeFilename = aiframeMetaDataFile(); } if (airframeFilename.isEmpty() || !QFile(airframeFilename).exists()) { airframeFilename = ":/AutoPilotPlugins/PX4/AirframeFactMetaData.xml"; diff --git a/src/AutoPilotPlugins/PX4/PX4AirframeLoader.h b/src/AutoPilotPlugins/PX4/PX4AirframeLoader.h index 2843ccf30..63723bfc1 100644 --- a/src/AutoPilotPlugins/PX4/PX4AirframeLoader.h +++ b/src/AutoPilotPlugins/PX4/PX4AirframeLoader.h @@ -49,7 +49,10 @@ public: /// @param uas Uas which this set of facts is associated with PX4AirframeLoader(AutoPilotPlugin* autpilot,UASInterface* uas, QObject* parent = NULL); - static void loadAirframeFactMetaData(void); + static void loadAirframeMetaData(void); + + /// @return Location of PX4 airframe fact meta data file + static QString aiframeMetaDataFile(void); private: enum { diff --git a/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc b/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc index ce32581b5..15f3ab58a 100644 --- a/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc +++ b/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc @@ -81,7 +81,7 @@ PX4AutoPilotPlugin::PX4AutoPilotPlugin(Vehicle* vehicle, QObject* parent) : _airframeFacts = new PX4AirframeLoader(this, _vehicle->uas(), this); Q_CHECK_PTR(_airframeFacts); - PX4AirframeLoader::loadAirframeFactMetaData(); + PX4AirframeLoader::loadAirframeMetaData(); } PX4AutoPilotPlugin::~PX4AutoPilotPlugin() diff --git a/src/FactSystem/ParameterLoader.cc b/src/FactSystem/ParameterLoader.cc index 7d4ea5e43..b5fded326 100644 --- a/src/FactSystem/ParameterLoader.cc +++ b/src/FactSystem/ParameterLoader.cc @@ -620,13 +620,18 @@ void ParameterLoader::_writeLocalParamCache() ds << cache_map; } +QString ParameterLoader::parameterCacheFile(void) +{ + const QDir settingsDir(QFileInfo(QSettings().fileName()).dir()); + return settingsDir.filePath("param_cache"); +} + void ParameterLoader::_tryCacheHashLoad(int uasId, QVariant hash_value) { uint32_t crc32_value = 0; /* The datastructure of the cache table */ QMap cache_map; - const QDir settingsDir(QFileInfo(QSettings().fileName()).dir()); - QFile cache_file(settingsDir.filePath("param_cache")); + QFile cache_file(parameterCacheFile()); if (!cache_file.exists()) { /* no local cache, immediately refresh all params */ refreshAllParameters(); diff --git a/src/FactSystem/ParameterLoader.h b/src/FactSystem/ParameterLoader.h index 6d7f6d0b7..f4cbd6c3e 100644 --- a/src/FactSystem/ParameterLoader.h +++ b/src/FactSystem/ParameterLoader.h @@ -52,6 +52,9 @@ public: ParameterLoader(AutoPilotPlugin* autopilot, Vehicle* vehicle, QObject* parent = NULL); ~ParameterLoader(); + + /// @return Location of parameter cache file + static QString parameterCacheFile(void); /// Returns true if the full set of facts are ready bool parametersAreReady(void) { return _parametersReady; } diff --git a/src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc b/src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc index 052c78e10..d4c4ad044 100644 --- a/src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc +++ b/src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc @@ -78,6 +78,13 @@ QVariant PX4ParameterMetaData::_stringToTypedVariant(const QString& string, Fact return var; } +QString PX4ParameterMetaData::parameterMetaDataFile(void) +{ + QSettings settings; + QDir parameterDir = QFileInfo(settings.fileName()).dir(); + return parameterDir.filePath("PX4ParameterFactMetaData.xml"); +} + /// Load Parameter Fact meta data /// /// The meta data comes from firmware parameters.xml file. @@ -97,9 +104,7 @@ void PX4ParameterMetaData::_loadParameterFactMetaData(void) // We want unit test builds to always use the resource based meta data to provide repeatable results if (!qgcApp()->runningUnitTests()) { // First look for meta data that comes from a firmware download. Fall back to resource if not there. - QSettings settings; - QDir parameterDir = QFileInfo(settings.fileName()).dir(); - parameterFilename = parameterDir.filePath("PX4ParameterFactMetaData.xml"); + parameterFilename = parameterMetaDataFile(); } if (parameterFilename.isEmpty() || !QFile(parameterFilename).exists()) { parameterFilename = ":/AutoPilotPlugins/PX4/ParameterFactMetaData.xml"; diff --git a/src/FirmwarePlugin/PX4/PX4ParameterMetaData.h b/src/FirmwarePlugin/PX4/PX4ParameterMetaData.h index c60fb8536..4c9859f3a 100644 --- a/src/FirmwarePlugin/PX4/PX4ParameterMetaData.h +++ b/src/FirmwarePlugin/PX4/PX4ParameterMetaData.h @@ -49,6 +49,9 @@ public: void addMetaDataToFact(Fact* fact, MAV_TYPE vehicleType); + /// @return Location of PX4 parameter meta data file + static QString parameterMetaDataFile(void); + private: enum { XmlStateNone, diff --git a/src/QGCApplication.cc b/src/QGCApplication.cc index 0ddb7d244..5400dcb1a 100644 --- a/src/QGCApplication.cc +++ b/src/QGCApplication.cc @@ -97,6 +97,7 @@ #include "VideoSurface.h" #include "VideoReceiver.h" #include "LogDownloadController.h" +#include "PX4AirframeLoader.h" #ifndef __ios__ #include "SerialLink.h" @@ -365,8 +366,13 @@ QGCApplication::QGCApplication(int &argc, char* argv[], bool unitTesting) if (fClearSettingsOptions) { // User requested settings to be cleared on command line + settings.clear(); settings.setValue(_settingsVersionKey, QGC_SETTINGS_VERSION); + + QFile::remove(PX4AirframeLoader::aiframeMetaDataFile()); + QFile::remove(PX4ParameterMetaData::parameterMetaDataFile()); + QFile::remove(ParameterLoader::parameterCacheFile()); } _defaultMapPosition.setLatitude(settings.value(_defaultMapPositionLatKey, 37.803784).toDouble()); -- 2.22.0