From 77f92945482e48f806f9e3f789e2ff367b82ba1f Mon Sep 17 00:00:00 2001 From: m_thread Date: Thu, 20 Mar 2014 22:58:09 +0100 Subject: [PATCH] OP-1245 Changed the code that saves the logging metadata for all objects and DebugLogSettings object. --- .../plugins/flightlog/flightlogmanager.cpp | 36 ++++++++++--------- .../src/plugins/flightlog/flightlogmanager.h | 2 ++ 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.cpp b/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.cpp index 3909a01d8..ac937d4c2 100644 --- a/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.cpp +++ b/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.cpp @@ -56,6 +56,9 @@ FlightLogManager::FlightLogManager(QObject *parent) : m_telemtryManager = pluginManager->getObject(); Q_ASSERT(m_telemtryManager); + m_objectUtilManager = pluginManager->getObject(); + Q_ASSERT(m_objectUtilManager); + m_flightLogControl = DebugLogControl::GetInstance(m_objectManager); Q_ASSERT(m_flightLogControl); @@ -493,8 +496,8 @@ void FlightLogManager::resetSettings(bool clear) void FlightLogManager::saveSettingsToBoard() { - m_flightLogSettings->setLoggingEnabled(m_loggingEnabled); + m_flightLogSettings->updated(); saveUAVObjectToFlash(m_flightLogSettings); foreach(UAVOLogSettingsWrapper * wrapper, m_uavoEntries) { @@ -502,6 +505,9 @@ void FlightLogManager::saveSettingsToBoard() UAVObject::Metadata meta = wrapper->object()->getMetadata(); wrapper->object()->SetLoggingUpdateMode(meta, wrapper->settingAsUpdateMode()); meta.loggingUpdatePeriod = wrapper->period(); + + // As metadata are set up to update via telemetry on change + // this call will send the update to the board. wrapper->object()->setMetadata(meta); if (saveUAVObjectToFlash(wrapper->object()->getMetaObject())) { @@ -513,18 +519,8 @@ void FlightLogManager::saveSettingsToBoard() bool FlightLogManager::saveUAVObjectToFlash(UAVObject *object) { - UAVObjectUpdaterHelper helper; - if (helper.doObjectAndWait(object, 3000) == UAVObjectUpdaterHelper::SUCCESS) { - ObjectPersistence::DataFields data; - data.Operation = ObjectPersistence::OPERATION_SAVE; - data.Selection = ObjectPersistence::SELECTION_SINGLEOBJECT; - data.ObjectID = object->getObjID(); - data.InstanceID = object->getInstID(); - m_objectPersistence->setData(data); - - return (helper.doObjectAndWait(m_objectPersistence, 3000) == UAVObjectUpdaterHelper::SUCCESS); - } - return false; + m_objectUtilManager->saveObjectToSD(object); + return true; } void FlightLogManager::updateFlightEntries(quint16 currentFlight) @@ -680,9 +676,17 @@ UAVOLogSettingsWrapper::~UAVOLogSettingsWrapper() void UAVOLogSettingsWrapper::reset(bool clear) { - setSetting(clear ? 0 : m_object->GetLoggingUpdateMode(m_object->getMetadata())); - setPeriod(clear ? 0 : m_object->getMetadata().loggingUpdatePeriod); - setDirty(false); + setSetting(m_object->GetLoggingUpdateMode(m_object->getMetadata())); + setPeriod(m_object->getMetadata().loggingUpdatePeriod); + if (clear) { + int oldSetting = setting(); + int oldPeriod = period(); + setSetting(0); + setPeriod(0); + setDirty(oldSetting != setting() || oldPeriod != period()); + } else { + setDirty(false); + } } UAVObject::UpdateMode UAVOLogSettingsWrapper::settingAsUpdateMode() diff --git a/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.h b/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.h index 87f821701..7e17983ec 100644 --- a/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.h +++ b/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.h @@ -37,6 +37,7 @@ #include #include "uavobjectmanager.h" +#include "uavobjectutilmanager.h" #include "debuglogentry.h" #include "debuglogstatus.h" #include "debuglogsettings.h" @@ -316,6 +317,7 @@ private slots: private: UAVObjectManager *m_objectManager; + UAVObjectUtilManager *m_objectUtilManager; TelemetryManager *m_telemtryManager; DebugLogControl *m_flightLogControl; DebugLogStatus *m_flightLogStatus;