1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-09-28 15:56:33 -04:00

Multi device support: channel plugin per device mechanism extended to all channel plugins

This commit is contained in:
f4exb 2016-05-16 10:05:09 +02:00
parent bbb4bc28b4
commit 2e473cc27c
33 changed files with 177 additions and 122 deletions

View File

@ -25,6 +25,7 @@
#include "gui/glspectrum.h" #include "gui/glspectrum.h"
#include "gui/glscope.h" #include "gui/glscope.h"
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "util/simpleserializer.h" #include "util/simpleserializer.h"
#include "util/db.h" #include "util/db.h"
#include "gui/basicchannelsettingswidget.h" #include "gui/basicchannelsettingswidget.h"
@ -325,7 +326,7 @@ ChannelAnalyzerGUI::ChannelAnalyzerGUI(PluginAPI* pluginAPI, DeviceAPI *deviceAP
m_channelizer = new Channelizer(m_channelAnalyzer); m_channelizer = new Channelizer(m_channelAnalyzer);
m_threadedChannelizer = new ThreadedSampleSink(m_channelizer, this); m_threadedChannelizer = new ThreadedSampleSink(m_channelizer, this);
connect(m_channelizer, SIGNAL(inputSampleRateChanged()), this, SLOT(channelSampleRateChanged())); connect(m_channelizer, SIGNAL(inputSampleRateChanged()), this, SLOT(channelSampleRateChanged()));
m_pluginAPI->addThreadedSink(m_threadedChannelizer); m_deviceAPI->addThreadedSink(m_threadedChannelizer);
ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::ReverseGold)); ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::ReverseGold));
ui->deltaFrequency->setValueRange(7, 0U, 9999999U); ui->deltaFrequency->setValueRange(7, 0U, 9999999U);
@ -347,7 +348,8 @@ ChannelAnalyzerGUI::ChannelAnalyzerGUI(PluginAPI* pluginAPI, DeviceAPI *deviceAP
m_channelMarker.setCenterFrequency(0); m_channelMarker.setCenterFrequency(0);
m_channelMarker.setVisible(true); m_channelMarker.setVisible(true);
connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(viewChanged())); connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(viewChanged()));
m_pluginAPI->addChannelMarker(&m_channelMarker); m_deviceAPI->addChannelMarker(&m_channelMarker);
m_deviceAPI->addRollupWidget(this);
ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum); ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum);
ui->scopeGUI->setBuddies(m_scopeVis->getInputMessageQueue(), m_scopeVis, ui->glScope); ui->scopeGUI->setBuddies(m_scopeVis->getInputMessageQueue(), m_scopeVis, ui->glScope);

View File

@ -35,7 +35,7 @@ PluginGUI* ChannelAnalyzerPlugin::createChannel(const QString& channelName, Devi
if(channelName == "org.f4exb.sdrangelove.channel.chanalyzer") { if(channelName == "org.f4exb.sdrangelove.channel.chanalyzer") {
ChannelAnalyzerGUI* gui = ChannelAnalyzerGUI::create(m_pluginAPI, deviceAPI); ChannelAnalyzerGUI* gui = ChannelAnalyzerGUI::create(m_pluginAPI, deviceAPI);
m_pluginAPI->registerChannelInstance("org.f4exb.sdrangelove.channel.chanalyzer", gui); m_pluginAPI->registerChannelInstance("org.f4exb.sdrangelove.channel.chanalyzer", gui);
m_pluginAPI->addChannelRollup(gui); // m_pluginAPI->addChannelRollup(gui);
return gui; return gui;
} else { } else {
return NULL; return NULL;
@ -46,5 +46,5 @@ void ChannelAnalyzerPlugin::createInstanceChannelAnalyzer(DeviceAPI *deviceAPI)
{ {
ChannelAnalyzerGUI* gui = ChannelAnalyzerGUI::create(m_pluginAPI, deviceAPI); ChannelAnalyzerGUI* gui = ChannelAnalyzerGUI::create(m_pluginAPI, deviceAPI);
m_pluginAPI->registerChannelInstance("org.f4exb.sdrangelove.channel.chanalyzer", gui); m_pluginAPI->registerChannelInstance("org.f4exb.sdrangelove.channel.chanalyzer", gui);
m_pluginAPI->addChannelRollup(gui); // m_pluginAPI->addChannelRollup(gui);
} }

View File

@ -48,5 +48,5 @@ void AMPlugin::createInstanceAM(DeviceAPI *deviceAPI)
{ {
AMDemodGUI* gui = AMDemodGUI::create(m_pluginAPI, deviceAPI); AMDemodGUI* gui = AMDemodGUI::create(m_pluginAPI, deviceAPI);
m_pluginAPI->registerChannelInstance("de.maintech.sdrangelove.channel.am", gui); m_pluginAPI->registerChannelInstance("de.maintech.sdrangelove.channel.am", gui);
m_pluginAPI->addChannelRollup(gui); // m_pluginAPI->addChannelRollup(gui);
} }

View File

@ -29,6 +29,7 @@
#include "dsp/spectrumvis.h" #include "dsp/spectrumvis.h"
#include "gui/glspectrum.h" #include "gui/glspectrum.h"
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "util/simpleserializer.h" #include "util/simpleserializer.h"
#include "util/db.h" #include "util/db.h"
#include "gui/basicchannelsettingswidget.h" #include "gui/basicchannelsettingswidget.h"
@ -380,7 +381,7 @@ BFMDemodGUI::BFMDemodGUI(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* pa
m_channelizer = new Channelizer(m_bfmDemod); m_channelizer = new Channelizer(m_bfmDemod);
m_threadedChannelizer = new ThreadedSampleSink(m_channelizer, this); m_threadedChannelizer = new ThreadedSampleSink(m_channelizer, this);
connect(m_channelizer, SIGNAL(inputSampleRateChanged()), this, SLOT(channelSampleRateChanged())); connect(m_channelizer, SIGNAL(inputSampleRateChanged()), this, SLOT(channelSampleRateChanged()));
m_pluginAPI->addThreadedSink(m_threadedChannelizer); m_deviceAPI->addThreadedSink(m_threadedChannelizer);
ui->glSpectrum->setCenterFrequency(m_rate / 4); ui->glSpectrum->setCenterFrequency(m_rate / 4);
ui->glSpectrum->setSampleRate(m_rate / 2); ui->glSpectrum->setSampleRate(m_rate / 2);
@ -397,7 +398,8 @@ BFMDemodGUI::BFMDemodGUI(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* pa
m_channelMarker.setCenterFrequency(0); m_channelMarker.setCenterFrequency(0);
m_channelMarker.setVisible(true); m_channelMarker.setVisible(true);
connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(viewChanged())); connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(viewChanged()));
m_pluginAPI->addChannelMarker(&m_channelMarker); m_deviceAPI->addChannelMarker(&m_channelMarker);
m_deviceAPI->addRollupWidget(this);
ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum); ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum);

View File

@ -54,7 +54,7 @@ PluginGUI* BFMPlugin::createChannel(const QString& channelName, DeviceAPI *devic
if(channelName == "sdrangel.channel.bfm") { if(channelName == "sdrangel.channel.bfm") {
BFMDemodGUI* gui = BFMDemodGUI::create(m_pluginAPI, deviceAPI); BFMDemodGUI* gui = BFMDemodGUI::create(m_pluginAPI, deviceAPI);
m_pluginAPI->registerChannelInstance("sdrangel.channel.bfm", gui); m_pluginAPI->registerChannelInstance("sdrangel.channel.bfm", gui);
m_pluginAPI->addChannelRollup(gui); // m_pluginAPI->addChannelRollup(gui);
return gui; return gui;
} else { } else {
return 0; return 0;
@ -65,5 +65,5 @@ void BFMPlugin::createInstanceBFM(DeviceAPI *deviceAPI)
{ {
BFMDemodGUI* gui = BFMDemodGUI::create(m_pluginAPI, deviceAPI); BFMDemodGUI* gui = BFMDemodGUI::create(m_pluginAPI, deviceAPI);
m_pluginAPI->registerChannelInstance("sdrangel.channel.bfm", gui); m_pluginAPI->registerChannelInstance("sdrangel.channel.bfm", gui);
m_pluginAPI->addChannelRollup(gui); // m_pluginAPI->addChannelRollup(gui);
} }

View File

@ -24,6 +24,7 @@
#include "dsp/scopevis.h" #include "dsp/scopevis.h"
#include "gui/glscope.h" #include "gui/glscope.h"
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "util/simpleserializer.h" #include "util/simpleserializer.h"
#include "util/db.h" #include "util/db.h"
#include "gui/basicchannelsettingswidget.h" #include "gui/basicchannelsettingswidget.h"
@ -33,9 +34,9 @@
#include "dsddemod.h" #include "dsddemod.h"
#include "dsddemodgui.h" #include "dsddemodgui.h"
DSDDemodGUI* DSDDemodGUI::create(PluginAPI* pluginAPI) DSDDemodGUI* DSDDemodGUI::create(PluginAPI* pluginAPI, DeviceAPI *deviceAPI)
{ {
DSDDemodGUI* gui = new DSDDemodGUI(pluginAPI); DSDDemodGUI* gui = new DSDDemodGUI(pluginAPI, deviceAPI);
return gui; return gui;
} }
@ -243,10 +244,11 @@ void DSDDemodGUI::onMenuDoubleClicked()
} }
} }
DSDDemodGUI::DSDDemodGUI(PluginAPI* pluginAPI, QWidget* parent) : DSDDemodGUI::DSDDemodGUI(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) :
RollupWidget(parent), RollupWidget(parent),
ui(new Ui::DSDDemodGUI), ui(new Ui::DSDDemodGUI),
m_pluginAPI(pluginAPI), m_pluginAPI(pluginAPI),
m_deviceAPI(deviceAPI),
m_channelMarker(this), m_channelMarker(this),
m_basicSettingsShown(false), m_basicSettingsShown(false),
m_doApplySettings(true), m_doApplySettings(true),
@ -276,7 +278,7 @@ DSDDemodGUI::DSDDemodGUI(PluginAPI* pluginAPI, QWidget* parent) :
m_channelizer = new Channelizer(m_dsdDemod); m_channelizer = new Channelizer(m_dsdDemod);
m_threadedChannelizer = new ThreadedSampleSink(m_channelizer, this); m_threadedChannelizer = new ThreadedSampleSink(m_channelizer, this);
m_pluginAPI->addThreadedSink(m_threadedChannelizer); m_deviceAPI->addThreadedSink(m_threadedChannelizer);
//m_channelMarker = new ChannelMarker(this); //m_channelMarker = new ChannelMarker(this);
m_channelMarker.setColor(Qt::cyan); m_channelMarker.setColor(Qt::cyan);
@ -286,7 +288,8 @@ DSDDemodGUI::DSDDemodGUI(PluginAPI* pluginAPI, QWidget* parent) :
connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(viewChanged())); connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(viewChanged()));
m_pluginAPI->addChannelMarker(&m_channelMarker); m_deviceAPI->addChannelMarker(&m_channelMarker);
m_deviceAPI->addRollupWidget(this);
ui->scopeGUI->setBuddies(m_scopeVis->getInputMessageQueue(), m_scopeVis, ui->glScope); ui->scopeGUI->setBuddies(m_scopeVis->getInputMessageQueue(), m_scopeVis, ui->glScope);
@ -296,7 +299,7 @@ DSDDemodGUI::DSDDemodGUI(PluginAPI* pluginAPI, QWidget* parent) :
DSDDemodGUI::~DSDDemodGUI() DSDDemodGUI::~DSDDemodGUI()
{ {
m_pluginAPI->removeChannelInstance(this); m_pluginAPI->removeChannelInstance(this);
m_pluginAPI->removeThreadedSink(m_threadedChannelizer); m_deviceAPI->removeThreadedSink(m_threadedChannelizer);
delete m_threadedChannelizer; delete m_threadedChannelizer;
delete m_channelizer; delete m_channelizer;
delete m_dsdDemod; delete m_dsdDemod;

View File

@ -25,6 +25,7 @@
#include "dsp/movingaverage.h" #include "dsp/movingaverage.h"
class PluginAPI; class PluginAPI;
class DeviceAPI;
class ThreadedSampleSink; class ThreadedSampleSink;
class Channelizer; class Channelizer;
@ -39,7 +40,7 @@ class DSDDemodGUI : public RollupWidget, public PluginGUI {
Q_OBJECT Q_OBJECT
public: public:
static DSDDemodGUI* create(PluginAPI* pluginAPI); static DSDDemodGUI* create(PluginAPI* pluginAPI, DeviceAPI *deviceAPI);
void destroy(); void destroy();
void setName(const QString& name); void setName(const QString& name);
@ -79,6 +80,7 @@ private:
Ui::DSDDemodGUI* ui; Ui::DSDDemodGUI* ui;
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
DeviceAPI* m_deviceAPI;
ChannelMarker m_channelMarker; ChannelMarker m_channelMarker;
bool m_basicSettingsShown; bool m_basicSettingsShown;
bool m_doApplySettings; bool m_doApplySettings;
@ -95,7 +97,7 @@ private:
MovingAverage<Real> m_channelPowerDbAvg; MovingAverage<Real> m_channelPowerDbAvg;
int m_tickCount; int m_tickCount;
explicit DSDDemodGUI(PluginAPI* pluginAPI, QWidget* parent = NULL); explicit DSDDemodGUI(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL);
virtual ~DSDDemodGUI(); virtual ~DSDDemodGUI();
void blockApplySettings(bool block); void blockApplySettings(bool block);

View File

@ -17,6 +17,7 @@
#include <QtPlugin> #include <QtPlugin>
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "dsddemodplugin.h" #include "dsddemodplugin.h"
#include "dsddemodgui.h" #include "dsddemodgui.h"
@ -47,21 +48,21 @@ void DSDDemodPlugin::initPlugin(PluginAPI* pluginAPI)
m_pluginAPI->registerChannel("sdrangel.channel.dsddemod", this); m_pluginAPI->registerChannel("sdrangel.channel.dsddemod", this);
} }
PluginGUI* DSDDemodPlugin::createChannel(const QString& channelName) PluginGUI* DSDDemodPlugin::createChannel(const QString& channelName, DeviceAPI *deviceAPI)
{ {
if(channelName == "sdrangel.channel.dsddemod") { if(channelName == "sdrangel.channel.dsddemod") {
DSDDemodGUI* gui = DSDDemodGUI::create(m_pluginAPI); DSDDemodGUI* gui = DSDDemodGUI::create(m_pluginAPI, deviceAPI);
m_pluginAPI->registerChannelInstance("sdrangel.channel.dsddemod", gui); m_pluginAPI->registerChannelInstance("sdrangel.channel.dsddemod", gui);
m_pluginAPI->addChannelRollup(gui); // m_pluginAPI->addChannelRollup(gui);
return gui; return gui;
} else { } else {
return NULL; return NULL;
} }
} }
void DSDDemodPlugin::createInstanceDSDDemod() void DSDDemodPlugin::createInstanceDSDDemod(DeviceAPI *deviceAPI)
{ {
DSDDemodGUI* gui = DSDDemodGUI::create(m_pluginAPI); DSDDemodGUI* gui = DSDDemodGUI::create(m_pluginAPI, deviceAPI);
m_pluginAPI->registerChannelInstance("sdrangel.channel.dsddemod", gui); m_pluginAPI->registerChannelInstance("sdrangel.channel.dsddemod", gui);
m_pluginAPI->addChannelRollup(gui); // m_pluginAPI->addChannelRollup(gui);
} }

View File

@ -21,6 +21,8 @@
#include <QObject> #include <QObject>
#include "plugin/plugininterface.h" #include "plugin/plugininterface.h"
class DeviceAPI;
class DSDDemodPlugin : public QObject, PluginInterface { class DSDDemodPlugin : public QObject, PluginInterface {
Q_OBJECT Q_OBJECT
Q_INTERFACES(PluginInterface) Q_INTERFACES(PluginInterface)
@ -32,7 +34,7 @@ public:
const PluginDescriptor& getPluginDescriptor() const; const PluginDescriptor& getPluginDescriptor() const;
void initPlugin(PluginAPI* pluginAPI); void initPlugin(PluginAPI* pluginAPI);
PluginGUI* createChannel(const QString& channelName); PluginGUI* createChannel(const QString& channelName, DeviceAPI *deviceAPI);
private: private:
static const PluginDescriptor m_pluginDescriptor; static const PluginDescriptor m_pluginDescriptor;
@ -40,7 +42,7 @@ private:
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
private slots: private slots:
void createInstanceDSDDemod(); void createInstanceDSDDemod(DeviceAPI *deviceAPI);
}; };
#endif // INCLUDE_DSDDEMODLUGIN_H #endif // INCLUDE_DSDDEMODLUGIN_H

View File

@ -10,13 +10,14 @@
#include "dsp/spectrumvis.h" #include "dsp/spectrumvis.h"
#include "gui/glspectrum.h" #include "gui/glspectrum.h"
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "util/simpleserializer.h" #include "util/simpleserializer.h"
#include "gui/basicchannelsettingswidget.h" #include "gui/basicchannelsettingswidget.h"
#include "dsp/dspengine.h" #include "dsp/dspengine.h"
LoRaDemodGUI* LoRaDemodGUI::create(PluginAPI* pluginAPI) LoRaDemodGUI* LoRaDemodGUI::create(PluginAPI* pluginAPI, DeviceAPI *deviceAPI)
{ {
LoRaDemodGUI* gui = new LoRaDemodGUI(pluginAPI); LoRaDemodGUI* gui = new LoRaDemodGUI(pluginAPI, deviceAPI);
return gui; return gui;
} }
@ -146,10 +147,11 @@ void LoRaDemodGUI::onMenuDoubleClicked()
} }
} }
LoRaDemodGUI::LoRaDemodGUI(PluginAPI* pluginAPI, QWidget* parent) : LoRaDemodGUI::LoRaDemodGUI(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) :
RollupWidget(parent), RollupWidget(parent),
ui(new Ui::LoRaDemodGUI), ui(new Ui::LoRaDemodGUI),
m_pluginAPI(pluginAPI), m_pluginAPI(pluginAPI),
m_deviceAPI(deviceAPI),
m_channelMarker(this), m_channelMarker(this),
m_basicSettingsShown(false), m_basicSettingsShown(false),
m_doApplySettings(true) m_doApplySettings(true)
@ -163,7 +165,7 @@ LoRaDemodGUI::LoRaDemodGUI(PluginAPI* pluginAPI, QWidget* parent) :
m_LoRaDemod = new LoRaDemod(m_spectrumVis); m_LoRaDemod = new LoRaDemod(m_spectrumVis);
m_channelizer = new Channelizer(m_LoRaDemod); m_channelizer = new Channelizer(m_LoRaDemod);
m_threadedChannelizer = new ThreadedSampleSink(m_channelizer); m_threadedChannelizer = new ThreadedSampleSink(m_channelizer);
m_pluginAPI->addThreadedSink(m_threadedChannelizer); m_deviceAPI->addThreadedSink(m_threadedChannelizer);
ui->glSpectrum->setCenterFrequency(16000); ui->glSpectrum->setCenterFrequency(16000);
ui->glSpectrum->setSampleRate(32000); ui->glSpectrum->setSampleRate(32000);
@ -178,7 +180,8 @@ LoRaDemodGUI::LoRaDemodGUI(PluginAPI* pluginAPI, QWidget* parent) :
m_channelMarker.setCenterFrequency(0); m_channelMarker.setCenterFrequency(0);
m_channelMarker.setVisible(true); m_channelMarker.setVisible(true);
connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(viewChanged())); connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(viewChanged()));
m_pluginAPI->addChannelMarker(&m_channelMarker); m_deviceAPI->addChannelMarker(&m_channelMarker);
m_deviceAPI->addRollupWidget(this);
ui->spectrumGUI->setBuddies(m_channelizer->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum); ui->spectrumGUI->setBuddies(m_channelizer->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum);
@ -188,7 +191,7 @@ LoRaDemodGUI::LoRaDemodGUI(PluginAPI* pluginAPI, QWidget* parent) :
LoRaDemodGUI::~LoRaDemodGUI() LoRaDemodGUI::~LoRaDemodGUI()
{ {
m_pluginAPI->removeChannelInstance(this); m_pluginAPI->removeChannelInstance(this);
m_pluginAPI->removeThreadedSink(m_threadedChannelizer); m_deviceAPI->removeThreadedSink(m_threadedChannelizer);
delete m_threadedChannelizer; delete m_threadedChannelizer;
delete m_channelizer; delete m_channelizer;
delete m_LoRaDemod; delete m_LoRaDemod;

View File

@ -8,6 +8,7 @@
#define BANDWIDTHSTRING {7813,15625,20833,31250,62500} #define BANDWIDTHSTRING {7813,15625,20833,31250,62500}
class PluginAPI; class PluginAPI;
class DeviceAPI;
class ThreadedSampleSink; class ThreadedSampleSink;
class Channelizer; class Channelizer;
class LoRaDemod; class LoRaDemod;
@ -21,7 +22,7 @@ class LoRaDemodGUI : public RollupWidget, public PluginGUI {
Q_OBJECT Q_OBJECT
public: public:
static LoRaDemodGUI* create(PluginAPI* pluginAPI); static LoRaDemodGUI* create(PluginAPI* pluginAPI, DeviceAPI *deviceAPI);
void destroy(); void destroy();
void setName(const QString& name); void setName(const QString& name);
@ -45,6 +46,7 @@ private slots:
private: private:
Ui::LoRaDemodGUI* ui; Ui::LoRaDemodGUI* ui;
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
DeviceAPI* m_deviceAPI;
ChannelMarker m_channelMarker; ChannelMarker m_channelMarker;
bool m_basicSettingsShown; bool m_basicSettingsShown;
bool m_doApplySettings; bool m_doApplySettings;
@ -54,7 +56,7 @@ private:
LoRaDemod* m_LoRaDemod; LoRaDemod* m_LoRaDemod;
SpectrumVis* m_spectrumVis; SpectrumVis* m_spectrumVis;
explicit LoRaDemodGUI(PluginAPI* pluginAPI, QWidget* parent = NULL); explicit LoRaDemodGUI(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL);
virtual ~LoRaDemodGUI(); virtual ~LoRaDemodGUI();
void blockApplySettings(bool block); void blockApplySettings(bool block);

View File

@ -30,21 +30,21 @@ void LoRaPlugin::initPlugin(PluginAPI* pluginAPI)
m_pluginAPI->registerChannel("de.maintech.sdrangelove.channel.lora", this); m_pluginAPI->registerChannel("de.maintech.sdrangelove.channel.lora", this);
} }
PluginGUI* LoRaPlugin::createChannel(const QString& channelName) PluginGUI* LoRaPlugin::createChannel(const QString& channelName, DeviceAPI *deviceAPI)
{ {
if(channelName == "de.maintech.sdrangelove.channel.lora") { if(channelName == "de.maintech.sdrangelove.channel.lora") {
LoRaDemodGUI* gui = LoRaDemodGUI::create(m_pluginAPI); LoRaDemodGUI* gui = LoRaDemodGUI::create(m_pluginAPI, deviceAPI);
m_pluginAPI->registerChannelInstance("de.maintech.sdrangelove.channel.lora", gui); m_pluginAPI->registerChannelInstance("de.maintech.sdrangelove.channel.lora", gui);
m_pluginAPI->addChannelRollup(gui); // m_pluginAPI->addChannelRollup(gui);
return gui; return gui;
} else { } else {
return NULL; return NULL;
} }
} }
void LoRaPlugin::createInstanceLoRa() void LoRaPlugin::createInstanceLoRa(DeviceAPI *deviceAPI)
{ {
LoRaDemodGUI* gui = LoRaDemodGUI::create(m_pluginAPI); LoRaDemodGUI* gui = LoRaDemodGUI::create(m_pluginAPI, deviceAPI);
m_pluginAPI->registerChannelInstance("de.maintech.sdrangelove.channel.lora", gui); m_pluginAPI->registerChannelInstance("de.maintech.sdrangelove.channel.lora", gui);
m_pluginAPI->addChannelRollup(gui); // m_pluginAPI->addChannelRollup(gui);
} }

View File

@ -4,6 +4,8 @@
#include <QObject> #include <QObject>
#include "plugin/plugininterface.h" #include "plugin/plugininterface.h"
class DeviceAPI;
class LoRaPlugin : public QObject, PluginInterface { class LoRaPlugin : public QObject, PluginInterface {
Q_OBJECT Q_OBJECT
Q_INTERFACES(PluginInterface) Q_INTERFACES(PluginInterface)
@ -15,7 +17,7 @@ public:
const PluginDescriptor& getPluginDescriptor() const; const PluginDescriptor& getPluginDescriptor() const;
void initPlugin(PluginAPI* pluginAPI); void initPlugin(PluginAPI* pluginAPI);
PluginGUI* createChannel(const QString& channelName); PluginGUI* createChannel(const QString& channelName, DeviceAPI *deviceAPI);
private: private:
static const PluginDescriptor m_pluginDescriptor; static const PluginDescriptor m_pluginDescriptor;
@ -23,7 +25,7 @@ private:
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
private slots: private slots:
void createInstanceLoRa(); void createInstanceLoRa(DeviceAPI *deviceAPI);
}; };
#endif // INCLUDE_LoRaPLUGIN_H #endif // INCLUDE_LoRaPLUGIN_H

View File

@ -8,6 +8,7 @@
#include "nfmdemod.h" #include "nfmdemod.h"
#include "dsp/nullsink.h" #include "dsp/nullsink.h"
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "util/simpleserializer.h" #include "util/simpleserializer.h"
#include "util/db.h" #include "util/db.h"
#include "gui/basicchannelsettingswidget.h" #include "gui/basicchannelsettingswidget.h"
@ -22,9 +23,9 @@ const int NFMDemodGUI::m_fmDev[] = { // corresponding FM deviations
}; };
const int NFMDemodGUI::m_nbRfBW = 9; const int NFMDemodGUI::m_nbRfBW = 9;
NFMDemodGUI* NFMDemodGUI::create(PluginAPI* pluginAPI) NFMDemodGUI* NFMDemodGUI::create(PluginAPI* pluginAPI, DeviceAPI *deviceAPI)
{ {
NFMDemodGUI* gui = new NFMDemodGUI(pluginAPI); NFMDemodGUI* gui = new NFMDemodGUI(pluginAPI, deviceAPI);
return gui; return gui;
} }
@ -247,10 +248,11 @@ void NFMDemodGUI::onMenuDoubleClicked()
} }
} }
NFMDemodGUI::NFMDemodGUI(PluginAPI* pluginAPI, QWidget* parent) : NFMDemodGUI::NFMDemodGUI(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) :
RollupWidget(parent), RollupWidget(parent),
ui(new Ui::NFMDemodGUI), ui(new Ui::NFMDemodGUI),
m_pluginAPI(pluginAPI), m_pluginAPI(pluginAPI),
m_deviceAPI(deviceAPI),
m_channelMarker(this), m_channelMarker(this),
m_basicSettingsShown(false), m_basicSettingsShown(false),
m_doApplySettings(true), m_doApplySettings(true),
@ -289,7 +291,7 @@ NFMDemodGUI::NFMDemodGUI(PluginAPI* pluginAPI, QWidget* parent) :
m_channelizer = new Channelizer(m_nfmDemod); m_channelizer = new Channelizer(m_nfmDemod);
m_threadedChannelizer = new ThreadedSampleSink(m_channelizer, this); m_threadedChannelizer = new ThreadedSampleSink(m_channelizer, this);
m_pluginAPI->addThreadedSink(m_threadedChannelizer); m_deviceAPI->addThreadedSink(m_threadedChannelizer);
//m_channelMarker = new ChannelMarker(this); //m_channelMarker = new ChannelMarker(this);
m_channelMarker.setColor(Qt::red); m_channelMarker.setColor(Qt::red);
@ -299,7 +301,8 @@ NFMDemodGUI::NFMDemodGUI(PluginAPI* pluginAPI, QWidget* parent) :
connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(viewChanged())); connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(viewChanged()));
m_pluginAPI->addChannelMarker(&m_channelMarker); m_deviceAPI->addChannelMarker(&m_channelMarker);
m_deviceAPI->addRollupWidget(this);
applySettings(); applySettings();
} }
@ -307,7 +310,7 @@ NFMDemodGUI::NFMDemodGUI(PluginAPI* pluginAPI, QWidget* parent) :
NFMDemodGUI::~NFMDemodGUI() NFMDemodGUI::~NFMDemodGUI()
{ {
m_pluginAPI->removeChannelInstance(this); m_pluginAPI->removeChannelInstance(this);
m_pluginAPI->removeThreadedSink(m_threadedChannelizer); m_deviceAPI->removeThreadedSink(m_threadedChannelizer);
delete m_threadedChannelizer; delete m_threadedChannelizer;
delete m_channelizer; delete m_channelizer;
delete m_nfmDemod; delete m_nfmDemod;

View File

@ -8,6 +8,7 @@
#include "dsp/movingaverage.h" #include "dsp/movingaverage.h"
class PluginAPI; class PluginAPI;
class DeviceAPI;
class ThreadedSampleSink; class ThreadedSampleSink;
class Channelizer; class Channelizer;
@ -21,7 +22,7 @@ class NFMDemodGUI : public RollupWidget, public PluginGUI {
Q_OBJECT Q_OBJECT
public: public:
static NFMDemodGUI* create(PluginAPI* pluginAPI); static NFMDemodGUI* create(PluginAPI* pluginAPI, DeviceAPI *deviceAPI);
void destroy(); void destroy();
void setName(const QString& name); void setName(const QString& name);
@ -55,6 +56,7 @@ private slots:
private: private:
Ui::NFMDemodGUI* ui; Ui::NFMDemodGUI* ui;
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
DeviceAPI* m_deviceAPI;
ChannelMarker m_channelMarker; ChannelMarker m_channelMarker;
bool m_basicSettingsShown; bool m_basicSettingsShown;
bool m_doApplySettings; bool m_doApplySettings;
@ -71,7 +73,7 @@ private:
static const int m_fmDev[]; static const int m_fmDev[];
static const int m_nbRfBW; static const int m_nbRfBW;
explicit NFMDemodGUI(PluginAPI* pluginAPI, QWidget* parent = NULL); explicit NFMDemodGUI(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL);
virtual ~NFMDemodGUI(); virtual ~NFMDemodGUI();
void blockApplySettings(bool block); void blockApplySettings(bool block);

View File

@ -30,21 +30,21 @@ void NFMPlugin::initPlugin(PluginAPI* pluginAPI)
m_pluginAPI->registerChannel("de.maintech.sdrangelove.channel.nfm", this); m_pluginAPI->registerChannel("de.maintech.sdrangelove.channel.nfm", this);
} }
PluginGUI* NFMPlugin::createChannel(const QString& channelName) PluginGUI* NFMPlugin::createChannel(const QString& channelName, DeviceAPI *deviceAPI)
{ {
if(channelName == "de.maintech.sdrangelove.channel.nfm") { if(channelName == "de.maintech.sdrangelove.channel.nfm") {
NFMDemodGUI* gui = NFMDemodGUI::create(m_pluginAPI); NFMDemodGUI* gui = NFMDemodGUI::create(m_pluginAPI, deviceAPI);
m_pluginAPI->registerChannelInstance("de.maintech.sdrangelove.channel.nfm", gui); m_pluginAPI->registerChannelInstance("de.maintech.sdrangelove.channel.nfm", gui);
m_pluginAPI->addChannelRollup(gui); // m_pluginAPI->addChannelRollup(gui);
return gui; return gui;
} else { } else {
return NULL; return NULL;
} }
} }
void NFMPlugin::createInstanceNFM() void NFMPlugin::createInstanceNFM(DeviceAPI *deviceAPI)
{ {
NFMDemodGUI* gui = NFMDemodGUI::create(m_pluginAPI); NFMDemodGUI* gui = NFMDemodGUI::create(m_pluginAPI, deviceAPI);
m_pluginAPI->registerChannelInstance("de.maintech.sdrangelove.channel.nfm", gui); m_pluginAPI->registerChannelInstance("de.maintech.sdrangelove.channel.nfm", gui);
m_pluginAPI->addChannelRollup(gui); // m_pluginAPI->addChannelRollup(gui);
} }

View File

@ -4,6 +4,8 @@
#include <QObject> #include <QObject>
#include "plugin/plugininterface.h" #include "plugin/plugininterface.h"
class DeviceAPI;
class NFMPlugin : public QObject, PluginInterface { class NFMPlugin : public QObject, PluginInterface {
Q_OBJECT Q_OBJECT
Q_INTERFACES(PluginInterface) Q_INTERFACES(PluginInterface)
@ -15,7 +17,7 @@ public:
const PluginDescriptor& getPluginDescriptor() const; const PluginDescriptor& getPluginDescriptor() const;
void initPlugin(PluginAPI* pluginAPI); void initPlugin(PluginAPI* pluginAPI);
PluginGUI* createChannel(const QString& channelName); PluginGUI* createChannel(const QString& channelName, DeviceAPI *deviceAPI);
private: private:
static const PluginDescriptor m_pluginDescriptor; static const PluginDescriptor m_pluginDescriptor;
@ -23,7 +25,7 @@ private:
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
private slots: private slots:
void createInstanceNFM(); void createInstanceNFM(DeviceAPI *deviceAPI);
}; };
#endif // INCLUDE_NFMPLUGIN_H #endif // INCLUDE_NFMPLUGIN_H

View File

@ -10,15 +10,16 @@
#include "dsp/spectrumvis.h" #include "dsp/spectrumvis.h"
#include "gui/glspectrum.h" #include "gui/glspectrum.h"
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "util/simpleserializer.h" #include "util/simpleserializer.h"
#include "util/db.h" #include "util/db.h"
#include "gui/basicchannelsettingswidget.h" #include "gui/basicchannelsettingswidget.h"
#include "dsp/dspengine.h" #include "dsp/dspengine.h"
#include "mainwindow.h" #include "mainwindow.h"
SSBDemodGUI* SSBDemodGUI::create(PluginAPI* pluginAPI) SSBDemodGUI* SSBDemodGUI::create(PluginAPI* pluginAPI, DeviceAPI *deviceAPI)
{ {
SSBDemodGUI* gui = new SSBDemodGUI(pluginAPI); SSBDemodGUI* gui = new SSBDemodGUI(pluginAPI, deviceAPI);
return gui; return gui;
} }
@ -314,10 +315,11 @@ void SSBDemodGUI::onMenuDoubleClicked()
} }
} }
SSBDemodGUI::SSBDemodGUI(PluginAPI* pluginAPI, QWidget* parent) : SSBDemodGUI::SSBDemodGUI(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) :
RollupWidget(parent), RollupWidget(parent),
ui(new Ui::SSBDemodGUI), ui(new Ui::SSBDemodGUI),
m_pluginAPI(pluginAPI), m_pluginAPI(pluginAPI),
m_deviceAPI(deviceAPI),
m_channelMarker(this), m_channelMarker(this),
m_basicSettingsShown(false), m_basicSettingsShown(false),
m_doApplySettings(true), m_doApplySettings(true),
@ -338,7 +340,7 @@ SSBDemodGUI::SSBDemodGUI(PluginAPI* pluginAPI, QWidget* parent) :
m_ssbDemod = new SSBDemod(m_spectrumVis); m_ssbDemod = new SSBDemod(m_spectrumVis);
m_channelizer = new Channelizer(m_ssbDemod); m_channelizer = new Channelizer(m_ssbDemod);
m_threadedChannelizer = new ThreadedSampleSink(m_channelizer, this); m_threadedChannelizer = new ThreadedSampleSink(m_channelizer, this);
m_pluginAPI->addThreadedSink(m_threadedChannelizer); m_deviceAPI->addThreadedSink(m_threadedChannelizer);
ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::ReverseGold)); ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::ReverseGold));
@ -358,7 +360,8 @@ SSBDemodGUI::SSBDemodGUI(PluginAPI* pluginAPI, QWidget* parent) :
m_channelMarker.setCenterFrequency(0); m_channelMarker.setCenterFrequency(0);
m_channelMarker.setVisible(true); m_channelMarker.setVisible(true);
connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(viewChanged())); connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(viewChanged()));
m_pluginAPI->addChannelMarker(&m_channelMarker); m_deviceAPI->addChannelMarker(&m_channelMarker);
m_deviceAPI->addRollupWidget(this);
ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum); ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum);
@ -369,7 +372,7 @@ SSBDemodGUI::SSBDemodGUI(PluginAPI* pluginAPI, QWidget* parent) :
SSBDemodGUI::~SSBDemodGUI() SSBDemodGUI::~SSBDemodGUI()
{ {
m_pluginAPI->removeChannelInstance(this); m_pluginAPI->removeChannelInstance(this);
m_pluginAPI->removeThreadedSink(m_threadedChannelizer); m_deviceAPI->removeThreadedSink(m_threadedChannelizer);
delete m_threadedChannelizer; delete m_threadedChannelizer;
delete m_channelizer; delete m_channelizer;
delete m_ssbDemod; delete m_ssbDemod;

View File

@ -7,6 +7,7 @@
#include "dsp/movingaverage.h" #include "dsp/movingaverage.h"
class PluginAPI; class PluginAPI;
class DeviceAPI;
class AudioFifo; class AudioFifo;
class ThreadedSampleSink; class ThreadedSampleSink;
@ -22,7 +23,7 @@ class SSBDemodGUI : public RollupWidget, public PluginGUI {
Q_OBJECT Q_OBJECT
public: public:
static SSBDemodGUI* create(PluginAPI* pluginAPI); static SSBDemodGUI* create(PluginAPI* pluginAPI, DeviceAPI *deviceAPI);
void destroy(); void destroy();
void setName(const QString& name); void setName(const QString& name);
@ -55,6 +56,7 @@ private slots:
private: private:
Ui::SSBDemodGUI* ui; Ui::SSBDemodGUI* ui;
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
DeviceAPI* m_deviceAPI;
ChannelMarker m_channelMarker; ChannelMarker m_channelMarker;
bool m_basicSettingsShown; bool m_basicSettingsShown;
bool m_doApplySettings; bool m_doApplySettings;
@ -71,12 +73,12 @@ private:
SSBDemod* m_ssbDemod; SSBDemod* m_ssbDemod;
SpectrumVis* m_spectrumVis; SpectrumVis* m_spectrumVis;
explicit SSBDemodGUI(PluginAPI* pluginAPI, QWidget* parent = NULL); explicit SSBDemodGUI(PluginAPI* pluginAPI, DeviceAPI* deviceAPI, QWidget* parent = NULL);
virtual ~SSBDemodGUI(); virtual ~SSBDemodGUI();
int getEffectiveLowCutoff(int lowCutoff); int getEffectiveLowCutoff(int lowCutoff);
bool setNewRate(int spanLog2); bool setNewRate(int spanLog2);
void blockApplySettings(bool block); void blockApplySettings(bool block);
void applySettings(); void applySettings();

View File

@ -1,5 +1,6 @@
#include <QtPlugin> #include <QtPlugin>
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "ssbplugin.h" #include "ssbplugin.h"
#include "ssbdemodgui.h" #include "ssbdemodgui.h"
@ -30,21 +31,21 @@ void SSBPlugin::initPlugin(PluginAPI* pluginAPI)
m_pluginAPI->registerChannel("de.maintech.sdrangelove.channel.ssb", this); m_pluginAPI->registerChannel("de.maintech.sdrangelove.channel.ssb", this);
} }
PluginGUI* SSBPlugin::createChannel(const QString& channelName) PluginGUI* SSBPlugin::createChannel(const QString& channelName, DeviceAPI *deviceAPI)
{ {
if(channelName == "de.maintech.sdrangelove.channel.ssb") { if(channelName == "de.maintech.sdrangelove.channel.ssb") {
SSBDemodGUI* gui = SSBDemodGUI::create(m_pluginAPI); SSBDemodGUI* gui = SSBDemodGUI::create(m_pluginAPI, deviceAPI);
m_pluginAPI->registerChannelInstance("de.maintech.sdrangelove.channel.ssb", gui); m_pluginAPI->registerChannelInstance("de.maintech.sdrangelove.channel.ssb", gui);
m_pluginAPI->addChannelRollup(gui); // m_pluginAPI->addChannelRollup(gui);
return gui; return gui;
} else { } else {
return NULL; return NULL;
} }
} }
void SSBPlugin::createInstanceSSB() void SSBPlugin::createInstanceSSB(DeviceAPI *deviceAPI)
{ {
SSBDemodGUI* gui = SSBDemodGUI::create(m_pluginAPI); SSBDemodGUI* gui = SSBDemodGUI::create(m_pluginAPI, deviceAPI);
m_pluginAPI->registerChannelInstance("de.maintech.sdrangelove.channel.ssb", gui); m_pluginAPI->registerChannelInstance("de.maintech.sdrangelove.channel.ssb", gui);
m_pluginAPI->addChannelRollup(gui); // m_pluginAPI->addChannelRollup(gui);
} }

View File

@ -4,6 +4,8 @@
#include <QObject> #include <QObject>
#include "plugin/plugininterface.h" #include "plugin/plugininterface.h"
class DeviceAPI;
class SSBPlugin : public QObject, PluginInterface { class SSBPlugin : public QObject, PluginInterface {
Q_OBJECT Q_OBJECT
Q_INTERFACES(PluginInterface) Q_INTERFACES(PluginInterface)
@ -15,7 +17,7 @@ public:
const PluginDescriptor& getPluginDescriptor() const; const PluginDescriptor& getPluginDescriptor() const;
void initPlugin(PluginAPI* pluginAPI); void initPlugin(PluginAPI* pluginAPI);
PluginGUI* createChannel(const QString& channelName); PluginGUI* createChannel(const QString& channelName, DeviceAPI *deviceAPI);
private: private:
static const PluginDescriptor m_pluginDescriptor; static const PluginDescriptor m_pluginDescriptor;
@ -23,7 +25,7 @@ private:
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
private slots: private slots:
void createInstanceSSB(); void createInstanceSSB(DeviceAPI *deviceAPI);
}; };
#endif // INCLUDE_SSBPLUGIN_H #endif // INCLUDE_SSBPLUGIN_H

View File

@ -6,6 +6,7 @@
#include "dsp/channelizer.h" #include "dsp/channelizer.h"
#include "dsp/dspengine.h" #include "dsp/dspengine.h"
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "util/simpleserializer.h" #include "util/simpleserializer.h"
#include "util/db.h" #include "util/db.h"
#include "gui/basicchannelsettingswidget.h" #include "gui/basicchannelsettingswidget.h"
@ -28,9 +29,9 @@ int requiredBW(int rfBW)
return 384000; return 384000;
} }
WFMDemodGUI* WFMDemodGUI::create(PluginAPI* pluginAPI) WFMDemodGUI* WFMDemodGUI::create(PluginAPI* pluginAPI, DeviceAPI *deviceAPI)
{ {
WFMDemodGUI* gui = new WFMDemodGUI(pluginAPI); WFMDemodGUI* gui = new WFMDemodGUI(pluginAPI, deviceAPI);
return gui; return gui;
} }
@ -213,10 +214,11 @@ void WFMDemodGUI::onMenuDoubleClicked()
} }
} }
WFMDemodGUI::WFMDemodGUI(PluginAPI* pluginAPI, QWidget* parent) : WFMDemodGUI::WFMDemodGUI(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) :
RollupWidget(parent), RollupWidget(parent),
ui(new Ui::WFMDemodGUI), ui(new Ui::WFMDemodGUI),
m_pluginAPI(pluginAPI), m_pluginAPI(pluginAPI),
m_deviceAPI(deviceAPI),
m_channelMarker(this), m_channelMarker(this),
m_basicSettingsShown(false), m_basicSettingsShown(false),
m_channelPowerDbAvg(20,0) m_channelPowerDbAvg(20,0)
@ -232,7 +234,7 @@ WFMDemodGUI::WFMDemodGUI(PluginAPI* pluginAPI, QWidget* parent) :
m_wfmDemod = new WFMDemod(0); m_wfmDemod = new WFMDemod(0);
m_channelizer = new Channelizer(m_wfmDemod); m_channelizer = new Channelizer(m_wfmDemod);
m_threadedChannelizer = new ThreadedSampleSink(m_channelizer, this); m_threadedChannelizer = new ThreadedSampleSink(m_channelizer, this);
m_pluginAPI->addThreadedSink(m_threadedChannelizer); m_deviceAPI->addThreadedSink(m_threadedChannelizer);
connect(&m_pluginAPI->getMainWindow()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); connect(&m_pluginAPI->getMainWindow()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick()));
@ -242,7 +244,8 @@ WFMDemodGUI::WFMDemodGUI(PluginAPI* pluginAPI, QWidget* parent) :
m_channelMarker.setCenterFrequency(0); m_channelMarker.setCenterFrequency(0);
m_channelMarker.setVisible(true); m_channelMarker.setVisible(true);
connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(viewChanged())); connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(viewChanged()));
m_pluginAPI->addChannelMarker(&m_channelMarker); m_deviceAPI->addChannelMarker(&m_channelMarker);
m_deviceAPI->addRollupWidget(this);
applySettings(); applySettings();
} }
@ -250,7 +253,7 @@ WFMDemodGUI::WFMDemodGUI(PluginAPI* pluginAPI, QWidget* parent) :
WFMDemodGUI::~WFMDemodGUI() WFMDemodGUI::~WFMDemodGUI()
{ {
m_pluginAPI->removeChannelInstance(this); m_pluginAPI->removeChannelInstance(this);
m_pluginAPI->removeThreadedSink(m_threadedChannelizer); m_deviceAPI->removeThreadedSink(m_threadedChannelizer);
delete m_threadedChannelizer; delete m_threadedChannelizer;
delete m_channelizer; delete m_channelizer;
delete m_wfmDemod; delete m_wfmDemod;

View File

@ -7,6 +7,7 @@
#include "dsp/movingaverage.h" #include "dsp/movingaverage.h"
class PluginAPI; class PluginAPI;
class DeviceAPI;
class ThreadedSampleSink; class ThreadedSampleSink;
class Channelizer; class Channelizer;
@ -20,7 +21,7 @@ class WFMDemodGUI : public RollupWidget, public PluginGUI {
Q_OBJECT Q_OBJECT
public: public:
static WFMDemodGUI* create(PluginAPI* pluginAPI); static WFMDemodGUI* create(PluginAPI* pluginAPI, DeviceAPI *deviceAPI);
void destroy(); void destroy();
void setName(const QString& name); void setName(const QString& name);
@ -49,6 +50,7 @@ private slots:
private: private:
Ui::WFMDemodGUI* ui; Ui::WFMDemodGUI* ui;
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
DeviceAPI* m_deviceAPI;
ChannelMarker m_channelMarker; ChannelMarker m_channelMarker;
bool m_basicSettingsShown; bool m_basicSettingsShown;
bool m_doApplySettings; bool m_doApplySettings;
@ -60,7 +62,7 @@ private:
static const int m_rfBW[]; static const int m_rfBW[];
explicit WFMDemodGUI(PluginAPI* pluginAPI, QWidget* parent = NULL); explicit WFMDemodGUI(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL);
virtual ~WFMDemodGUI(); virtual ~WFMDemodGUI();
void blockApplySettings(bool block); void blockApplySettings(bool block);

View File

@ -31,21 +31,21 @@ void WFMPlugin::initPlugin(PluginAPI* pluginAPI)
m_pluginAPI->registerChannel("de.maintech.sdrangelove.channel.wfm", this); m_pluginAPI->registerChannel("de.maintech.sdrangelove.channel.wfm", this);
} }
PluginGUI* WFMPlugin::createChannel(const QString& channelName) PluginGUI* WFMPlugin::createChannel(const QString& channelName, DeviceAPI *deviceAPI)
{ {
if(channelName == "de.maintech.sdrangelove.channel.wfm") { if(channelName == "de.maintech.sdrangelove.channel.wfm") {
WFMDemodGUI* gui = WFMDemodGUI::create(m_pluginAPI); WFMDemodGUI* gui = WFMDemodGUI::create(m_pluginAPI, deviceAPI);
m_pluginAPI->registerChannelInstance("de.maintech.sdrangelove.channel.wfm", gui); m_pluginAPI->registerChannelInstance("de.maintech.sdrangelove.channel.wfm", gui);
m_pluginAPI->addChannelRollup(gui); // m_pluginAPI->addChannelRollup(gui);
return gui; return gui;
} else { } else {
return NULL; return NULL;
} }
} }
void WFMPlugin::createInstanceWFM() void WFMPlugin::createInstanceWFM(DeviceAPI *deviceAPI)
{ {
WFMDemodGUI* gui = WFMDemodGUI::create(m_pluginAPI); WFMDemodGUI* gui = WFMDemodGUI::create(m_pluginAPI, deviceAPI);
m_pluginAPI->registerChannelInstance("de.maintech.sdrangelove.channel.wfm", gui); m_pluginAPI->registerChannelInstance("de.maintech.sdrangelove.channel.wfm", gui);
m_pluginAPI->addChannelRollup(gui); // m_pluginAPI->addChannelRollup(gui);
} }

View File

@ -4,6 +4,8 @@
#include <QObject> #include <QObject>
#include "plugin/plugininterface.h" #include "plugin/plugininterface.h"
class DeviceAPI;
class WFMPlugin : public QObject, PluginInterface { class WFMPlugin : public QObject, PluginInterface {
Q_OBJECT Q_OBJECT
Q_INTERFACES(PluginInterface) Q_INTERFACES(PluginInterface)
@ -15,7 +17,7 @@ public:
const PluginDescriptor& getPluginDescriptor() const; const PluginDescriptor& getPluginDescriptor() const;
void initPlugin(PluginAPI* pluginAPI); void initPlugin(PluginAPI* pluginAPI);
PluginGUI* createChannel(const QString& channelName); PluginGUI* createChannel(const QString& channelName, DeviceAPI *deviceAPI);
private: private:
static const PluginDescriptor m_pluginDescriptor; static const PluginDescriptor m_pluginDescriptor;
@ -23,7 +25,7 @@ private:
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
private slots: private slots:
void createInstanceWFM(); void createInstanceWFM(DeviceAPI *deviceAPI);
}; };
#endif // INCLUDE_WFMPLUGIN_H #endif // INCLUDE_WFMPLUGIN_H

View File

@ -1,5 +1,6 @@
#include "tcpsrcgui.h" #include "tcpsrcgui.h"
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "tcpsrc.h" #include "tcpsrc.h"
#include "dsp/threadedsamplesink.h" #include "dsp/threadedsamplesink.h"
#include "dsp/channelizer.h" #include "dsp/channelizer.h"
@ -11,9 +12,9 @@
#include "ui_tcpsrcgui.h" #include "ui_tcpsrcgui.h"
#include "mainwindow.h" #include "mainwindow.h"
TCPSrcGUI* TCPSrcGUI::create(PluginAPI* pluginAPI) TCPSrcGUI* TCPSrcGUI::create(PluginAPI* pluginAPI, DeviceAPI *deviceAPI)
{ {
TCPSrcGUI* gui = new TCPSrcGUI(pluginAPI); TCPSrcGUI* gui = new TCPSrcGUI(pluginAPI, deviceAPI);
return gui; return gui;
} }
@ -179,10 +180,11 @@ void TCPSrcGUI::tick()
ui->channelPower->setText(QString::number(m_channelPowerDbAvg.average(), 'f', 1)); ui->channelPower->setText(QString::number(m_channelPowerDbAvg.average(), 'f', 1));
} }
TCPSrcGUI::TCPSrcGUI(PluginAPI* pluginAPI, QWidget* parent) : TCPSrcGUI::TCPSrcGUI(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) :
RollupWidget(parent), RollupWidget(parent),
ui(new Ui::TCPSrcGUI), ui(new Ui::TCPSrcGUI),
m_pluginAPI(pluginAPI), m_pluginAPI(pluginAPI),
m_deviceAPI(deviceAPI),
m_tcpSrc(0), m_tcpSrc(0),
m_channelMarker(this), m_channelMarker(this),
m_channelPowerDbAvg(40,0), m_channelPowerDbAvg(40,0),
@ -199,7 +201,7 @@ TCPSrcGUI::TCPSrcGUI(PluginAPI* pluginAPI, QWidget* parent) :
m_tcpSrc = new TCPSrc(m_pluginAPI->getMainWindowMessageQueue(), this, m_spectrumVis); m_tcpSrc = new TCPSrc(m_pluginAPI->getMainWindowMessageQueue(), this, m_spectrumVis);
m_channelizer = new Channelizer(m_tcpSrc); m_channelizer = new Channelizer(m_tcpSrc);
m_threadedChannelizer = new ThreadedSampleSink(m_channelizer, this); m_threadedChannelizer = new ThreadedSampleSink(m_channelizer, this);
m_pluginAPI->addThreadedSink(m_threadedChannelizer); m_deviceAPI->addThreadedSink(m_threadedChannelizer);
ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::ReverseGold)); ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::ReverseGold));
ui->deltaFrequency->setValueRange(7, 0U, 9999999U); ui->deltaFrequency->setValueRange(7, 0U, 9999999U);
@ -219,7 +221,8 @@ TCPSrcGUI::TCPSrcGUI(PluginAPI* pluginAPI, QWidget* parent) :
m_channelMarker.setColor(Qt::green); m_channelMarker.setColor(Qt::green);
m_channelMarker.setVisible(true); m_channelMarker.setVisible(true);
connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(channelMarkerChanged())); connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(channelMarkerChanged()));
m_pluginAPI->addChannelMarker(&m_channelMarker); m_deviceAPI->addChannelMarker(&m_channelMarker);
m_deviceAPI->addRollupWidget(this);
ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum); ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum);
@ -229,7 +232,7 @@ TCPSrcGUI::TCPSrcGUI(PluginAPI* pluginAPI, QWidget* parent) :
TCPSrcGUI::~TCPSrcGUI() TCPSrcGUI::~TCPSrcGUI()
{ {
m_pluginAPI->removeChannelInstance(this); m_pluginAPI->removeChannelInstance(this);
m_pluginAPI->removeThreadedSink(m_threadedChannelizer); m_deviceAPI->removeThreadedSink(m_threadedChannelizer);
delete m_threadedChannelizer; delete m_threadedChannelizer;
delete m_channelizer; delete m_channelizer;
delete m_tcpSrc; delete m_tcpSrc;

View File

@ -9,6 +9,7 @@
#include "tcpsrc.h" #include "tcpsrc.h"
class PluginAPI; class PluginAPI;
class DeviceAPI;
class ThreadedSampleSink; class ThreadedSampleSink;
class Channelizer; class Channelizer;
class TCPSrc; class TCPSrc;
@ -22,7 +23,7 @@ class TCPSrcGUI : public RollupWidget, public PluginGUI {
Q_OBJECT Q_OBJECT
public: public:
static TCPSrcGUI* create(PluginAPI* pluginAPI); static TCPSrcGUI* create(PluginAPI* pluginAPI, DeviceAPI *deviceAPI);
void destroy(); void destroy();
void setName(const QString& name); void setName(const QString& name);
@ -53,6 +54,7 @@ private slots:
private: private:
Ui::TCPSrcGUI* ui; Ui::TCPSrcGUI* ui;
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
DeviceAPI* m_deviceAPI;
TCPSrc* m_tcpSrc; TCPSrc* m_tcpSrc;
ChannelMarker m_channelMarker; ChannelMarker m_channelMarker;
MovingAverage<Real> m_channelPowerDbAvg; MovingAverage<Real> m_channelPowerDbAvg;
@ -71,7 +73,7 @@ private:
Channelizer* m_channelizer; Channelizer* m_channelizer;
SpectrumVis* m_spectrumVis; SpectrumVis* m_spectrumVis;
explicit TCPSrcGUI(PluginAPI* pluginAPI, QWidget* parent = 0); explicit TCPSrcGUI(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = 0);
virtual ~TCPSrcGUI(); virtual ~TCPSrcGUI();
void blockApplySettings(bool block); void blockApplySettings(bool block);

View File

@ -30,21 +30,21 @@ void TCPSrcPlugin::initPlugin(PluginAPI* pluginAPI)
m_pluginAPI->registerChannel("sdrangel.channel.tcpsrc", this); m_pluginAPI->registerChannel("sdrangel.channel.tcpsrc", this);
} }
PluginGUI* TCPSrcPlugin::createChannel(const QString& channelName) PluginGUI* TCPSrcPlugin::createChannel(const QString& channelName, DeviceAPI *deviceAPI)
{ {
if(channelName == "sdrangel.channel.tcpsrc") { if(channelName == "sdrangel.channel.tcpsrc") {
TCPSrcGUI* gui = TCPSrcGUI::create(m_pluginAPI); TCPSrcGUI* gui = TCPSrcGUI::create(m_pluginAPI, deviceAPI);
m_pluginAPI->registerChannelInstance("sdrangel.channel.tcpsrc", gui); m_pluginAPI->registerChannelInstance("sdrangel.channel.tcpsrc", gui);
m_pluginAPI->addChannelRollup(gui); // m_pluginAPI->addChannelRollup(gui);
return gui; return gui;
} else { } else {
return NULL; return NULL;
} }
} }
void TCPSrcPlugin::createInstanceTCPSrc() void TCPSrcPlugin::createInstanceTCPSrc(DeviceAPI *deviceAPI)
{ {
TCPSrcGUI* gui = TCPSrcGUI::create(m_pluginAPI); TCPSrcGUI* gui = TCPSrcGUI::create(m_pluginAPI, deviceAPI);
m_pluginAPI->registerChannelInstance("sdrangel.channel.tcpsrc", gui); m_pluginAPI->registerChannelInstance("sdrangel.channel.tcpsrc", gui);
m_pluginAPI->addChannelRollup(gui); // m_pluginAPI->addChannelRollup(gui);
} }

View File

@ -4,6 +4,8 @@
#include <QObject> #include <QObject>
#include "plugin/plugininterface.h" #include "plugin/plugininterface.h"
class DeviceAPI;
class TCPSrcPlugin : public QObject, PluginInterface { class TCPSrcPlugin : public QObject, PluginInterface {
Q_OBJECT Q_OBJECT
Q_INTERFACES(PluginInterface) Q_INTERFACES(PluginInterface)
@ -15,7 +17,7 @@ public:
const PluginDescriptor& getPluginDescriptor() const; const PluginDescriptor& getPluginDescriptor() const;
void initPlugin(PluginAPI* pluginAPI); void initPlugin(PluginAPI* pluginAPI);
PluginGUI* createChannel(const QString& channelName); PluginGUI* createChannel(const QString& channelName, DeviceAPI *deviceAPI);
private: private:
static const PluginDescriptor m_pluginDescriptor; static const PluginDescriptor m_pluginDescriptor;
@ -23,7 +25,7 @@ private:
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
private slots: private slots:
void createInstanceTCPSrc(); void createInstanceTCPSrc(DeviceAPI *deviceAPI);
}; };
#endif // INCLUDE_TCPSRCPLUGIN_H #endif // INCLUDE_TCPSRCPLUGIN_H

View File

@ -18,6 +18,7 @@
#include "udpsrcgui.h" #include "udpsrcgui.h"
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "dsp/threadedsamplesink.h" #include "dsp/threadedsamplesink.h"
#include "dsp/channelizer.h" #include "dsp/channelizer.h"
#include "dsp/spectrumvis.h" #include "dsp/spectrumvis.h"
@ -29,9 +30,9 @@
#include "mainwindow.h" #include "mainwindow.h"
#include "udpsrc.h" #include "udpsrc.h"
UDPSrcGUI* UDPSrcGUI::create(PluginAPI* pluginAPI) UDPSrcGUI* UDPSrcGUI::create(PluginAPI* pluginAPI, DeviceAPI *deviceAPI)
{ {
UDPSrcGUI* gui = new UDPSrcGUI(pluginAPI); UDPSrcGUI* gui = new UDPSrcGUI(pluginAPI, deviceAPI);
return gui; return gui;
} }
@ -216,10 +217,11 @@ void UDPSrcGUI::tick()
ui->channelPower->setText(QString::number(m_channelPowerDbAvg.average(), 'f', 1)); ui->channelPower->setText(QString::number(m_channelPowerDbAvg.average(), 'f', 1));
} }
UDPSrcGUI::UDPSrcGUI(PluginAPI* pluginAPI, QWidget* parent) : UDPSrcGUI::UDPSrcGUI(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) :
RollupWidget(parent), RollupWidget(parent),
ui(new Ui::UDPSrcGUI), ui(new Ui::UDPSrcGUI),
m_pluginAPI(pluginAPI), m_pluginAPI(pluginAPI),
m_deviceAPI(deviceAPI),
m_udpSrc(0), m_udpSrc(0),
m_channelMarker(this), m_channelMarker(this),
m_channelPowerDbAvg(40,0), m_channelPowerDbAvg(40,0),
@ -237,7 +239,7 @@ UDPSrcGUI::UDPSrcGUI(PluginAPI* pluginAPI, QWidget* parent) :
m_udpSrc = new UDPSrc(m_pluginAPI->getMainWindowMessageQueue(), this, m_spectrumVis); m_udpSrc = new UDPSrc(m_pluginAPI->getMainWindowMessageQueue(), this, m_spectrumVis);
m_channelizer = new Channelizer(m_udpSrc); m_channelizer = new Channelizer(m_udpSrc);
m_threadedChannelizer = new ThreadedSampleSink(m_channelizer, this); m_threadedChannelizer = new ThreadedSampleSink(m_channelizer, this);
m_pluginAPI->addThreadedSink(m_threadedChannelizer); m_deviceAPI->addThreadedSink(m_threadedChannelizer);
ui->fmDeviation->setEnabled(false); ui->fmDeviation->setEnabled(false);
@ -259,7 +261,8 @@ UDPSrcGUI::UDPSrcGUI(PluginAPI* pluginAPI, QWidget* parent) :
m_channelMarker.setColor(Qt::green); m_channelMarker.setColor(Qt::green);
m_channelMarker.setVisible(true); m_channelMarker.setVisible(true);
connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(channelMarkerChanged())); connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(channelMarkerChanged()));
m_pluginAPI->addChannelMarker(&m_channelMarker); m_deviceAPI->addChannelMarker(&m_channelMarker);
m_deviceAPI->addRollupWidget(this);
ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum); ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum);
@ -270,7 +273,7 @@ UDPSrcGUI::UDPSrcGUI(PluginAPI* pluginAPI, QWidget* parent) :
UDPSrcGUI::~UDPSrcGUI() UDPSrcGUI::~UDPSrcGUI()
{ {
m_pluginAPI->removeChannelInstance(this); m_pluginAPI->removeChannelInstance(this);
m_pluginAPI->removeThreadedSink(m_threadedChannelizer); m_deviceAPI->removeThreadedSink(m_threadedChannelizer);
delete m_threadedChannelizer; delete m_threadedChannelizer;
delete m_channelizer; delete m_channelizer;
delete m_udpSrc; delete m_udpSrc;

View File

@ -27,6 +27,7 @@
#include "udpsrc.h" #include "udpsrc.h"
class PluginAPI; class PluginAPI;
class DeviceAPI;
class ThreadedSampleSink; class ThreadedSampleSink;
class Channelizer; class Channelizer;
class UDPSrc; class UDPSrc;
@ -40,7 +41,7 @@ class UDPSrcGUI : public RollupWidget, public PluginGUI {
Q_OBJECT Q_OBJECT
public: public:
static UDPSrcGUI* create(PluginAPI* pluginAPI); static UDPSrcGUI* create(PluginAPI* pluginAPI, DeviceAPI *deviceAPI);
void destroy(); void destroy();
void setName(const QString& name); void setName(const QString& name);
@ -77,6 +78,7 @@ private slots:
private: private:
Ui::UDPSrcGUI* ui; Ui::UDPSrcGUI* ui;
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
DeviceAPI* m_deviceAPI;
UDPSrc* m_udpSrc; UDPSrc* m_udpSrc;
ChannelMarker m_channelMarker; ChannelMarker m_channelMarker;
MovingAverage<Real> m_channelPowerDbAvg; MovingAverage<Real> m_channelPowerDbAvg;
@ -101,7 +103,7 @@ private:
Channelizer* m_channelizer; Channelizer* m_channelizer;
SpectrumVis* m_spectrumVis; SpectrumVis* m_spectrumVis;
explicit UDPSrcGUI(PluginAPI* pluginAPI, QWidget* parent = 0); explicit UDPSrcGUI(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = 0);
virtual ~UDPSrcGUI(); virtual ~UDPSrcGUI();
void blockApplySettings(bool block); void blockApplySettings(bool block);

View File

@ -49,21 +49,21 @@ void UDPSrcPlugin::initPlugin(PluginAPI* pluginAPI)
m_pluginAPI->registerChannel("sdrangel.channel.udpsrc", this); m_pluginAPI->registerChannel("sdrangel.channel.udpsrc", this);
} }
PluginGUI* UDPSrcPlugin::createChannel(const QString& channelName) PluginGUI* UDPSrcPlugin::createChannel(const QString& channelName, DeviceAPI *deviceAPI)
{ {
if(channelName == "sdrangel.channel.udpsrc") { if(channelName == "sdrangel.channel.udpsrc") {
UDPSrcGUI* gui = UDPSrcGUI::create(m_pluginAPI); UDPSrcGUI* gui = UDPSrcGUI::create(m_pluginAPI, deviceAPI);
m_pluginAPI->registerChannelInstance("sdrangel.channel.udpsrc", gui); m_pluginAPI->registerChannelInstance("sdrangel.channel.udpsrc", gui);
m_pluginAPI->addChannelRollup(gui); // m_pluginAPI->addChannelRollup(gui);
return gui; return gui;
} else { } else {
return 0; return 0;
} }
} }
void UDPSrcPlugin::createInstanceUDPSrc() void UDPSrcPlugin::createInstanceUDPSrc(DeviceAPI *deviceAPI)
{ {
UDPSrcGUI* gui = UDPSrcGUI::create(m_pluginAPI); UDPSrcGUI* gui = UDPSrcGUI::create(m_pluginAPI, deviceAPI);
m_pluginAPI->registerChannelInstance("sdrangel.channel.udpsrc", gui); m_pluginAPI->registerChannelInstance("sdrangel.channel.udpsrc", gui);
m_pluginAPI->addChannelRollup(gui); // m_pluginAPI->addChannelRollup(gui);
} }

View File

@ -21,6 +21,8 @@
#include <QObject> #include <QObject>
#include "plugin/plugininterface.h" #include "plugin/plugininterface.h"
class DeviceAPI;
class UDPSrcPlugin : public QObject, PluginInterface { class UDPSrcPlugin : public QObject, PluginInterface {
Q_OBJECT Q_OBJECT
Q_INTERFACES(PluginInterface) Q_INTERFACES(PluginInterface)
@ -32,7 +34,7 @@ public:
const PluginDescriptor& getPluginDescriptor() const; const PluginDescriptor& getPluginDescriptor() const;
void initPlugin(PluginAPI* pluginAPI); void initPlugin(PluginAPI* pluginAPI);
PluginGUI* createChannel(const QString& channelName); PluginGUI* createChannel(const QString& channelName, DeviceAPI *deviceAPI);
private: private:
static const PluginDescriptor m_pluginDescriptor; static const PluginDescriptor m_pluginDescriptor;
@ -40,7 +42,7 @@ private:
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
private slots: private slots:
void createInstanceUDPSrc(); void createInstanceUDPSrc(DeviceAPI *deviceAPI);
}; };
#endif // INCLUDE_UDPSRCPLUGIN_H #endif // INCLUDE_UDPSRCPLUGIN_H