From 5c99a8310fe2b1aeceb4a689690265bad7e55cb9 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 14 Oct 2017 09:37:55 +0200 Subject: [PATCH] FCD Pro+: force settings at startup and on deserialize --- plugins/samplesource/fcdproplus/fcdproplusgui.cpp | 5 ++++- plugins/samplesource/fcdproplus/fcdproplusgui.h | 1 + plugins/samplesource/fcdproplus/fcdproplusinput.cpp | 2 +- plugins/samplesource/fcdproplus/fcdproplusinput.h | 11 +++++++---- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/plugins/samplesource/fcdproplus/fcdproplusgui.cpp b/plugins/samplesource/fcdproplus/fcdproplusgui.cpp index 01221162b..eb50a6281 100644 --- a/plugins/samplesource/fcdproplus/fcdproplusgui.cpp +++ b/plugins/samplesource/fcdproplus/fcdproplusgui.cpp @@ -32,6 +32,7 @@ FCDProPlusGui::FCDProPlusGui(DeviceSourceAPI *deviceAPI, QWidget* parent) : QWidget(parent), ui(new Ui::FCDProPlusGui), m_deviceAPI(deviceAPI), + m_forceSettings(true), m_settings(), m_sampleSource(NULL), m_lastEngineState((DSPDeviceSourceEngine::State)-1) @@ -113,6 +114,7 @@ bool FCDProPlusGui::deserialize(const QByteArray& data) if(m_settings.deserialize(data)) { displaySettings(); + m_forceSettings = true; sendSettings(); return true; } @@ -216,8 +218,9 @@ void FCDProPlusGui::on_iqImbalance_toggled(bool checked) void FCDProPlusGui::updateHardware() { - FCDProPlusInput::MsgConfigureFCD* message = FCDProPlusInput::MsgConfigureFCD::create(m_settings); + FCDProPlusInput::MsgConfigureFCD* message = FCDProPlusInput::MsgConfigureFCD::create(m_settings, m_forceSettings); m_sampleSource->getInputMessageQueue()->push(message); + m_forceSettings = false; m_updateTimer.stop(); } diff --git a/plugins/samplesource/fcdproplus/fcdproplusgui.h b/plugins/samplesource/fcdproplus/fcdproplusgui.h index 586170bb6..f82f1b2fa 100644 --- a/plugins/samplesource/fcdproplus/fcdproplusgui.h +++ b/plugins/samplesource/fcdproplus/fcdproplusgui.h @@ -54,6 +54,7 @@ private: Ui::FCDProPlusGui* ui; DeviceSourceAPI* m_deviceAPI; + bool m_forceSettings; FCDProPlusSettings m_settings; QTimer m_updateTimer; QTimer m_statusTimer; diff --git a/plugins/samplesource/fcdproplus/fcdproplusinput.cpp b/plugins/samplesource/fcdproplus/fcdproplusinput.cpp index e860f88fe..e5448404a 100644 --- a/plugins/samplesource/fcdproplus/fcdproplusinput.cpp +++ b/plugins/samplesource/fcdproplus/fcdproplusinput.cpp @@ -169,7 +169,7 @@ bool FCDProPlusInput::handleMessage(const Message& message) { qDebug() << "FCDProPlusInput::handleMessage: MsgConfigureFCD"; MsgConfigureFCD& conf = (MsgConfigureFCD&) message; - applySettings(conf.getSettings(), false); + applySettings(conf.getSettings(), conf.getForce()); return true; } else if (MsgFileRecord::match(message)) diff --git a/plugins/samplesource/fcdproplus/fcdproplusinput.h b/plugins/samplesource/fcdproplus/fcdproplusinput.h index 6b24396f0..ebbd7599d 100644 --- a/plugins/samplesource/fcdproplus/fcdproplusinput.h +++ b/plugins/samplesource/fcdproplus/fcdproplusinput.h @@ -40,18 +40,21 @@ public: public: const FCDProPlusSettings& getSettings() const { return m_settings; } + bool getForce() const { return m_force; } - static MsgConfigureFCD* create(const FCDProPlusSettings& settings) + static MsgConfigureFCD* create(const FCDProPlusSettings& settings, bool force) { - return new MsgConfigureFCD(settings); + return new MsgConfigureFCD(settings, force); } private: FCDProPlusSettings m_settings; + bool m_force; - MsgConfigureFCD(const FCDProPlusSettings& settings) : + MsgConfigureFCD(const FCDProPlusSettings& settings, bool force) : Message(), - m_settings(settings) + m_settings(settings), + m_force(force) { } };