From c4e26bf66dfa438c087f09868b7ce49276ef8d13 Mon Sep 17 00:00:00 2001 From: f4exb <f4exb06@gmail.com> Date: Thu, 9 Nov 2017 01:03:05 +0100 Subject: [PATCH] Rx channel plugins: use the demodulator constructor separated from the demodulator GUI constructor --- .../channelrx/chanalyzer/chanalyzergui.cpp | 10 +++++----- plugins/channelrx/chanalyzer/chanalyzergui.h | 6 +++--- .../channelrx/chanalyzer/chanalyzerplugin.cpp | 6 +++--- .../channelrx/chanalyzer/chanalyzerplugin.h | 2 +- .../chanalyzerng/chanalyzernggui.cpp | 19 +++++-------------- .../channelrx/chanalyzerng/chanalyzernggui.h | 6 +++--- .../chanalyzerng/chanalyzerngplugin.cpp | 4 ++-- .../chanalyzerng/chanalyzerngplugin.h | 2 +- plugins/channelrx/demodam/amdemodgui.cpp | 12 ++++++------ plugins/channelrx/demodam/amdemodgui.h | 5 +++-- plugins/channelrx/demodam/amdemodplugin.cpp | 4 ++-- plugins/channelrx/demodam/amdemodplugin.h | 2 +- plugins/channelrx/demodatv/atvdemod.cpp | 1 + plugins/channelrx/demodatv/atvdemodgui.cpp | 12 ++++++------ plugins/channelrx/demodatv/atvdemodgui.h | 6 +++--- plugins/channelrx/demodatv/atvdemodplugin.cpp | 4 ++-- plugins/channelrx/demodatv/atvdemodplugin.h | 2 +- plugins/channelrx/demodbfm/bfmdemod.cpp | 3 ++- plugins/channelrx/demodbfm/bfmdemodgui.cpp | 10 +++++----- plugins/channelrx/demodbfm/bfmdemodgui.h | 5 +++-- plugins/channelrx/demodbfm/bfmplugin.cpp | 4 ++-- plugins/channelrx/demodbfm/bfmplugin.h | 2 +- plugins/channelrx/demoddsd/dsddemodgui.cpp | 10 +++++----- plugins/channelrx/demoddsd/dsddemodgui.h | 6 +++--- plugins/channelrx/demoddsd/dsddemodplugin.cpp | 6 +++--- plugins/channelrx/demoddsd/dsddemodplugin.h | 2 +- plugins/channelrx/demodlora/lorademodgui.cpp | 10 +++++----- plugins/channelrx/demodlora/lorademodgui.h | 5 +++-- plugins/channelrx/demodlora/loraplugin.cpp | 4 ++-- plugins/channelrx/demodlora/loraplugin.h | 2 +- plugins/channelrx/demodnfm/nfmdemodgui.cpp | 10 +++++----- plugins/channelrx/demodnfm/nfmdemodgui.h | 6 +++--- plugins/channelrx/demodnfm/nfmplugin.cpp | 4 ++-- plugins/channelrx/demodnfm/nfmplugin.h | 2 +- plugins/channelrx/demodssb/ssbdemodgui.cpp | 10 +++++----- plugins/channelrx/demodssb/ssbdemodgui.h | 5 +++-- plugins/channelrx/demodssb/ssbplugin.cpp | 4 ++-- plugins/channelrx/demodssb/ssbplugin.h | 2 +- plugins/channelrx/demodwfm/wfmdemodgui.cpp | 10 +++++----- plugins/channelrx/demodwfm/wfmdemodgui.h | 6 +++--- plugins/channelrx/demodwfm/wfmplugin.cpp | 4 ++-- plugins/channelrx/demodwfm/wfmplugin.h | 2 +- plugins/channelrx/tcpsrc/tcpsrcgui.cpp | 10 +++++----- plugins/channelrx/tcpsrc/tcpsrcgui.h | 4 ++-- plugins/channelrx/tcpsrc/tcpsrcplugin.cpp | 4 ++-- plugins/channelrx/tcpsrc/tcpsrcplugin.h | 2 +- plugins/channelrx/udpsrc/udpsrcgui.cpp | 10 +++++----- plugins/channelrx/udpsrc/udpsrcgui.h | 4 ++-- plugins/channelrx/udpsrc/udpsrcplugin.cpp | 4 ++-- plugins/channelrx/udpsrc/udpsrcplugin.h | 2 +- sdrbase/plugin/plugininterface.h | 3 ++- sdrbase/plugin/pluginmanager.cpp | 6 ++++-- sdrbase/plugin/pluginmanager.h | 2 +- sdrgui/device/deviceuiset.cpp | 10 +++++----- sdrgui/mainwindow.cpp | 2 +- 55 files changed, 150 insertions(+), 150 deletions(-) diff --git a/plugins/channelrx/chanalyzer/chanalyzergui.cpp b/plugins/channelrx/chanalyzer/chanalyzergui.cpp index f31599742..c5be07240 100644 --- a/plugins/channelrx/chanalyzer/chanalyzergui.cpp +++ b/plugins/channelrx/chanalyzer/chanalyzergui.cpp @@ -38,9 +38,9 @@ #include "chanalyzer.h" -ChannelAnalyzerGUI* ChannelAnalyzerGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet) +ChannelAnalyzerGUI* ChannelAnalyzerGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { - ChannelAnalyzerGUI* gui = new ChannelAnalyzerGUI(pluginAPI, deviceUISet); + ChannelAnalyzerGUI* gui = new ChannelAnalyzerGUI(pluginAPI, deviceUISet, rxChannel); return gui; } @@ -321,7 +321,7 @@ void ChannelAnalyzerGUI::onMenuDoubleClicked() } } -ChannelAnalyzerGUI::ChannelAnalyzerGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent) : +ChannelAnalyzerGUI::ChannelAnalyzerGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) : RollupWidget(parent), ui(new Ui::ChannelAnalyzerGUI), m_pluginAPI(pluginAPI), @@ -342,7 +342,7 @@ ChannelAnalyzerGUI::ChannelAnalyzerGUI(PluginAPI* pluginAPI, DeviceUISet *device m_spectrumVis = new SpectrumVis(ui->glSpectrum); m_scopeVis = new ScopeVis(ui->glScope); m_spectrumScopeComboVis = new SpectrumScopeComboVis(m_spectrumVis, m_scopeVis); - m_channelAnalyzer = new ChannelAnalyzer(m_deviceUISet->m_deviceSourceAPI); + m_channelAnalyzer = (ChannelAnalyzer*) rxChannel; //new ChannelAnalyzer(m_deviceUISet->m_deviceSourceAPI); m_channelAnalyzer->setSampleSink(m_spectrumScopeComboVis); m_channelAnalyzer->setMessageQueueToGUI(getInputMessageQueue()); @@ -384,7 +384,7 @@ ChannelAnalyzerGUI::ChannelAnalyzerGUI(PluginAPI* pluginAPI, DeviceUISet *device ChannelAnalyzerGUI::~ChannelAnalyzerGUI() { m_deviceUISet->removeRxChannelInstance(this); - delete m_channelAnalyzer; + delete m_channelAnalyzer; // TODO: check this: when the GUI closes it has to delete the demodulator delete m_spectrumVis; delete m_scopeVis; delete m_spectrumScopeComboVis; diff --git a/plugins/channelrx/chanalyzer/chanalyzergui.h b/plugins/channelrx/chanalyzer/chanalyzergui.h index 476ff3c71..5b18561b3 100644 --- a/plugins/channelrx/chanalyzer/chanalyzergui.h +++ b/plugins/channelrx/chanalyzer/chanalyzergui.h @@ -25,7 +25,7 @@ class PluginAPI; class DeviceUISet; - +class BasebandSampleSink; class ThreadedBasebandSampleSink; class DownChannelizer; class ChannelAnalyzer; @@ -41,7 +41,7 @@ class ChannelAnalyzerGUI : public RollupWidget, public PluginInstanceGUI { Q_OBJECT public: - static ChannelAnalyzerGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUIset); + static ChannelAnalyzerGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUIset, BasebandSampleSink *rxChannel); virtual void destroy(); void setName(const QString& name); @@ -88,7 +88,7 @@ private: ScopeVis* m_scopeVis; MessageQueue m_inputMessageQueue; - explicit ChannelAnalyzerGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent = 0); + explicit ChannelAnalyzerGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent = 0); virtual ~ChannelAnalyzerGUI(); int getEffectiveLowCutoff(int lowCutoff); diff --git a/plugins/channelrx/chanalyzer/chanalyzerplugin.cpp b/plugins/channelrx/chanalyzer/chanalyzerplugin.cpp index bf772dd0c..889f15039 100644 --- a/plugins/channelrx/chanalyzer/chanalyzerplugin.cpp +++ b/plugins/channelrx/chanalyzer/chanalyzerplugin.cpp @@ -8,7 +8,7 @@ const PluginDescriptor ChannelAnalyzerPlugin::m_pluginDescriptor = { QString("Channel Analyzer"), - QString("3.8.0"), + QString("3.8.2"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, @@ -34,11 +34,11 @@ void ChannelAnalyzerPlugin::initPlugin(PluginAPI* pluginAPI) m_pluginAPI->registerRxChannel(ChannelAnalyzer::m_channelID, this); } -PluginInstanceGUI* ChannelAnalyzerPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet) +PluginInstanceGUI* ChannelAnalyzerPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { if(channelName == ChannelAnalyzer::m_channelID) { - ChannelAnalyzerGUI* gui = ChannelAnalyzerGUI::create(m_pluginAPI, deviceUISet); + ChannelAnalyzerGUI* gui = ChannelAnalyzerGUI::create(m_pluginAPI, deviceUISet, rxChannel); return gui; } else { return NULL; diff --git a/plugins/channelrx/chanalyzer/chanalyzerplugin.h b/plugins/channelrx/chanalyzer/chanalyzerplugin.h index 20624353f..70143d51e 100644 --- a/plugins/channelrx/chanalyzer/chanalyzerplugin.h +++ b/plugins/channelrx/chanalyzer/chanalyzerplugin.h @@ -18,7 +18,7 @@ public: const PluginDescriptor& getPluginDescriptor() const; void initPlugin(PluginAPI* pluginAPI); - PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet); + PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); BasebandSampleSink* createRxChannel(const QString& channelName, DeviceSourceAPI *deviceAPI); private: diff --git a/plugins/channelrx/chanalyzerng/chanalyzernggui.cpp b/plugins/channelrx/chanalyzerng/chanalyzernggui.cpp index 38c872202..62bbf7ad6 100644 --- a/plugins/channelrx/chanalyzerng/chanalyzernggui.cpp +++ b/plugins/channelrx/chanalyzerng/chanalyzernggui.cpp @@ -38,9 +38,9 @@ #include "chanalyzerng.h" -ChannelAnalyzerNGGUI* ChannelAnalyzerNGGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet) +ChannelAnalyzerNGGUI* ChannelAnalyzerNGGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { - ChannelAnalyzerNGGUI* gui = new ChannelAnalyzerNGGUI(pluginAPI, deviceUISet); + ChannelAnalyzerNGGUI* gui = new ChannelAnalyzerNGGUI(pluginAPI, deviceUISet, rxChannel); return gui; } @@ -349,7 +349,7 @@ void ChannelAnalyzerNGGUI::onMenuDoubleClicked() } } -ChannelAnalyzerNGGUI::ChannelAnalyzerNGGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent) : +ChannelAnalyzerNGGUI::ChannelAnalyzerNGGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) : RollupWidget(parent), ui(new Ui::ChannelAnalyzerNGGUI), m_pluginAPI(pluginAPI), @@ -369,13 +369,9 @@ ChannelAnalyzerNGGUI::ChannelAnalyzerNGGUI(PluginAPI* pluginAPI, DeviceUISet *de m_spectrumVis = new SpectrumVis(ui->glSpectrum); m_scopeVis = new ScopeVisNG(ui->glScope); m_spectrumScopeComboVis = new SpectrumScopeNGComboVis(m_spectrumVis, m_scopeVis); - m_channelAnalyzer = new ChannelAnalyzerNG(m_deviceUISet->m_deviceSourceAPI); + m_channelAnalyzer = (ChannelAnalyzerNG*) rxChannel; //new ChannelAnalyzerNG(m_deviceUISet->m_deviceSourceAPI); m_channelAnalyzer->setSampleSink(m_spectrumScopeComboVis); m_channelAnalyzer->setMessageQueueToGUI(getInputMessageQueue()); -// m_channelizer = new DownChannelizer(m_channelAnalyzer); -// m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this); -// connect(m_channelizer, SIGNAL(inputSampleRateChanged()), this, SLOT(channelizerInputSampleRateChanged())); -// m_deviceAPI->addThreadedSink(m_threadedChannelizer); ui->deltaFrequencyLabel->setText(QString("%1f").arg(QChar(0x94, 0x03))); ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold)); @@ -396,7 +392,6 @@ ChannelAnalyzerNGGUI::ChannelAnalyzerNGGUI(PluginAPI* pluginAPI, DeviceUISet *de ui->glScope->connectTimer(MainWindow::getInstance()->getMasterTimer()); connect(&MainWindow::getInstance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); - //m_channelMarker = new ChannelMarker(this); m_channelMarker.setColor(Qt::gray); m_channelMarker.setBandwidth(m_rate); m_channelMarker.setSidebands(ChannelMarker::usb); @@ -421,14 +416,10 @@ ChannelAnalyzerNGGUI::ChannelAnalyzerNGGUI(PluginAPI* pluginAPI, DeviceUISet *de ChannelAnalyzerNGGUI::~ChannelAnalyzerNGGUI() { m_deviceUISet->removeRxChannelInstance(this); -// m_deviceAPI->removeThreadedSink(m_threadedChannelizer); -// delete m_threadedChannelizer; -// delete m_channelizer; - delete m_channelAnalyzer; + delete m_channelAnalyzer; // TODO: check this: when the GUI closes it has to delete the demodulator delete m_spectrumVis; delete m_scopeVis; delete m_spectrumScopeComboVis; - //delete m_channelMarker; delete ui; } diff --git a/plugins/channelrx/chanalyzerng/chanalyzernggui.h b/plugins/channelrx/chanalyzerng/chanalyzernggui.h index b1c26f625..d94d70030 100644 --- a/plugins/channelrx/chanalyzerng/chanalyzernggui.h +++ b/plugins/channelrx/chanalyzerng/chanalyzernggui.h @@ -25,7 +25,7 @@ class PluginAPI; class DeviceUISet; - +class BasebandSampleSink; class ThreadedBasebandSampleSink; class DownChannelizer; class ChannelAnalyzerNG; @@ -41,7 +41,7 @@ class ChannelAnalyzerNGGUI : public RollupWidget, public PluginInstanceGUI { Q_OBJECT public: - static ChannelAnalyzerNGGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet); + static ChannelAnalyzerNGGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); virtual void destroy(); void setName(const QString& name); @@ -89,7 +89,7 @@ private: ScopeVisNG* m_scopeVis; MessageQueue m_inputMessageQueue; - explicit ChannelAnalyzerNGGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent = 0); + explicit ChannelAnalyzerNGGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent = 0); virtual ~ChannelAnalyzerNGGUI(); int getRequestedChannelSampleRate(); diff --git a/plugins/channelrx/chanalyzerng/chanalyzerngplugin.cpp b/plugins/channelrx/chanalyzerng/chanalyzerngplugin.cpp index d61d48721..b0097db62 100644 --- a/plugins/channelrx/chanalyzerng/chanalyzerngplugin.cpp +++ b/plugins/channelrx/chanalyzerng/chanalyzerngplugin.cpp @@ -49,11 +49,11 @@ void ChannelAnalyzerNGPlugin::initPlugin(PluginAPI* pluginAPI) m_pluginAPI->registerRxChannel(ChannelAnalyzerNG::m_channelID, this); } -PluginInstanceGUI* ChannelAnalyzerNGPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet) +PluginInstanceGUI* ChannelAnalyzerNGPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { if(channelName == ChannelAnalyzerNG::m_channelID) { - ChannelAnalyzerNGGUI* gui = ChannelAnalyzerNGGUI::create(m_pluginAPI, deviceUISet); + ChannelAnalyzerNGGUI* gui = ChannelAnalyzerNGGUI::create(m_pluginAPI, deviceUISet, rxChannel); return gui; } else { return 0; diff --git a/plugins/channelrx/chanalyzerng/chanalyzerngplugin.h b/plugins/channelrx/chanalyzerng/chanalyzerngplugin.h index 04ed80427..a6b9d7855 100644 --- a/plugins/channelrx/chanalyzerng/chanalyzerngplugin.h +++ b/plugins/channelrx/chanalyzerng/chanalyzerngplugin.h @@ -35,7 +35,7 @@ public: const PluginDescriptor& getPluginDescriptor() const; void initPlugin(PluginAPI* pluginAPI); - PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet); + PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); BasebandSampleSink* createRxChannel(const QString& channelName, DeviceSourceAPI *deviceAPI); private: diff --git a/plugins/channelrx/demodam/amdemodgui.cpp b/plugins/channelrx/demodam/amdemodgui.cpp index 87fd18a19..5407be9df 100644 --- a/plugins/channelrx/demodam/amdemodgui.cpp +++ b/plugins/channelrx/demodam/amdemodgui.cpp @@ -34,15 +34,15 @@ #include "amdemod.h" -AMDemodGUI* AMDemodGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet) +AMDemodGUI* AMDemodGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { - AMDemodGUI* gui = new AMDemodGUI(pluginAPI, deviceUISet); + AMDemodGUI* gui = new AMDemodGUI(pluginAPI, deviceUISet, rxChannel); return gui; } void AMDemodGUI::destroy() { - delete this; // TODO: is this really useful? + delete this; } void AMDemodGUI::setName(const QString& name) @@ -168,7 +168,7 @@ void AMDemodGUI::onMenuDialogCalled(const QPoint &p) dialog.exec(); } -AMDemodGUI::AMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent) : +AMDemodGUI::AMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) : RollupWidget(parent), ui(new Ui::AMDemodGUI), m_pluginAPI(pluginAPI), @@ -183,7 +183,7 @@ AMDemodGUI::AMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); - m_amDemod = new AMDemod(m_deviceUISet->m_deviceSourceAPI); + m_amDemod = (AMDemod*) rxChannel; //new AMDemod(m_deviceUISet->m_deviceSourceAPI); connect(&MainWindow::getInstance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); // 50 ms @@ -215,7 +215,7 @@ AMDemodGUI::AMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* AMDemodGUI::~AMDemodGUI() { m_deviceUISet->removeRxChannelInstance(this); - delete m_amDemod; + delete m_amDemod; // TODO: check this: when the GUI closes it has to delete the demodulator delete ui; } diff --git a/plugins/channelrx/demodam/amdemodgui.h b/plugins/channelrx/demodam/amdemodgui.h index 52a0211e0..2a0372cb0 100644 --- a/plugins/channelrx/demodam/amdemodgui.h +++ b/plugins/channelrx/demodam/amdemodgui.h @@ -14,6 +14,7 @@ class DeviceUISet; class ThreadedBasebandSampleSink; class DownChannelizer; class AMDemod; +class BasebandSampleSink; namespace Ui { class AMDemodGUI; @@ -23,7 +24,7 @@ class AMDemodGUI : public RollupWidget, public PluginInstanceGUI { Q_OBJECT public: - static AMDemodGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet); + static AMDemodGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); virtual void destroy(); void setName(const QString& name); @@ -65,7 +66,7 @@ private: uint32_t m_tickCount; MessageQueue m_inputMessageQueue; - explicit AMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent = 0); + explicit AMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent = 0); virtual ~AMDemodGUI(); void blockApplySettings(bool block); diff --git a/plugins/channelrx/demodam/amdemodplugin.cpp b/plugins/channelrx/demodam/amdemodplugin.cpp index b551ab1c1..3b909cf1b 100644 --- a/plugins/channelrx/demodam/amdemodplugin.cpp +++ b/plugins/channelrx/demodam/amdemodplugin.cpp @@ -34,11 +34,11 @@ void AMDemodPlugin::initPlugin(PluginAPI* pluginAPI) m_pluginAPI->registerRxChannel(AMDemod::m_channelID, this); } -PluginInstanceGUI* AMDemodPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet) +PluginInstanceGUI* AMDemodPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { if(channelName == AMDemod::m_channelID) { - AMDemodGUI* gui = AMDemodGUI::create(m_pluginAPI, deviceUISet); + AMDemodGUI* gui = AMDemodGUI::create(m_pluginAPI, deviceUISet, rxChannel); return gui; } else { return 0; diff --git a/plugins/channelrx/demodam/amdemodplugin.h b/plugins/channelrx/demodam/amdemodplugin.h index baf6352ad..35d8cb122 100644 --- a/plugins/channelrx/demodam/amdemodplugin.h +++ b/plugins/channelrx/demodam/amdemodplugin.h @@ -34,7 +34,7 @@ public: const PluginDescriptor& getPluginDescriptor() const; void initPlugin(PluginAPI* pluginAPI); - PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet); + PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); BasebandSampleSink* createRxChannel(const QString& channelName, DeviceSourceAPI *deviceAPI); private: diff --git a/plugins/channelrx/demodatv/atvdemod.cpp b/plugins/channelrx/demodatv/atvdemod.cpp index 47543dc10..7117f425a 100644 --- a/plugins/channelrx/demodatv/atvdemod.cpp +++ b/plugins/channelrx/demodatv/atvdemod.cpp @@ -40,6 +40,7 @@ const int ATVDemod::m_ssbFftLen = 1024; ATVDemod::ATVDemod(DeviceSourceAPI *deviceAPI) : m_deviceAPI(deviceAPI), + m_scopeSink(0), m_registeredATVScreen(0), m_intNumberSamplePerTop(0), m_intImageIndex(0), diff --git a/plugins/channelrx/demodatv/atvdemodgui.cpp b/plugins/channelrx/demodatv/atvdemodgui.cpp index c671027a3..abd037ba3 100644 --- a/plugins/channelrx/demodatv/atvdemodgui.cpp +++ b/plugins/channelrx/demodatv/atvdemodgui.cpp @@ -37,9 +37,10 @@ #include "atvdemod.h" ATVDemodGUI* ATVDemodGUI::create(PluginAPI* objPluginAPI, - DeviceUISet *deviceUISet) + DeviceUISet *deviceUISet, + BasebandSampleSink *rxChannel) { - ATVDemodGUI* gui = new ATVDemodGUI(objPluginAPI, deviceUISet); + ATVDemodGUI* gui = new ATVDemodGUI(objPluginAPI, deviceUISet, rxChannel); return gui; } @@ -270,8 +271,7 @@ void ATVDemodGUI::onMenuDoubleClicked() } } -ATVDemodGUI::ATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, - QWidget* objParent) : +ATVDemodGUI::ATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* objParent) : RollupWidget(objParent), ui(new Ui::ATVDemodGUI), m_pluginAPI(objPluginAPI), @@ -289,7 +289,7 @@ ATVDemodGUI::ATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, connect(this, SIGNAL(menuDoubleClickEvent()), this, SLOT(onMenuDoubleClicked())); m_scopeVis = new ScopeVisNG(ui->glScope); - m_atvDemod = new ATVDemod(m_deviceUISet->m_deviceSourceAPI); + m_atvDemod = (ATVDemod*) rxChannel; //new ATVDemod(m_deviceUISet->m_deviceSourceAPI); m_atvDemod->setMessageQueueToGUI(getInputMessageQueue()); m_atvDemod->setScopeSink(m_scopeVis); m_atvDemod->setATVScreen(ui->screenTV); @@ -344,7 +344,7 @@ ATVDemodGUI::ATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, ATVDemodGUI::~ATVDemodGUI() { m_deviceUISet->removeRxChannelInstance(this); - delete m_atvDemod; + delete m_atvDemod; // TODO: check this: when the GUI closes it has to delete the demodulator delete m_scopeVis; delete ui; } diff --git a/plugins/channelrx/demodatv/atvdemodgui.h b/plugins/channelrx/demodatv/atvdemodgui.h index abacc0a8d..8f98e8dc9 100644 --- a/plugins/channelrx/demodatv/atvdemodgui.h +++ b/plugins/channelrx/demodatv/atvdemodgui.h @@ -26,7 +26,7 @@ class PluginAPI; class DeviceUISet; - +class BasebandSampleSink; class ATVDemod; class ScopeVisNG; @@ -40,7 +40,7 @@ class ATVDemodGUI : public RollupWidget, public PluginInstanceGUI Q_OBJECT public: - static ATVDemodGUI* create(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet); + static ATVDemodGUI* create(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); virtual void destroy(); void setName(const QString& strName); @@ -103,7 +103,7 @@ private: int m_inputSampleRate; MessageQueue m_inputMessageQueue; - explicit ATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, QWidget* objParent = 0); + explicit ATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* objParent = 0); virtual ~ATVDemodGUI(); void blockApplySettings(bool blnBlock); diff --git a/plugins/channelrx/demodatv/atvdemodplugin.cpp b/plugins/channelrx/demodatv/atvdemodplugin.cpp index 4dfa93be3..7111dde4a 100644 --- a/plugins/channelrx/demodatv/atvdemodplugin.cpp +++ b/plugins/channelrx/demodatv/atvdemodplugin.cpp @@ -54,11 +54,11 @@ void ATVDemodPlugin::initPlugin(PluginAPI* ptrPluginAPI) m_ptrPluginAPI->registerRxChannel(ATVDemod::m_channelID, this); } -PluginInstanceGUI* ATVDemodPlugin::createRxChannelGUI(const QString& strChannelName, DeviceUISet *deviceUISet) +PluginInstanceGUI* ATVDemodPlugin::createRxChannelGUI(const QString& strChannelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { if(strChannelName == ATVDemod::m_channelID) { - ATVDemodGUI* ptrGui = ATVDemodGUI::create(m_ptrPluginAPI, deviceUISet); + ATVDemodGUI* ptrGui = ATVDemodGUI::create(m_ptrPluginAPI, deviceUISet, rxChannel); return ptrGui; } else diff --git a/plugins/channelrx/demodatv/atvdemodplugin.h b/plugins/channelrx/demodatv/atvdemodplugin.h index c8dde4005..d6a1fd070 100644 --- a/plugins/channelrx/demodatv/atvdemodplugin.h +++ b/plugins/channelrx/demodatv/atvdemodplugin.h @@ -36,7 +36,7 @@ public: const PluginDescriptor& getPluginDescriptor() const; void initPlugin(PluginAPI* ptrPluginAPI); - PluginInstanceGUI* createRxChannelGUI(const QString& strChannelName, DeviceUISet *deviceUISet); + PluginInstanceGUI* createRxChannelGUI(const QString& strChannelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); BasebandSampleSink* createRxChannel(const QString& channelName, DeviceSourceAPI *deviceAPI); private: diff --git a/plugins/channelrx/demodbfm/bfmdemod.cpp b/plugins/channelrx/demodbfm/bfmdemod.cpp index 8954c65c0..39b08354d 100644 --- a/plugins/channelrx/demodbfm/bfmdemod.cpp +++ b/plugins/channelrx/demodbfm/bfmdemod.cpp @@ -71,7 +71,6 @@ BFMDemod::BFMDemod(DeviceSourceAPI *deviceAPI) : m_rfFilter = new fftfilt(-50000.0 / 384000.0, 50000.0 / 384000.0, filtFftLen); - connect(m_channelizer, SIGNAL(inputSampleRateChanged()), this, SLOT(channelSampleRateChanged())); m_deemphasisFilterX.configure(default_deemphasis * m_settings.m_audioSampleRate * 1.0e-6); m_deemphasisFilterY.configure(default_deemphasis * m_settings.m_audioSampleRate * 1.0e-6); @@ -87,6 +86,8 @@ BFMDemod::BFMDemod(DeviceSourceAPI *deviceAPI) : m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this); m_deviceAPI->addThreadedSink(m_threadedChannelizer); + connect(m_channelizer, SIGNAL(inputSampleRateChanged()), this, SLOT(channelSampleRateChanged())); + applySettings(m_settings, true); } diff --git a/plugins/channelrx/demodbfm/bfmdemodgui.cpp b/plugins/channelrx/demodbfm/bfmdemodgui.cpp index 4a2b0b84a..dd2201b75 100644 --- a/plugins/channelrx/demodbfm/bfmdemodgui.cpp +++ b/plugins/channelrx/demodbfm/bfmdemodgui.cpp @@ -43,9 +43,9 @@ #include "rdstmc.h" #include "ui_bfmdemodgui.h" -BFMDemodGUI* BFMDemodGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUIset) +BFMDemodGUI* BFMDemodGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUIset, BasebandSampleSink *rxChannel) { - BFMDemodGUI* gui = new BFMDemodGUI(pluginAPI, deviceUIset); + BFMDemodGUI* gui = new BFMDemodGUI(pluginAPI, deviceUIset, rxChannel); return gui; } @@ -314,7 +314,7 @@ void BFMDemodGUI::onMenuDialogCalled(const QPoint &p) } } -BFMDemodGUI::BFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent) : +BFMDemodGUI::BFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) : RollupWidget(parent), ui(new Ui::BFMDemodGUI), m_pluginAPI(pluginAPI), @@ -336,7 +336,7 @@ BFMDemodGUI::BFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); m_spectrumVis = new SpectrumVis(ui->glSpectrum); - m_bfmDemod = new BFMDemod(m_deviceUISet->m_deviceSourceAPI); + m_bfmDemod = (BFMDemod*) rxChannel; //new BFMDemod(m_deviceUISet->m_deviceSourceAPI); m_bfmDemod->setMessageQueueToGUI(getInputMessageQueue()); m_bfmDemod->setSampleSink(m_spectrumVis); @@ -382,7 +382,7 @@ BFMDemodGUI::BFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget BFMDemodGUI::~BFMDemodGUI() { m_deviceUISet->removeRxChannelInstance(this); - delete m_bfmDemod; + delete m_bfmDemod; // TODO: check this: when the GUI closes it has to delete the demodulator delete ui; } diff --git a/plugins/channelrx/demodbfm/bfmdemodgui.h b/plugins/channelrx/demodbfm/bfmdemodgui.h index 9b6307436..5803125f1 100644 --- a/plugins/channelrx/demodbfm/bfmdemodgui.h +++ b/plugins/channelrx/demodbfm/bfmdemodgui.h @@ -33,6 +33,7 @@ class ThreadedBasebandSampleSink; class DownChannelizer; class SpectrumVis; class BFMDemod; +class BasebandSampleSink; namespace Ui { class BFMDemodGUI; @@ -42,7 +43,7 @@ class BFMDemodGUI : public RollupWidget, public PluginInstanceGUI { Q_OBJECT public: - static BFMDemodGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceAPI); + static BFMDemodGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceAPI, BasebandSampleSink *rxChannel); virtual void destroy(); void setName(const QString& name); @@ -94,7 +95,7 @@ private: std::vector<unsigned int> m_g14ComboIndex; MessageQueue m_inputMessageQueue; - explicit BFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent = 0); + explicit BFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent = 0); virtual ~BFMDemodGUI(); void blockApplySettings(bool block); diff --git a/plugins/channelrx/demodbfm/bfmplugin.cpp b/plugins/channelrx/demodbfm/bfmplugin.cpp index fa2c9ffa4..b015b2d6c 100644 --- a/plugins/channelrx/demodbfm/bfmplugin.cpp +++ b/plugins/channelrx/demodbfm/bfmplugin.cpp @@ -51,11 +51,11 @@ void BFMPlugin::initPlugin(PluginAPI* pluginAPI) m_pluginAPI->registerRxChannel(BFMDemod::m_channelID, this); } -PluginInstanceGUI* BFMPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet) +PluginInstanceGUI* BFMPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { if(channelName == BFMDemod::m_channelID) { - BFMDemodGUI* gui = BFMDemodGUI::create(m_pluginAPI, deviceUISet); + BFMDemodGUI* gui = BFMDemodGUI::create(m_pluginAPI, deviceUISet, rxChannel); return gui; } else { return 0; diff --git a/plugins/channelrx/demodbfm/bfmplugin.h b/plugins/channelrx/demodbfm/bfmplugin.h index c03991768..b5175afd2 100644 --- a/plugins/channelrx/demodbfm/bfmplugin.h +++ b/plugins/channelrx/demodbfm/bfmplugin.h @@ -34,7 +34,7 @@ public: const PluginDescriptor& getPluginDescriptor() const; void initPlugin(PluginAPI* pluginAPI); - PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet); + PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); BasebandSampleSink* createRxChannel(const QString& channelName, DeviceSourceAPI *deviceAPI); private: diff --git a/plugins/channelrx/demoddsd/dsddemodgui.cpp b/plugins/channelrx/demoddsd/dsddemodgui.cpp index 88eb2e04a..e1d4ded61 100644 --- a/plugins/channelrx/demoddsd/dsddemodgui.cpp +++ b/plugins/channelrx/demoddsd/dsddemodgui.cpp @@ -38,9 +38,9 @@ #include "dsddemodbaudrates.h" #include "dsddemod.h" -DSDDemodGUI* DSDDemodGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet) +DSDDemodGUI* DSDDemodGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { - DSDDemodGUI* gui = new DSDDemodGUI(pluginAPI, deviceUISet); + DSDDemodGUI* gui = new DSDDemodGUI(pluginAPI, deviceUISet, rxChannel); return gui; } @@ -229,7 +229,7 @@ void DSDDemodGUI::onMenuDialogCalled(const QPoint &p) dialog.exec(); } -DSDDemodGUI::DSDDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent) : +DSDDemodGUI::DSDDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) : RollupWidget(parent), ui(new Ui::DSDDemodGUI), m_pluginAPI(pluginAPI), @@ -252,7 +252,7 @@ DSDDemodGUI::DSDDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_scopeVis = new ScopeVis(ui->glScope); - m_dsdDemod = new DSDDemod(m_deviceUISet->m_deviceSourceAPI); + m_dsdDemod = (DSDDemod*) rxChannel; //new DSDDemod(m_deviceUISet->m_deviceSourceAPI); m_dsdDemod->setScopeSink(m_scopeVis); m_dsdDemod->setMessageQueueToGUI(getInputMessageQueue()); @@ -297,7 +297,7 @@ DSDDemodGUI::DSDDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget DSDDemodGUI::~DSDDemodGUI() { m_deviceUISet->removeRxChannelInstance(this); - delete m_dsdDemod; + delete m_dsdDemod; // TODO: check this: when the GUI closes it has to delete the demodulator delete ui; } diff --git a/plugins/channelrx/demoddsd/dsddemodgui.h b/plugins/channelrx/demoddsd/dsddemodgui.h index 1edad84b4..238a2ee93 100644 --- a/plugins/channelrx/demoddsd/dsddemodgui.h +++ b/plugins/channelrx/demoddsd/dsddemodgui.h @@ -31,7 +31,7 @@ class PluginAPI; class DeviceUISet; - +class BasebandSampleSink; class ScopeVis; class DSDDemod; @@ -43,7 +43,7 @@ class DSDDemodGUI : public RollupWidget, public PluginInstanceGUI { Q_OBJECT public: - static DSDDemodGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet); + static DSDDemodGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); virtual void destroy(); void setName(const QString& name); @@ -116,7 +116,7 @@ private: MessageQueue m_inputMessageQueue; - explicit DSDDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent = 0); + explicit DSDDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent = 0); virtual ~DSDDemodGUI(); void blockApplySettings(bool block); diff --git a/plugins/channelrx/demoddsd/dsddemodplugin.cpp b/plugins/channelrx/demoddsd/dsddemodplugin.cpp index df46e57bd..6d9514f80 100644 --- a/plugins/channelrx/demoddsd/dsddemodplugin.cpp +++ b/plugins/channelrx/demoddsd/dsddemodplugin.cpp @@ -25,7 +25,7 @@ const PluginDescriptor DSDDemodPlugin::m_pluginDescriptor = { QString("DSD Demodulator"), - QString("3.8.0"), + QString("3.8.2"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, @@ -51,11 +51,11 @@ void DSDDemodPlugin::initPlugin(PluginAPI* pluginAPI) m_pluginAPI->registerRxChannel(DSDDemod::m_channelID, this); } -PluginInstanceGUI* DSDDemodPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet) +PluginInstanceGUI* DSDDemodPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { if(channelName == DSDDemod::m_channelID) { - DSDDemodGUI* gui = DSDDemodGUI::create(m_pluginAPI, deviceUISet); + DSDDemodGUI* gui = DSDDemodGUI::create(m_pluginAPI, deviceUISet, rxChannel); return gui; } else { return 0; diff --git a/plugins/channelrx/demoddsd/dsddemodplugin.h b/plugins/channelrx/demoddsd/dsddemodplugin.h index a996fb1e3..7e82cc8c4 100644 --- a/plugins/channelrx/demoddsd/dsddemodplugin.h +++ b/plugins/channelrx/demoddsd/dsddemodplugin.h @@ -35,7 +35,7 @@ public: const PluginDescriptor& getPluginDescriptor() const; void initPlugin(PluginAPI* pluginAPI); - PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet); + PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); BasebandSampleSink* createRxChannel(const QString& channelName, DeviceSourceAPI *deviceAPI); private: diff --git a/plugins/channelrx/demodlora/lorademodgui.cpp b/plugins/channelrx/demodlora/lorademodgui.cpp index 56f897ede..db86bdf42 100644 --- a/plugins/channelrx/demodlora/lorademodgui.cpp +++ b/plugins/channelrx/demodlora/lorademodgui.cpp @@ -16,9 +16,9 @@ #include "lorademod.h" #include "lorademodgui.h" -LoRaDemodGUI* LoRaDemodGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet) +LoRaDemodGUI* LoRaDemodGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { - LoRaDemodGUI* gui = new LoRaDemodGUI(pluginAPI, deviceUISet); + LoRaDemodGUI* gui = new LoRaDemodGUI(pluginAPI, deviceUISet, rxChannel); return gui; } @@ -119,7 +119,7 @@ void LoRaDemodGUI::onMenuDoubleClicked() } } -LoRaDemodGUI::LoRaDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent) : +LoRaDemodGUI::LoRaDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) : RollupWidget(parent), ui(new Ui::LoRaDemodGUI), m_pluginAPI(pluginAPI), @@ -134,7 +134,7 @@ LoRaDemodGUI::LoRaDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidg connect(this, SIGNAL(menuDoubleClickEvent()), this, SLOT(onMenuDoubleClicked())); m_spectrumVis = new SpectrumVis(ui->glSpectrum); - m_LoRaDemod = new LoRaDemod(m_deviceUISet->m_deviceSourceAPI); + m_LoRaDemod = (LoRaDemod*) rxChannel; //new LoRaDemod(m_deviceUISet->m_deviceSourceAPI); m_LoRaDemod->setSpectrumSink(m_spectrumVis); ui->glSpectrum->setCenterFrequency(16000); @@ -167,7 +167,7 @@ LoRaDemodGUI::LoRaDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidg LoRaDemodGUI::~LoRaDemodGUI() { m_deviceUISet->removeRxChannelInstance(this); - delete m_LoRaDemod; + delete m_LoRaDemod; // TODO: check this: when the GUI closes it has to delete the demodulator delete m_spectrumVis; delete ui; } diff --git a/plugins/channelrx/demodlora/lorademodgui.h b/plugins/channelrx/demodlora/lorademodgui.h index cb0458fb8..b12cb61e6 100644 --- a/plugins/channelrx/demodlora/lorademodgui.h +++ b/plugins/channelrx/demodlora/lorademodgui.h @@ -12,6 +12,7 @@ class PluginAPI; class DeviceUISet; class LoRaDemod; class SpectrumVis; +class BasebandSampleSink; namespace Ui { class LoRaDemodGUI; @@ -21,7 +22,7 @@ class LoRaDemodGUI : public RollupWidget, public PluginInstanceGUI { Q_OBJECT public: - static LoRaDemodGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceAPI); + static LoRaDemodGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceAPI, BasebandSampleSink *rxChannel); virtual void destroy(); void setName(const QString& name); @@ -55,7 +56,7 @@ private: SpectrumVis* m_spectrumVis; MessageQueue m_inputMessageQueue; - explicit LoRaDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent = NULL); + explicit LoRaDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent = 0); virtual ~LoRaDemodGUI(); void blockApplySettings(bool block); diff --git a/plugins/channelrx/demodlora/loraplugin.cpp b/plugins/channelrx/demodlora/loraplugin.cpp index f357de6b3..ae4044dcb 100644 --- a/plugins/channelrx/demodlora/loraplugin.cpp +++ b/plugins/channelrx/demodlora/loraplugin.cpp @@ -33,11 +33,11 @@ void LoRaPlugin::initPlugin(PluginAPI* pluginAPI) m_pluginAPI->registerRxChannel(LoRaDemod::m_channelID, this); } -PluginInstanceGUI* LoRaPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet) +PluginInstanceGUI* LoRaPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { if(channelName == LoRaDemod::m_channelID) { - LoRaDemodGUI* gui = LoRaDemodGUI::create(m_pluginAPI, deviceUISet); + LoRaDemodGUI* gui = LoRaDemodGUI::create(m_pluginAPI, deviceUISet, rxChannel); return gui; } else { return 0; diff --git a/plugins/channelrx/demodlora/loraplugin.h b/plugins/channelrx/demodlora/loraplugin.h index 1a2ead455..9617f0e52 100644 --- a/plugins/channelrx/demodlora/loraplugin.h +++ b/plugins/channelrx/demodlora/loraplugin.h @@ -18,7 +18,7 @@ public: const PluginDescriptor& getPluginDescriptor() const; void initPlugin(PluginAPI* pluginAPI); - PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet); + PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); BasebandSampleSink* createRxChannel(const QString& channelName, DeviceSourceAPI *deviceAPI); private: diff --git a/plugins/channelrx/demodnfm/nfmdemodgui.cpp b/plugins/channelrx/demodnfm/nfmdemodgui.cpp index 2767a2178..41d09a456 100644 --- a/plugins/channelrx/demodnfm/nfmdemodgui.cpp +++ b/plugins/channelrx/demodnfm/nfmdemodgui.cpp @@ -16,9 +16,9 @@ #include "mainwindow.h" #include "nfmdemod.h" -NFMDemodGUI* NFMDemodGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet) +NFMDemodGUI* NFMDemodGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { - NFMDemodGUI* gui = new NFMDemodGUI(pluginAPI, deviceUISet); + NFMDemodGUI* gui = new NFMDemodGUI(pluginAPI, deviceUISet, rxChannel); return gui; } @@ -220,7 +220,7 @@ void NFMDemodGUI::onMenuDialogCalled(const QPoint &p) dialog.exec(); } -NFMDemodGUI::NFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent) : +NFMDemodGUI::NFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) : RollupWidget(parent), ui(new Ui::NFMDemodGUI), m_pluginAPI(pluginAPI), @@ -237,7 +237,7 @@ NFMDemodGUI::NFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); - m_nfmDemod = new NFMDemod(m_deviceUISet->m_deviceSourceAPI); + m_nfmDemod = (NFMDemod*) rxChannel; //new NFMDemod(m_deviceUISet->m_deviceSourceAPI); m_nfmDemod->setMessageQueueToGUI(getInputMessageQueue()); connect(&MainWindow::getInstance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); @@ -291,7 +291,7 @@ NFMDemodGUI::NFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget NFMDemodGUI::~NFMDemodGUI() { m_deviceUISet->removeRxChannelInstance(this); - delete m_nfmDemod; + delete m_nfmDemod; // TODO: check this: when the GUI closes it has to delete the demodulator delete ui; } diff --git a/plugins/channelrx/demodnfm/nfmdemodgui.h b/plugins/channelrx/demodnfm/nfmdemodgui.h index 3d5c2b6ad..3172389a1 100644 --- a/plugins/channelrx/demodnfm/nfmdemodgui.h +++ b/plugins/channelrx/demodnfm/nfmdemodgui.h @@ -12,7 +12,7 @@ class PluginAPI; class DeviceUISet; - +class BasebandSampleSink; class NFMDemod; namespace Ui { @@ -23,7 +23,7 @@ class NFMDemodGUI : public RollupWidget, public PluginInstanceGUI { Q_OBJECT public: - static NFMDemodGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet); + static NFMDemodGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); virtual void destroy(); void setName(const QString& name); @@ -70,7 +70,7 @@ private: uint32_t m_tickCount; MessageQueue m_inputMessageQueue; - explicit NFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent = 0); + explicit NFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent = 0); virtual ~NFMDemodGUI(); void blockApplySettings(bool block); diff --git a/plugins/channelrx/demodnfm/nfmplugin.cpp b/plugins/channelrx/demodnfm/nfmplugin.cpp index 173362284..5c9f9fe77 100644 --- a/plugins/channelrx/demodnfm/nfmplugin.cpp +++ b/plugins/channelrx/demodnfm/nfmplugin.cpp @@ -33,10 +33,10 @@ void NFMPlugin::initPlugin(PluginAPI* pluginAPI) m_pluginAPI->registerRxChannel(NFMDemod::m_channelID, this); } -PluginInstanceGUI* NFMPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet) +PluginInstanceGUI* NFMPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { if(channelName == NFMDemod::m_channelID) { - NFMDemodGUI* gui = NFMDemodGUI::create(m_pluginAPI, deviceUISet); + NFMDemodGUI* gui = NFMDemodGUI::create(m_pluginAPI, deviceUISet, rxChannel); return gui; } else { return 0; diff --git a/plugins/channelrx/demodnfm/nfmplugin.h b/plugins/channelrx/demodnfm/nfmplugin.h index 2e28e63f5..3873313b4 100644 --- a/plugins/channelrx/demodnfm/nfmplugin.h +++ b/plugins/channelrx/demodnfm/nfmplugin.h @@ -18,7 +18,7 @@ public: const PluginDescriptor& getPluginDescriptor() const; void initPlugin(PluginAPI* pluginAPI); - PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet); + PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); BasebandSampleSink* createRxChannel(const QString& channelName, DeviceSourceAPI *deviceAPI); private: diff --git a/plugins/channelrx/demodssb/ssbdemodgui.cpp b/plugins/channelrx/demodssb/ssbdemodgui.cpp index e273c6702..1f67323cb 100644 --- a/plugins/channelrx/demodssb/ssbdemodgui.cpp +++ b/plugins/channelrx/demodssb/ssbdemodgui.cpp @@ -17,9 +17,9 @@ #include "mainwindow.h" #include "ssbdemod.h" -SSBDemodGUI* SSBDemodGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet) +SSBDemodGUI* SSBDemodGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { - SSBDemodGUI* gui = new SSBDemodGUI(pluginAPI, deviceUISet); + SSBDemodGUI* gui = new SSBDemodGUI(pluginAPI, deviceUISet, rxChannel); return gui; } @@ -199,7 +199,7 @@ void SSBDemodGUI::onMenuDoubleClicked() } } -SSBDemodGUI::SSBDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent) : +SSBDemodGUI::SSBDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) : RollupWidget(parent), ui(new Ui::SSBDemodGUI), m_pluginAPI(pluginAPI), @@ -219,7 +219,7 @@ SSBDemodGUI::SSBDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget connect(this, SIGNAL(menuDoubleClickEvent()), this, SLOT(onMenuDoubleClicked())); m_spectrumVis = new SpectrumVis(ui->glSpectrum); - m_ssbDemod = new SSBDemod(m_deviceUISet->m_deviceSourceAPI); + m_ssbDemod = (SSBDemod*) rxChannel; //new SSBDemod(m_deviceUISet->m_deviceSourceAPI); m_ssbDemod->setMessageQueueToGUI(getInputMessageQueue()); m_ssbDemod->setSampleSink(m_spectrumVis); @@ -264,7 +264,7 @@ SSBDemodGUI::SSBDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget SSBDemodGUI::~SSBDemodGUI() { m_deviceUISet->removeRxChannelInstance(this); - delete m_ssbDemod; + delete m_ssbDemod; // TODO: check this: when the GUI closes it has to delete the demodulator delete m_spectrumVis; delete ui; } diff --git a/plugins/channelrx/demodssb/ssbdemodgui.h b/plugins/channelrx/demodssb/ssbdemodgui.h index 9bed86064..4e104a6e1 100644 --- a/plugins/channelrx/demodssb/ssbdemodgui.h +++ b/plugins/channelrx/demodssb/ssbdemodgui.h @@ -14,6 +14,7 @@ class DeviceUISet; class AudioFifo; class SSBDemod; class SpectrumVis; +class BasebandSampleSink; namespace Ui { class SSBDemodGUI; @@ -23,7 +24,7 @@ class SSBDemodGUI : public RollupWidget, public PluginInstanceGUI { Q_OBJECT public: - static SSBDemodGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet); + static SSBDemodGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); virtual void destroy(); void setName(const QString& name); @@ -76,7 +77,7 @@ private: SpectrumVis* m_spectrumVis; MessageQueue m_inputMessageQueue; - explicit SSBDemodGUI(PluginAPI* pluginAPI, DeviceUISet* deviceUISet, QWidget* parent = 0); + explicit SSBDemodGUI(PluginAPI* pluginAPI, DeviceUISet* deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent = 0); virtual ~SSBDemodGUI(); bool blockApplySettings(bool block); diff --git a/plugins/channelrx/demodssb/ssbplugin.cpp b/plugins/channelrx/demodssb/ssbplugin.cpp index c29465200..6dcfa9862 100644 --- a/plugins/channelrx/demodssb/ssbplugin.cpp +++ b/plugins/channelrx/demodssb/ssbplugin.cpp @@ -34,11 +34,11 @@ void SSBPlugin::initPlugin(PluginAPI* pluginAPI) m_pluginAPI->registerRxChannel(SSBDemod::m_channelID, this); } -PluginInstanceGUI* SSBPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet) +PluginInstanceGUI* SSBPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { if(channelName == SSBDemod::m_channelID) { - SSBDemodGUI* gui = SSBDemodGUI::create(m_pluginAPI, deviceUISet); + SSBDemodGUI* gui = SSBDemodGUI::create(m_pluginAPI, deviceUISet, rxChannel); return gui; } else { return 0; diff --git a/plugins/channelrx/demodssb/ssbplugin.h b/plugins/channelrx/demodssb/ssbplugin.h index ba71a0381..accb9a37e 100644 --- a/plugins/channelrx/demodssb/ssbplugin.h +++ b/plugins/channelrx/demodssb/ssbplugin.h @@ -18,7 +18,7 @@ public: const PluginDescriptor& getPluginDescriptor() const; void initPlugin(PluginAPI* pluginAPI); - PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet); + PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); BasebandSampleSink* createRxChannel(const QString& channelName, DeviceSourceAPI *deviceAPI); private: diff --git a/plugins/channelrx/demodwfm/wfmdemodgui.cpp b/plugins/channelrx/demodwfm/wfmdemodgui.cpp index 0b7cde1bb..2075a8232 100644 --- a/plugins/channelrx/demodwfm/wfmdemodgui.cpp +++ b/plugins/channelrx/demodwfm/wfmdemodgui.cpp @@ -18,9 +18,9 @@ #include "wfmdemod.h" -WFMDemodGUI* WFMDemodGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet) +WFMDemodGUI* WFMDemodGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { - WFMDemodGUI* gui = new WFMDemodGUI(pluginAPI, deviceUISet); + WFMDemodGUI* gui = new WFMDemodGUI(pluginAPI, deviceUISet, rxChannel); return gui; } @@ -142,7 +142,7 @@ void WFMDemodGUI::onMenuDialogCalled(const QPoint &p) dialog.exec(); } -WFMDemodGUI::WFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent) : +WFMDemodGUI::WFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) : RollupWidget(parent), ui(new Ui::WFMDemodGUI), m_pluginAPI(pluginAPI), @@ -156,7 +156,7 @@ WFMDemodGUI::WFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); - m_wfmDemod = new WFMDemod(m_deviceUISet->m_deviceSourceAPI); + m_wfmDemod = (WFMDemod*) rxChannel; //new WFMDemod(m_deviceUISet->m_deviceSourceAPI); connect(&MainWindow::getInstance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); @@ -196,7 +196,7 @@ WFMDemodGUI::WFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget WFMDemodGUI::~WFMDemodGUI() { m_deviceUISet->removeRxChannelInstance(this); - delete m_wfmDemod; + delete m_wfmDemod; // TODO: check this: when the GUI closes it has to delete the demodulator //delete m_channelMarker; delete ui; } diff --git a/plugins/channelrx/demodwfm/wfmdemodgui.h b/plugins/channelrx/demodwfm/wfmdemodgui.h index 9fe62a0be..a57cfe01f 100644 --- a/plugins/channelrx/demodwfm/wfmdemodgui.h +++ b/plugins/channelrx/demodwfm/wfmdemodgui.h @@ -11,7 +11,7 @@ class PluginAPI; class DeviceUISet; - +class BasebandSampleSink; class WFMDemod; namespace Ui { @@ -22,7 +22,7 @@ class WFMDemodGUI : public RollupWidget, public PluginInstanceGUI { Q_OBJECT public: - static WFMDemodGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet); + static WFMDemodGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); virtual void destroy(); void setName(const QString& name); @@ -63,7 +63,7 @@ private: MovingAverage<double> m_channelPowerDbAvg; MessageQueue m_inputMessageQueue; - explicit WFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent = 0); + explicit WFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent = 0); virtual ~WFMDemodGUI(); void blockApplySettings(bool block); diff --git a/plugins/channelrx/demodwfm/wfmplugin.cpp b/plugins/channelrx/demodwfm/wfmplugin.cpp index 0a7432f80..b07236ef8 100644 --- a/plugins/channelrx/demodwfm/wfmplugin.cpp +++ b/plugins/channelrx/demodwfm/wfmplugin.cpp @@ -34,11 +34,11 @@ void WFMPlugin::initPlugin(PluginAPI* pluginAPI) m_pluginAPI->registerRxChannel(WFMDemod::m_channelID, this); } -PluginInstanceGUI* WFMPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet) +PluginInstanceGUI* WFMPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { if(channelName == WFMDemod::m_channelID) { - WFMDemodGUI* gui = WFMDemodGUI::create(m_pluginAPI, deviceUISet); + WFMDemodGUI* gui = WFMDemodGUI::create(m_pluginAPI, deviceUISet, rxChannel); return gui; } else { return 0; diff --git a/plugins/channelrx/demodwfm/wfmplugin.h b/plugins/channelrx/demodwfm/wfmplugin.h index 30caa534c..c8985db9a 100644 --- a/plugins/channelrx/demodwfm/wfmplugin.h +++ b/plugins/channelrx/demodwfm/wfmplugin.h @@ -18,7 +18,7 @@ public: const PluginDescriptor& getPluginDescriptor() const; void initPlugin(PluginAPI* pluginAPI); - PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet); + PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); BasebandSampleSink* createRxChannel(const QString& channelName, DeviceSourceAPI *deviceAPI); private: diff --git a/plugins/channelrx/tcpsrc/tcpsrcgui.cpp b/plugins/channelrx/tcpsrc/tcpsrcgui.cpp index 6c53c09bc..cccf3ce8c 100644 --- a/plugins/channelrx/tcpsrc/tcpsrcgui.cpp +++ b/plugins/channelrx/tcpsrc/tcpsrcgui.cpp @@ -12,9 +12,9 @@ #include "mainwindow.h" #include "tcpsrc.h" -TCPSrcGUI* TCPSrcGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet) +TCPSrcGUI* TCPSrcGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { - TCPSrcGUI* gui = new TCPSrcGUI(pluginAPI, deviceUISet); + TCPSrcGUI* gui = new TCPSrcGUI(pluginAPI, deviceUISet, rxChannel); return gui; } @@ -120,7 +120,7 @@ void TCPSrcGUI::tick() ui->channelPower->setText(QString::number(m_channelPowerDbAvg.average(), 'f', 1)); } -TCPSrcGUI::TCPSrcGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent) : +TCPSrcGUI::TCPSrcGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) : RollupWidget(parent), ui(new Ui::TCPSrcGUI), m_pluginAPI(pluginAPI), @@ -139,7 +139,7 @@ TCPSrcGUI::TCPSrcGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* pa setAttribute(Qt::WA_DeleteOnClose, true); m_spectrumVis = new SpectrumVis(ui->glSpectrum); - m_tcpSrc = new TCPSrc(m_deviceUISet->m_deviceSourceAPI); + m_tcpSrc = (TCPSrc*) rxChannel; //new TCPSrc(m_deviceUISet->m_deviceSourceAPI); m_tcpSrc->setSpectrum(m_spectrumVis); ui->deltaFrequencyLabel->setText(QString("%1f").arg(QChar(0x94, 0x03))); @@ -178,7 +178,7 @@ TCPSrcGUI::TCPSrcGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* pa TCPSrcGUI::~TCPSrcGUI() { m_deviceUISet->removeRxChannelInstance(this); - delete m_tcpSrc; + delete m_tcpSrc; // TODO: check this: when the GUI closes it has to delete the demodulator delete m_spectrumVis; delete ui; } diff --git a/plugins/channelrx/tcpsrc/tcpsrcgui.h b/plugins/channelrx/tcpsrc/tcpsrcgui.h index 6c34d96a8..ee49783d8 100644 --- a/plugins/channelrx/tcpsrc/tcpsrcgui.h +++ b/plugins/channelrx/tcpsrc/tcpsrcgui.h @@ -25,7 +25,7 @@ class TCPSrcGUI : public RollupWidget, public PluginInstanceGUI { Q_OBJECT public: - static TCPSrcGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet); + static TCPSrcGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); virtual void destroy(); void setName(const QString& name); @@ -75,7 +75,7 @@ private: SpectrumVis* m_spectrumVis; MessageQueue m_inputMessageQueue; - explicit TCPSrcGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent = 0); + explicit TCPSrcGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent = 0); virtual ~TCPSrcGUI(); void blockApplySettings(bool block); diff --git a/plugins/channelrx/tcpsrc/tcpsrcplugin.cpp b/plugins/channelrx/tcpsrc/tcpsrcplugin.cpp index 0edf913f6..e63d34b19 100644 --- a/plugins/channelrx/tcpsrc/tcpsrcplugin.cpp +++ b/plugins/channelrx/tcpsrc/tcpsrcplugin.cpp @@ -34,11 +34,11 @@ void TCPSrcPlugin::initPlugin(PluginAPI* pluginAPI) m_pluginAPI->registerRxChannel(TCPSrc::m_channelID, this); } -PluginInstanceGUI* TCPSrcPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet) +PluginInstanceGUI* TCPSrcPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { if(channelName == TCPSrc::m_channelID) { - TCPSrcGUI* gui = TCPSrcGUI::create(m_pluginAPI, deviceUISet); + TCPSrcGUI* gui = TCPSrcGUI::create(m_pluginAPI, deviceUISet, rxChannel); // deviceAPI->registerChannelInstance("sdrangel.channel.tcpsrc", gui); // m_pluginAPI->addChannelRollup(gui); return gui; diff --git a/plugins/channelrx/tcpsrc/tcpsrcplugin.h b/plugins/channelrx/tcpsrc/tcpsrcplugin.h index 162285f21..ee0308bf3 100644 --- a/plugins/channelrx/tcpsrc/tcpsrcplugin.h +++ b/plugins/channelrx/tcpsrc/tcpsrcplugin.h @@ -18,7 +18,7 @@ public: const PluginDescriptor& getPluginDescriptor() const; void initPlugin(PluginAPI* pluginAPI); - PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet); + PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); BasebandSampleSink* createRxChannel(const QString& channelName, DeviceSourceAPI *deviceAPI); private: diff --git a/plugins/channelrx/udpsrc/udpsrcgui.cpp b/plugins/channelrx/udpsrc/udpsrcgui.cpp index f8a45f0dc..fbf7afbf0 100644 --- a/plugins/channelrx/udpsrc/udpsrcgui.cpp +++ b/plugins/channelrx/udpsrc/udpsrcgui.cpp @@ -30,9 +30,9 @@ #include "udpsrc.h" -UDPSrcGUI* UDPSrcGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet) +UDPSrcGUI* UDPSrcGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { - UDPSrcGUI* gui = new UDPSrcGUI(pluginAPI, deviceUISet); + UDPSrcGUI* gui = new UDPSrcGUI(pluginAPI, deviceUISet, rxChannel); return gui; } @@ -130,7 +130,7 @@ void UDPSrcGUI::tick() m_tickCount++; } -UDPSrcGUI::UDPSrcGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent) : +UDPSrcGUI::UDPSrcGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) : RollupWidget(parent), ui(new Ui::UDPSrcGUI), m_pluginAPI(pluginAPI), @@ -149,7 +149,7 @@ UDPSrcGUI::UDPSrcGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* pa setAttribute(Qt::WA_DeleteOnClose, true); m_spectrumVis = new SpectrumVis(ui->glSpectrum); - m_udpSrc = new UDPSrc(m_deviceUISet->m_deviceSourceAPI); + m_udpSrc = (UDPSrc*) rxChannel; //new UDPSrc(m_deviceUISet->m_deviceSourceAPI); m_udpSrc->setSpectrum(m_spectrumVis); ui->fmDeviation->setEnabled(false); @@ -197,7 +197,7 @@ UDPSrcGUI::UDPSrcGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* pa UDPSrcGUI::~UDPSrcGUI() { m_deviceUISet->removeRxChannelInstance(this); - delete m_udpSrc; + delete m_udpSrc; // TODO: check this: when the GUI closes it has to delete the demodulator delete m_spectrumVis; delete ui; } diff --git a/plugins/channelrx/udpsrc/udpsrcgui.h b/plugins/channelrx/udpsrc/udpsrcgui.h index d5c7edd29..69f03a82d 100644 --- a/plugins/channelrx/udpsrc/udpsrcgui.h +++ b/plugins/channelrx/udpsrc/udpsrcgui.h @@ -41,7 +41,7 @@ class UDPSrcGUI : public RollupWidget, public PluginInstanceGUI { Q_OBJECT public: - static UDPSrcGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet); + static UDPSrcGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); virtual void destroy(); void setName(const QString& name); @@ -93,7 +93,7 @@ private: // RF path SpectrumVis* m_spectrumVis; - explicit UDPSrcGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* parent = 0); + explicit UDPSrcGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent = 0); virtual ~UDPSrcGUI(); void blockApplySettings(bool block); diff --git a/plugins/channelrx/udpsrc/udpsrcplugin.cpp b/plugins/channelrx/udpsrc/udpsrcplugin.cpp index ecd456ec3..33f0b9d19 100644 --- a/plugins/channelrx/udpsrc/udpsrcplugin.cpp +++ b/plugins/channelrx/udpsrc/udpsrcplugin.cpp @@ -51,11 +51,11 @@ void UDPSrcPlugin::initPlugin(PluginAPI* pluginAPI) m_pluginAPI->registerRxChannel(UDPSrc::m_channelID, this); } -PluginInstanceGUI* UDPSrcPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet) +PluginInstanceGUI* UDPSrcPlugin::createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) { if(channelName == UDPSrc::m_channelID) { - UDPSrcGUI* gui = UDPSrcGUI::create(m_pluginAPI, deviceUISet); + UDPSrcGUI* gui = UDPSrcGUI::create(m_pluginAPI, deviceUISet, rxChannel); // deviceAPI->registerChannelInstance("sdrangel.channel.udpsrc", gui); // m_pluginAPI->addChannelRollup(gui); return gui; diff --git a/plugins/channelrx/udpsrc/udpsrcplugin.h b/plugins/channelrx/udpsrc/udpsrcplugin.h index e96bc082d..111882cad 100644 --- a/plugins/channelrx/udpsrc/udpsrcplugin.h +++ b/plugins/channelrx/udpsrc/udpsrcplugin.h @@ -35,7 +35,7 @@ public: const PluginDescriptor& getPluginDescriptor() const; void initPlugin(PluginAPI* pluginAPI); - PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet); + PluginInstanceGUI* createRxChannelGUI(const QString& channelName, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); BasebandSampleSink* createRxChannel(const QString& channelName, DeviceSourceAPI *deviceAPI); private: diff --git a/sdrbase/plugin/plugininterface.h b/sdrbase/plugin/plugininterface.h index 54e020834..822952fc1 100644 --- a/sdrbase/plugin/plugininterface.h +++ b/sdrbase/plugin/plugininterface.h @@ -75,7 +75,8 @@ public: virtual PluginInstanceGUI* createRxChannelGUI( const QString& channelName __attribute__((unused)), - DeviceUISet *deviceUISet __attribute__((unused)) ) + DeviceUISet *deviceUISet __attribute__((unused)), + BasebandSampleSink *rxChannel __attribute__((unused))) { return 0; } virtual BasebandSampleSink* createRxChannel( diff --git a/sdrbase/plugin/pluginmanager.cpp b/sdrbase/plugin/pluginmanager.cpp index 20869fb17..1ee8c625b 100644 --- a/sdrbase/plugin/pluginmanager.cpp +++ b/sdrbase/plugin/pluginmanager.cpp @@ -177,12 +177,14 @@ void PluginManager::listRxChannels(QList<QString>& list) } } -void PluginManager::createRxChannelInstance(int channelPluginIndex, DeviceUISet *deviceUISet) +void PluginManager::createRxChannelInstance(int channelPluginIndex, DeviceUISet *deviceUISet, DeviceSourceAPI *deviceAPI) { if (channelPluginIndex < m_rxChannelRegistrations.size()) { PluginInterface *pluginInterface = m_rxChannelRegistrations[channelPluginIndex].m_plugin; - pluginInterface->createRxChannelGUI(m_rxChannelRegistrations[channelPluginIndex].m_channelId, deviceUISet); + BasebandSampleSink *rxChannel = pluginInterface->createRxChannel( + m_rxChannelRegistrations[channelPluginIndex].m_channelId, deviceAPI); + pluginInterface->createRxChannelGUI(m_rxChannelRegistrations[channelPluginIndex].m_channelId, deviceUISet, rxChannel); } } diff --git a/sdrbase/plugin/pluginmanager.h b/sdrbase/plugin/pluginmanager.h index e2d7308bc..489a38a60 100644 --- a/sdrbase/plugin/pluginmanager.h +++ b/sdrbase/plugin/pluginmanager.h @@ -56,7 +56,7 @@ public: PluginAPI::ChannelRegistrations *getRxChannelRegistrations() { return &m_rxChannelRegistrations; } PluginAPI::ChannelRegistrations *getTxChannelRegistrations() { return &m_txChannelRegistrations; } - void createRxChannelInstance(int channelPluginIndex, DeviceUISet *deviceUISet); + void createRxChannelInstance(int channelPluginIndex, DeviceUISet *deviceUISet, DeviceSourceAPI *deviceAPI); void listRxChannels(QList<QString>& list); void createTxChannelInstance(int channelPluginIndex, DeviceUISet *deviceUISet, DeviceSinkAPI *deviceAPI); diff --git a/sdrgui/device/deviceuiset.cpp b/sdrgui/device/deviceuiset.cpp index 84c750ab8..5540695bc 100644 --- a/sdrgui/device/deviceuiset.cpp +++ b/sdrgui/device/deviceuiset.cpp @@ -176,11 +176,12 @@ void DeviceUISet::loadRxChannelSettings(const Preset *preset, PluginAPI *pluginA if((*channelRegistrations)[i].m_channelId == channelConfig.m_channel) { qDebug("DeviceUISet::loadChannelSettings: creating new channel [%s]", qPrintable(channelConfig.m_channel)); + BasebandSampleSink *rxChannel = (*channelRegistrations)[i].m_plugin->createRxChannel( + channelConfig.m_channel, m_deviceSourceAPI); + PluginInstanceGUI *rxChannelGUI = (*channelRegistrations)[i].m_plugin->createRxChannelGUI( + channelConfig.m_channel, this, rxChannel); reg = ChannelInstanceRegistration( - channelConfig.m_channel, - (*channelRegistrations)[i]. - m_plugin->createRxChannelGUI(channelConfig.m_channel, this) - ); + channelConfig.m_channel, rxChannelGUI); break; } } @@ -274,7 +275,6 @@ void DeviceUISet::loadTxChannelSettings(const Preset *preset, PluginAPI *pluginA if((*channelRegistrations)[i].m_channelId == channelConfig.m_channel) { qDebug("DeviceUISet::loadChannelSettings: creating new channel [%s]", qPrintable(channelConfig.m_channel)); - // TODO: create modulator core BasebandSampleSource *txChannel = (*channelRegistrations)[i].m_plugin->createTxChannel( channelConfig.m_channel, m_deviceSinkAPI); PluginInstanceGUI *txChannelGUI = (*channelRegistrations)[i].m_plugin->createTxChannelGUI( diff --git a/sdrgui/mainwindow.cpp b/sdrgui/mainwindow.cpp index 2d9a2cd75..9127dfcf3 100644 --- a/sdrgui/mainwindow.cpp +++ b/sdrgui/mainwindow.cpp @@ -1060,7 +1060,7 @@ void MainWindow::on_channel_addClicked(bool checked __attribute__((unused))) if (deviceUI->m_deviceSourceEngine) // source device => Rx channels { - m_pluginManager->createRxChannelInstance(deviceUI->m_samplingDeviceControl->getChannelSelector()->currentIndex(), deviceUI); + m_pluginManager->createRxChannelInstance(deviceUI->m_samplingDeviceControl->getChannelSelector()->currentIndex(), deviceUI, deviceUI->m_deviceSourceAPI); } else if (deviceUI->m_deviceSinkEngine) // sink device => Tx channels {