From d6eb9788c4864684b32a56eefe79a673e9a4a475 Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 26 May 2017 17:43:58 +0200 Subject: [PATCH] HackRF input: force settings at start and on preset deserialization --- plugins/samplesource/hackrfinput/hackrfinput.h | 11 +++++++---- plugins/samplesource/hackrfinput/hackrfinputgui.cpp | 10 ++++++---- plugins/samplesource/hackrfinput/hackrfinputgui.h | 1 + 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/plugins/samplesource/hackrfinput/hackrfinput.h b/plugins/samplesource/hackrfinput/hackrfinput.h index c241b649e..2340dfee6 100644 --- a/plugins/samplesource/hackrfinput/hackrfinput.h +++ b/plugins/samplesource/hackrfinput/hackrfinput.h @@ -36,18 +36,21 @@ public: public: const HackRFInputSettings& getSettings() const { return m_settings; } + bool getForce() const { return m_force; } - static MsgConfigureHackRF* create(const HackRFInputSettings& settings) + static MsgConfigureHackRF* create(const HackRFInputSettings& settings, bool force = false) { - return new MsgConfigureHackRF(settings); + return new MsgConfigureHackRF(settings, force); } private: HackRFInputSettings m_settings; + bool m_force; - MsgConfigureHackRF(const HackRFInputSettings& settings) : + MsgConfigureHackRF(const HackRFInputSettings& settings, bool force) : Message(), - m_settings(settings) + m_settings(settings), + m_force(force) { } }; diff --git a/plugins/samplesource/hackrfinput/hackrfinputgui.cpp b/plugins/samplesource/hackrfinput/hackrfinputgui.cpp index 4641832b0..a7c7a8e65 100644 --- a/plugins/samplesource/hackrfinput/hackrfinputgui.cpp +++ b/plugins/samplesource/hackrfinput/hackrfinputgui.cpp @@ -36,6 +36,7 @@ HackRFInputGui::HackRFInputGui(DeviceSourceAPI *deviceAPI, QWidget* parent) : ui(new Ui::HackRFInputGui), m_deviceAPI(deviceAPI), m_settings(), + m_forceSettings(true), m_sampleSource(NULL), m_lastEngineState((DSPDeviceSourceEngine::State)-1) { @@ -54,17 +55,16 @@ HackRFInputGui::HackRFInputGui(DeviceSourceAPI *deviceAPI, QWidget* parent) : m_statusTimer.start(500); displaySettings(); - - displayBandwidths(); - char recFileNameCStr[30]; sprintf(recFileNameCStr, "test_%d.sdriq", m_deviceAPI->getDeviceUID()); m_fileSink = new FileRecord(std::string(recFileNameCStr)); m_deviceAPI->addSink(m_fileSink); connect(m_deviceAPI->getDeviceOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); + + sendSettings(); } HackRFInputGui::~HackRFInputGui() @@ -119,6 +119,7 @@ bool HackRFInputGui::deserialize(const QByteArray& data) if(m_settings.deserialize(data)) { displaySettings(); + m_forceSettings = true; sendSettings(); return true; } @@ -355,8 +356,9 @@ void HackRFInputGui::on_record_toggled(bool checked) void HackRFInputGui::updateHardware() { qDebug() << "HackRFGui::updateHardware"; - HackRFInput::MsgConfigureHackRF* message = HackRFInput::MsgConfigureHackRF::create(m_settings); + HackRFInput::MsgConfigureHackRF* message = HackRFInput::MsgConfigureHackRF::create(m_settings, m_forceSettings); m_sampleSource->getInputMessageQueue()->push(message); + m_forceSettings = false; m_updateTimer.stop(); } diff --git a/plugins/samplesource/hackrfinput/hackrfinputgui.h b/plugins/samplesource/hackrfinput/hackrfinputgui.h index 256467051..552775f9c 100644 --- a/plugins/samplesource/hackrfinput/hackrfinputgui.h +++ b/plugins/samplesource/hackrfinput/hackrfinputgui.h @@ -62,6 +62,7 @@ private: DeviceSourceAPI* m_deviceAPI; HackRFInputSettings m_settings; + bool m_forceSettings; QTimer m_updateTimer; QTimer m_statusTimer; DeviceSampleSource* m_sampleSource;