From 7053d3775c2dd9f31533ffb1626c5e84d2857ec8 Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 13 May 2016 00:50:29 +0200 Subject: [PATCH] Multi device support: completely removed direct access to DSP device engine from DSP engine --- plugins/samplesource/airspy/airspygui.cpp | 2 +- plugins/samplesource/bladerf/bladerfgui.cpp | 2 +- plugins/samplesource/fcdpro/fcdprogui.cpp | 2 +- .../samplesource/fcdproplus/fcdproplusgui.cpp | 2 +- .../samplesource/filesource/filesourcegui.cpp | 2 +- plugins/samplesource/hackrf/hackrfgui.cpp | 2 +- plugins/samplesource/rtlsdr/rtlsdrgui.cpp | 2 +- .../samplesource/sdrdaemon/sdrdaemongui.cpp | 2 +- sdrbase/dsp/dspengine.cpp | 24 ------------------- sdrbase/dsp/dspengine.h | 6 ----- sdrbase/gui/glscope.cpp | 18 -------------- sdrbase/gui/glscope.h | 7 +----- sdrbase/plugin/pluginapi.cpp | 5 ++++ sdrbase/plugin/pluginapi.h | 1 + sdrbase/plugin/pluginmanager.h | 1 + 15 files changed, 16 insertions(+), 62 deletions(-) diff --git a/plugins/samplesource/airspy/airspygui.cpp b/plugins/samplesource/airspy/airspygui.cpp index ad55b1345..3caebf324 100644 --- a/plugins/samplesource/airspy/airspygui.cpp +++ b/plugins/samplesource/airspy/airspygui.cpp @@ -50,7 +50,7 @@ AirspyGui::AirspyGui(PluginAPI* pluginAPI, QWidget* parent) : m_rates = ((AirspyInput*) m_sampleSource)->getSampleRates(); displaySampleRates(); connect(m_sampleSource->getOutputMessageQueueToGUI(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages())); - DSPEngine::instance()->setSource(m_sampleSource); + m_pluginAPI->setSource(m_sampleSource); char recFileNameCStr[30]; sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); diff --git a/plugins/samplesource/bladerf/bladerfgui.cpp b/plugins/samplesource/bladerf/bladerfgui.cpp index 879cc7c23..a582ede07 100644 --- a/plugins/samplesource/bladerf/bladerfgui.cpp +++ b/plugins/samplesource/bladerf/bladerfgui.cpp @@ -60,7 +60,7 @@ BladerfGui::BladerfGui(PluginAPI* pluginAPI, QWidget* parent) : displaySettings(); m_sampleSource = new BladerfInput(m_pluginAPI); - DSPEngine::instance()->setSource(m_sampleSource); + m_pluginAPI->setSource(m_sampleSource); char recFileNameCStr[30]; sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); diff --git a/plugins/samplesource/fcdpro/fcdprogui.cpp b/plugins/samplesource/fcdpro/fcdprogui.cpp index c9561f069..76c6912a6 100644 --- a/plugins/samplesource/fcdpro/fcdprogui.cpp +++ b/plugins/samplesource/fcdpro/fcdprogui.cpp @@ -141,7 +141,7 @@ FCDProGui::FCDProGui(PluginAPI* pluginAPI, QWidget* parent) : displaySettings(); m_sampleSource = new FCDProInput(m_pluginAPI); - DSPEngine::instance()->setSource(m_sampleSource); + m_pluginAPI->setSource(m_sampleSource); char recFileNameCStr[30]; sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); diff --git a/plugins/samplesource/fcdproplus/fcdproplusgui.cpp b/plugins/samplesource/fcdproplus/fcdproplusgui.cpp index c20cabcfb..0b9b55702 100644 --- a/plugins/samplesource/fcdproplus/fcdproplusgui.cpp +++ b/plugins/samplesource/fcdproplus/fcdproplusgui.cpp @@ -59,7 +59,7 @@ FCDProPlusGui::FCDProPlusGui(PluginAPI* pluginAPI, QWidget* parent) : displaySettings(); m_sampleSource = new FCDProPlusInput(m_pluginAPI); - DSPEngine::instance()->setSource(m_sampleSource); + m_pluginAPI->setSource(m_sampleSource); char recFileNameCStr[30]; sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); diff --git a/plugins/samplesource/filesource/filesourcegui.cpp b/plugins/samplesource/filesource/filesourcegui.cpp index 2a6cb267e..ac49efd57 100644 --- a/plugins/samplesource/filesource/filesourcegui.cpp +++ b/plugins/samplesource/filesource/filesourcegui.cpp @@ -67,7 +67,7 @@ FileSourceGui::FileSourceGui(PluginAPI* pluginAPI, QWidget* parent) : m_sampleSource = new FileSourceInput(m_pluginAPI->getMainWindow()->getMasterTimer()); connect(m_sampleSource->getOutputMessageQueueToGUI(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages())); - DSPEngine::instance()->setSource(m_sampleSource); + m_pluginAPI->setSource(m_sampleSource); connect(m_pluginAPI->getDeviceOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); } diff --git a/plugins/samplesource/hackrf/hackrfgui.cpp b/plugins/samplesource/hackrf/hackrfgui.cpp index cd1624db4..4b42a3a12 100644 --- a/plugins/samplesource/hackrf/hackrfgui.cpp +++ b/plugins/samplesource/hackrf/hackrfgui.cpp @@ -51,7 +51,7 @@ HackRFGui::HackRFGui(PluginAPI* pluginAPI, QWidget* parent) : displaySampleRates(); displayBandwidths(); - DSPEngine::instance()->setSource(m_sampleSource); + m_pluginAPI->setSource(m_sampleSource); char recFileNameCStr[30]; sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); diff --git a/plugins/samplesource/rtlsdr/rtlsdrgui.cpp b/plugins/samplesource/rtlsdr/rtlsdrgui.cpp index 9a5750b22..f4e9ceb2d 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrgui.cpp +++ b/plugins/samplesource/rtlsdr/rtlsdrgui.cpp @@ -53,7 +53,7 @@ RTLSDRGui::RTLSDRGui(PluginAPI* pluginAPI, QWidget* parent) : m_sampleSource = new RTLSDRInput(m_pluginAPI); connect(m_sampleSource->getOutputMessageQueueToGUI(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages())); - DSPEngine::instance()->setSource(m_sampleSource); + m_pluginAPI->setSource(m_sampleSource); char recFileNameCStr[30]; sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); diff --git a/plugins/samplesource/sdrdaemon/sdrdaemongui.cpp b/plugins/samplesource/sdrdaemon/sdrdaemongui.cpp index 7c96e84f8..69f3a43d6 100644 --- a/plugins/samplesource/sdrdaemon/sdrdaemongui.cpp +++ b/plugins/samplesource/sdrdaemon/sdrdaemongui.cpp @@ -90,7 +90,7 @@ SDRdaemonGui::SDRdaemonGui(PluginAPI* pluginAPI, QWidget* parent) : m_sampleSource = new SDRdaemonInput(m_pluginAPI->getMainWindow()->getMasterTimer(), m_pluginAPI); connect(m_sampleSource->getOutputMessageQueueToGUI(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages())); - DSPEngine::instance()->setSource(m_sampleSource); + m_pluginAPI->setSource(m_sampleSource); displaySettings(); ui->applyButton->setEnabled(false); diff --git a/sdrbase/dsp/dspengine.cpp b/sdrbase/dsp/dspengine.cpp index ad8a55c13..2745912ff 100644 --- a/sdrbase/dsp/dspengine.cpp +++ b/sdrbase/dsp/dspengine.cpp @@ -91,30 +91,6 @@ void DSPEngine::stopAudio() } } -void DSPEngine::setSource(SampleSource* source, uint deviceIndex) -{ - qDebug("DSPEngine::setSource(%d)", deviceIndex); - m_deviceEngines[deviceIndex]->setSource(source); -} - -void DSPEngine::setSourceSequence(int sequence, uint deviceIndex) -{ - qDebug("DSPEngine::setSource(%d)", deviceIndex); - m_deviceEngines[deviceIndex]->setSourceSequence(sequence); -} - -void DSPEngine::addSink(SampleSink* sink, uint deviceIndex) -{ - qDebug("DSPEngine::setSource(%d)", deviceIndex); - m_deviceEngines[deviceIndex]->addSink(sink); -} - -void DSPEngine::removeSink(SampleSink* sink, uint deviceIndex) -{ - qDebug("DSPEngine::removeSink(%d)", deviceIndex); - m_deviceEngines[deviceIndex]->removeSink(sink); -} - void DSPEngine::addAudioSink(AudioFifo* audioFifo) { qDebug("DSPEngine::addAudioSink"); diff --git a/sdrbase/dsp/dspengine.h b/sdrbase/dsp/dspengine.h index 48296943a..af92abb95 100644 --- a/sdrbase/dsp/dspengine.h +++ b/sdrbase/dsp/dspengine.h @@ -46,12 +46,6 @@ public: void startAudio(); void stopAudio(); - void setSource(SampleSource* source, uint deviceIndex = 0); //!< Set the sample source type - void setSourceSequence(int sequence, uint deviceIndex = 0); //!< Set the sample source sequence in type - - void addSink(SampleSink* sink, uint deviceIndex = 0); //!< Add a sample sink - void removeSink(SampleSink* sink, uint deviceIndex = 0); //!< Remove a sample sink - DSPDeviceEngine *getDeviceEngineByIndex(uint deviceIndex) { return m_deviceEngines[deviceIndex]; } DSPDeviceEngine *getDeviceEngineByUID(uint uid); diff --git a/sdrbase/gui/glscope.cpp b/sdrbase/gui/glscope.cpp index b1d616a2e..6ed90e7f2 100644 --- a/sdrbase/gui/glscope.cpp +++ b/sdrbase/gui/glscope.cpp @@ -23,7 +23,6 @@ #include #include #include "gui/glscope.h" -#include "dsp/dspengine.h" #include #include @@ -54,8 +53,6 @@ GLScope::GLScope(QWidget* parent) : m_amp2(1.0), m_ofs1(0.0), m_ofs2(0.0), - m_dspEngine(NULL), - m_scopeVis(NULL), //m_amp(1.0), //m_ofs(0.0), m_timeBase(1), @@ -88,21 +85,6 @@ GLScope::GLScope(QWidget* parent) : GLScope::~GLScope() { cleanup(); - - if(m_dspEngine != 0) - { - m_dspEngine->removeSink(m_scopeVis); - delete m_scopeVis; - } -} - -void GLScope::setDSPEngine(DSPEngine* dspEngine) -{ - if((m_dspEngine == NULL) && (dspEngine != NULL)) { - m_dspEngine = dspEngine; - m_scopeVis = new ScopeVis(this); - m_dspEngine->addSink(m_scopeVis); - } } void GLScope::setSampleRate(int sampleRate) { diff --git a/sdrbase/gui/glscope.h b/sdrbase/gui/glscope.h index 991e66cdb..9966e5ff3 100644 --- a/sdrbase/gui/glscope.h +++ b/sdrbase/gui/glscope.h @@ -35,7 +35,6 @@ #include "util/export.h" #include "util/bitfieldindex.h" -class DSPEngine; class ScopeVis; class QPainter; @@ -63,7 +62,7 @@ public: GLScope(QWidget* parent = NULL); ~GLScope(); - void setDSPEngine(DSPEngine* dspEngine); +// void setDSPEngine(DSPEngine* dspEngine); void setAmp1(Real amp); void setAmp1Ofs(Real ampOfs); void setAmp2(Real amp); @@ -123,10 +122,6 @@ private: Real m_ofs1; Real m_ofs2; - // sample sink - DSPEngine* m_dspEngine; - ScopeVis* m_scopeVis; - // config int m_timeBase; int m_timeOfsProMill; diff --git a/sdrbase/plugin/pluginapi.cpp b/sdrbase/plugin/pluginapi.cpp index 24edd85c6..b100b6462 100644 --- a/sdrbase/plugin/pluginapi.cpp +++ b/sdrbase/plugin/pluginapi.cpp @@ -78,6 +78,11 @@ void PluginAPI::removeThreadedSink(ThreadedSampleSink* sink) m_pluginManager->removeThreadedSink(sink); } +void PluginAPI::setSource(SampleSource* source) +{ + m_pluginManager->setSource(source); +} + bool PluginAPI::initAcquisition() { return m_pluginManager->initAcquisition(); diff --git a/sdrbase/plugin/pluginapi.h b/sdrbase/plugin/pluginapi.h index da471d576..d47043532 100644 --- a/sdrbase/plugin/pluginapi.h +++ b/sdrbase/plugin/pluginapi.h @@ -46,6 +46,7 @@ public: void addSink(SampleSink* sink); //!< Add a sample sink to device engine void removeSink(SampleSink* sink); //!< Remove a sample sink from device engine void addThreadedSink(ThreadedSampleSink* sink); //!< Add a sample sink that will run on its own thread to device engine + void setSource(SampleSource* source); //!< Set device engine sample source type void removeThreadedSink(ThreadedSampleSink* sink); //!< Remove a sample sink that runs on its own thread from device engine bool initAcquisition(); //!< Initialize device engine acquisition sequence bool startAcquisition(); //!< Start device engine acquisition sequence diff --git a/sdrbase/plugin/pluginmanager.h b/sdrbase/plugin/pluginmanager.h index d92bd4df9..39b5af088 100644 --- a/sdrbase/plugin/pluginmanager.h +++ b/sdrbase/plugin/pluginmanager.h @@ -56,6 +56,7 @@ public: void removeSink(SampleSink* sink); void addThreadedSink(ThreadedSampleSink* sink); void removeThreadedSink(ThreadedSampleSink* sink); + void setSource(SampleSource* source) { m_dspDeviceEngine->setSource(source); }; //!< Set device engine sample source type bool initAcquisition() { return m_dspDeviceEngine->initAcquisition(); } //!< Initialize device engine acquisition sequence bool startAcquisition() { return m_dspDeviceEngine->startAcquisition(); } //!< Start device engine acquisition sequence void stopAcquistion() { m_dspDeviceEngine->stopAcquistion(); } //!< Stop device engine acquisition sequence