From 9eee869ccd60de866bbfe33310449eee9036f22b Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 14 Oct 2017 07:07:32 +0200 Subject: [PATCH] RTL-SDR: force settings at startup and on deserialize --- plugins/samplesource/rtlsdr/rtlsdrgui.cpp | 5 ++++- plugins/samplesource/rtlsdr/rtlsdrgui.h | 1 + plugins/samplesource/rtlsdr/rtlsdrinput.cpp | 2 +- plugins/samplesource/rtlsdr/rtlsdrinput.h | 11 +++++++---- plugins/samplesource/rtlsdr/rtlsdrplugin.cpp | 2 +- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/plugins/samplesource/rtlsdr/rtlsdrgui.cpp b/plugins/samplesource/rtlsdr/rtlsdrgui.cpp index 9e23c9e0d..2f0e6b7cb 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrgui.cpp +++ b/plugins/samplesource/rtlsdr/rtlsdrgui.cpp @@ -33,6 +33,7 @@ RTLSDRGui::RTLSDRGui(DeviceSourceAPI *deviceAPI, QWidget* parent) : QWidget(parent), ui(new Ui::RTLSDRGui), m_deviceAPI(deviceAPI), + m_forceSettings(true), m_settings(), m_sampleSource(0), m_lastEngineState((DSPDeviceSourceEngine::State)-1) @@ -117,6 +118,7 @@ bool RTLSDRGui::deserialize(const QByteArray& data) { displayGains(); displaySettings(); + m_forceSettings = true; sendSettings(); return true; } @@ -345,8 +347,9 @@ void RTLSDRGui::on_transverter_clicked() void RTLSDRGui::updateHardware() { - RTLSDRInput::MsgConfigureRTLSDR* message = RTLSDRInput::MsgConfigureRTLSDR::create(m_settings); + RTLSDRInput::MsgConfigureRTLSDR* message = RTLSDRInput::MsgConfigureRTLSDR::create(m_settings, m_forceSettings); m_sampleSource->getInputMessageQueue()->push(message); + m_forceSettings = false; m_updateTimer.stop(); } diff --git a/plugins/samplesource/rtlsdr/rtlsdrgui.h b/plugins/samplesource/rtlsdr/rtlsdrgui.h index 168a295f5..fd36e7e3d 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrgui.h +++ b/plugins/samplesource/rtlsdr/rtlsdrgui.h @@ -55,6 +55,7 @@ private: Ui::RTLSDRGui* ui; DeviceSourceAPI* m_deviceAPI; + bool m_forceSettings; RTLSDRSettings m_settings; QTimer m_updateTimer; QTimer m_statusTimer; diff --git a/plugins/samplesource/rtlsdr/rtlsdrinput.cpp b/plugins/samplesource/rtlsdr/rtlsdrinput.cpp index 533f9f2c0..0cd85ee72 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrinput.cpp +++ b/plugins/samplesource/rtlsdr/rtlsdrinput.cpp @@ -249,7 +249,7 @@ bool RTLSDRInput::handleMessage(const Message& message) MsgConfigureRTLSDR& conf = (MsgConfigureRTLSDR&) message; qDebug() << "RTLSDRInput::handleMessage: MsgConfigureRTLSDR"; - bool success = applySettings(conf.getSettings(), false); + bool success = applySettings(conf.getSettings(), conf.getForce()); if (!success) { diff --git a/plugins/samplesource/rtlsdr/rtlsdrinput.h b/plugins/samplesource/rtlsdr/rtlsdrinput.h index b439153f4..21f866063 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrinput.h +++ b/plugins/samplesource/rtlsdr/rtlsdrinput.h @@ -35,18 +35,21 @@ public: public: const RTLSDRSettings& getSettings() const { return m_settings; } + bool getForce() const { return m_force; } - static MsgConfigureRTLSDR* create(const RTLSDRSettings& settings) + static MsgConfigureRTLSDR* create(const RTLSDRSettings& settings, bool force) { - return new MsgConfigureRTLSDR(settings); + return new MsgConfigureRTLSDR(settings, force); } private: RTLSDRSettings m_settings; + bool m_force; - MsgConfigureRTLSDR(const RTLSDRSettings& settings) : + MsgConfigureRTLSDR(const RTLSDRSettings& settings, bool force) : Message(), - m_settings(settings) + m_settings(settings), + m_force(force) { } }; diff --git a/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp b/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp index 7b84b270c..a6c44ae48 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp +++ b/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp @@ -11,7 +11,7 @@ const PluginDescriptor RTLSDRPlugin::m_pluginDescriptor = { QString("RTL-SDR Input"), - QString("3.7.3"), + QString("3.7.4"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true,