From 8004559ab5f6bff080b615d4e65f4742b2cdddc2 Mon Sep 17 00:00:00 2001 From: f4exb Date: Tue, 10 Dec 2019 13:55:42 +0100 Subject: [PATCH] Frequency Tracker: refactoring of classes: even more fixes --- plugins/channelrx/freqtracker/freqtracker.cpp | 12 ++++++ plugins/channelrx/freqtracker/freqtracker.h | 4 -- .../freqtracker/freqtrackerbaseband.cpp | 21 +--------- .../freqtracker/freqtrackerbaseband.h | 4 -- .../channelrx/freqtracker/freqtrackergui.cpp | 41 ++++++++++++------- .../channelrx/freqtracker/freqtrackergui.h | 2 +- .../freqtracker/freqtrackerreport.cpp | 1 - .../channelrx/freqtracker/freqtrackerreport.h | 22 ---------- 8 files changed, 40 insertions(+), 67 deletions(-) diff --git a/plugins/channelrx/freqtracker/freqtracker.cpp b/plugins/channelrx/freqtracker/freqtracker.cpp index 246193682..8954f997f 100644 --- a/plugins/channelrx/freqtracker/freqtracker.cpp +++ b/plugins/channelrx/freqtracker/freqtracker.cpp @@ -125,6 +125,12 @@ bool FreqTracker::handleMessage(const Message& cmd) qDebug() << "FreqTracker::handleMessage: DSPSignalNotification"; m_basebandSink->getInputMessageQueue()->push(rep); + if (getMessageQueueToGUI()) + { + DSPSignalNotification *msg = new DSPSignalNotification(notif); + getMessageQueueToGUI()->push(msg); + } + return true; } else if (MsgConfigureFreqTracker::match(cmd)) @@ -142,6 +148,12 @@ bool FreqTracker::handleMessage(const Message& cmd) settings.m_inputFrequencyOffset = cfg.getFrequencyOffset(); applySettings(settings, false); + if (getMessageQueueToGUI()) + { + FreqTrackerReport::MsgSinkFrequencyOffsetNotification *msg = new FreqTrackerReport::MsgSinkFrequencyOffsetNotification(cfg); + getMessageQueueToGUI()->push(msg); + } + return true; } else diff --git a/plugins/channelrx/freqtracker/freqtracker.h b/plugins/channelrx/freqtracker/freqtracker.h index 6c7f93514..0d96e4d0a 100644 --- a/plugins/channelrx/freqtracker/freqtracker.h +++ b/plugins/channelrx/freqtracker/freqtracker.h @@ -120,10 +120,6 @@ public: m_basebandSink->setMessageQueueToInput(messageQueueToInput); } - void propagateMessageQueueToGUI(MessageQueue *messageQueueToGUI) { - m_basebandSink->setMessageQueueToGUI(messageQueueToGUI); - } - uint32_t getNumberOfDeviceStreams() const; static const QString m_channelIdURI; diff --git a/plugins/channelrx/freqtracker/freqtrackerbaseband.cpp b/plugins/channelrx/freqtracker/freqtrackerbaseband.cpp index 4e670aabd..fb1cffef4 100644 --- a/plugins/channelrx/freqtracker/freqtrackerbaseband.cpp +++ b/plugins/channelrx/freqtracker/freqtrackerbaseband.cpp @@ -27,8 +27,7 @@ MESSAGE_CLASS_DEFINITION(FreqTrackerBaseband::MsgConfigureFreqTrackerBaseband, Message) FreqTrackerBaseband::FreqTrackerBaseband() : - m_mutex(QMutex::Recursive), - m_messageQueueToGUI(nullptr) + m_mutex(QMutex::Recursive) { m_sampleFifo.setSize(SampleSinkFifo::getSizePolicy(48000)); m_channelizer = new DownSampleChannelizer(&m_sink); @@ -127,15 +126,6 @@ bool FreqTrackerBaseband::handleMessage(const Message& cmd) m_channelizer->getChannelFrequencyOffset() ); - if (getMessageQueueToGUI()) - { - FreqTrackerReport::MsgNotificationToGUI *msg = FreqTrackerReport::MsgNotificationToGUI::create( - m_basebandSampleRate / (1<push(msg); - } - return true; } else @@ -155,15 +145,6 @@ void FreqTrackerBaseband::applySettings(const FreqTrackerSettings& settings, boo m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset() ); - - if (getMessageQueueToGUI()) - { - FreqTrackerReport::MsgNotificationToGUI *msg = FreqTrackerReport::MsgNotificationToGUI::create( - m_basebandSampleRate / (1<push(msg); - } } m_sink.applySettings(settings, force); diff --git a/plugins/channelrx/freqtracker/freqtrackerbaseband.h b/plugins/channelrx/freqtracker/freqtrackerbaseband.h index d2579df9a..e27e87abb 100644 --- a/plugins/channelrx/freqtracker/freqtrackerbaseband.h +++ b/plugins/channelrx/freqtracker/freqtrackerbaseband.h @@ -64,7 +64,6 @@ public: int getChannelSampleRate() const; void setBasebandSampleRate(int sampleRate); void setMessageQueueToInput(MessageQueue *messageQueue) { m_sink.setMessageQueueToInput(messageQueue); } - void setMessageQueueToGUI(MessageQueue *messageQueue) { m_messageQueueToGUI = messageQueue; } double getMagSq() const { return m_sink.getMagSq(); } bool getSquelchOpen() const { return m_sink.getSquelchOpen(); } @@ -83,9 +82,6 @@ private: unsigned int m_basebandSampleRate; QMutex m_mutex; - MessageQueue *m_messageQueueToGUI; - - MessageQueue *getMessageQueueToGUI() { return m_messageQueueToGUI; } bool handleMessage(const Message& cmd); void applySettings(const FreqTrackerSettings& settings, bool force = false); diff --git a/plugins/channelrx/freqtracker/freqtrackergui.cpp b/plugins/channelrx/freqtracker/freqtrackergui.cpp index 00167500b..7944115f1 100644 --- a/plugins/channelrx/freqtracker/freqtrackergui.cpp +++ b/plugins/channelrx/freqtracker/freqtrackergui.cpp @@ -24,7 +24,7 @@ #include "device/deviceuiset.h" #include "dsp/downchannelizer.h" #include "dsp/dspengine.h" -#include "dsp/threadedbasebandsamplesink.h" +#include "dsp/dspcommands.h" #include "ui_freqtrackergui.h" #include "plugin/pluginapi.h" #include "util/simpleserializer.h" @@ -106,23 +106,28 @@ bool FreqTrackerGUI::handleMessage(const Message& message) blockApplySettings(false); return true; } - else if (FreqTrackerReport::MsgNotificationToGUI::match(message)) + else if (DSPSignalNotification::match(message)) + { + DSPSignalNotification& cfg = (DSPSignalNotification&) message; + m_basebandSampleRate = cfg.getSampleRate(); + int sinkSampleRate = m_basebandSampleRate / (1<channelSampleRateText->setText(tr("%1k").arg(QString::number(sinkSampleRate / 1000.0f, 'g', 5))); + + if (sinkSampleRate > 1000) { + ui->rfBW->setMaximum(sinkSampleRate/100); + } + + return true; + } + else if (FreqTrackerReport::MsgSinkFrequencyOffsetNotification::match(message)) { if (!m_settings.m_tracking) { - qDebug("FreqTrackerGUI::handleMessage: FreqTrackerReport::MsgNotificationToGUI"); + qDebug("FreqTrackerGUI::handleMessage: FreqTrackerReport::MsgSinkFrequencyOffsetNotification"); } - const FreqTrackerReport::MsgNotificationToGUI& cfg = (FreqTrackerReport::MsgNotificationToGUI&) message; - m_channelSampleRate = cfg.getSinkSampleRate(); - m_settings.m_inputFrequencyOffset = cfg.getSinkFrequencyOffset(); - ui->channelSampleRateText->setText(tr("%1k").arg(QString::number(m_channelSampleRate / 1000.0f, 'g', 5))); - blockApplySettings(true); + const FreqTrackerReport::MsgSinkFrequencyOffsetNotification& cfg = (FreqTrackerReport::MsgSinkFrequencyOffsetNotification&) message; + m_settings.m_inputFrequencyOffset = cfg.getFrequencyOffset(); m_channelMarker.setCenterFrequency(m_settings.m_inputFrequencyOffset); ui->deltaFrequency->setValue(m_settings.m_inputFrequencyOffset); - blockApplySettings(false); - - if (m_channelSampleRate > 1000) { - ui->rfBW->setMaximum(m_channelSampleRate/100); - } return true; } @@ -165,6 +170,13 @@ void FreqTrackerGUI::on_deltaFrequency_changed(qint64 value) void FreqTrackerGUI::on_log2Decim_currentIndexChanged(int index) { m_settings.m_log2Decim = index < 0 ? 0 : index > 6 ? 6 : index; + int sinkSampleRate = m_basebandSampleRate / (1<channelSampleRateText->setText(tr("%1k").arg(QString::number(sinkSampleRate / 1000.0f, 'g', 5))); + + if (sinkSampleRate > 1000) { + ui->rfBW->setMaximum(sinkSampleRate/100); + } + applySettings(); } @@ -297,7 +309,7 @@ FreqTrackerGUI::FreqTrackerGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, B m_pluginAPI(pluginAPI), m_deviceUISet(deviceUISet), m_channelMarker(this), - m_channelSampleRate(0), + m_basebandSampleRate(0), m_doApplySettings(true), m_squelchOpen(false), m_tickCount(0) @@ -309,7 +321,6 @@ FreqTrackerGUI::FreqTrackerGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, B m_freqTracker = reinterpret_cast(rxChannel); //new FreqTracker(m_deviceUISet->m_deviceSourceAPI); m_freqTracker->setMessageQueueToGUI(getInputMessageQueue()); - m_freqTracker->propagateMessageQueueToGUI(getInputMessageQueue()); connect(&MainWindow::getInstance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); // 50 ms diff --git a/plugins/channelrx/freqtracker/freqtrackergui.h b/plugins/channelrx/freqtracker/freqtrackergui.h index ada35e14a..19d052d05 100644 --- a/plugins/channelrx/freqtracker/freqtrackergui.h +++ b/plugins/channelrx/freqtracker/freqtrackergui.h @@ -65,7 +65,7 @@ private: DeviceUISet* m_deviceUISet; ChannelMarker m_channelMarker; FreqTrackerSettings m_settings; - int m_channelSampleRate; + int m_basebandSampleRate; bool m_doApplySettings; FreqTracker* m_freqTracker; diff --git a/plugins/channelrx/freqtracker/freqtrackerreport.cpp b/plugins/channelrx/freqtracker/freqtrackerreport.cpp index 47b0c767b..656754393 100644 --- a/plugins/channelrx/freqtracker/freqtrackerreport.cpp +++ b/plugins/channelrx/freqtracker/freqtrackerreport.cpp @@ -17,7 +17,6 @@ #include "freqtrackerreport.h" -MESSAGE_CLASS_DEFINITION(FreqTrackerReport::MsgNotificationToGUI, Message) MESSAGE_CLASS_DEFINITION(FreqTrackerReport::MsgConfigureChannelizer, Message) MESSAGE_CLASS_DEFINITION(FreqTrackerReport::MsgSinkFrequencyOffsetNotification, Message) diff --git a/plugins/channelrx/freqtracker/freqtrackerreport.h b/plugins/channelrx/freqtracker/freqtrackerreport.h index 6220a3c77..ddfc0729f 100644 --- a/plugins/channelrx/freqtracker/freqtrackerreport.h +++ b/plugins/channelrx/freqtracker/freqtrackerreport.h @@ -23,28 +23,6 @@ class FreqTrackerReport { public: - class MsgNotificationToGUI : public Message { - MESSAGE_CLASS_DECLARATION - - public: - static MsgNotificationToGUI* create(int sinkSampleRate, int sinkFrequencyOffset) { - return new MsgNotificationToGUI(sinkSampleRate, sinkFrequencyOffset); - } - - int getSinkSampleRate() const { return m_sinkSampleRate; } - int getSinkFrequencyOffset() const { return m_sinkFrequencyOffset; } - - private: - MsgNotificationToGUI(int sinkSampleRate, int sinkFrequencyOffset) : - Message(), - m_sinkSampleRate(sinkSampleRate), - m_sinkFrequencyOffset(sinkFrequencyOffset) - { } - - int m_sinkSampleRate; - int m_sinkFrequencyOffset; - }; - class MsgConfigureChannelizer : public Message { MESSAGE_CLASS_DECLARATION