1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-03-10 22:38:45 -04:00

Multi device support: completely removed direct access to DSP device engine from DSP engine

This commit is contained in:
f4exb 2016-05-13 00:50:29 +02:00
parent 2b036e2212
commit 7053d3775c
15 changed files with 16 additions and 62 deletions

View File

@ -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());

View File

@ -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());

View File

@ -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());

View File

@ -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());

View File

@ -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);
}

View File

@ -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());

View File

@ -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());

View File

@ -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);

View File

@ -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");

View File

@ -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);

View File

@ -23,7 +23,6 @@
#include <QOpenGLFunctions>
#include <QSurface>
#include "gui/glscope.h"
#include "dsp/dspengine.h"
#include <algorithm>
#include <QDebug>
@ -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) {

View File

@ -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;

View File

@ -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();

View File

@ -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

View File

@ -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