From f4c03bcab15bb3180b0567dc9f8a099d0138e459 Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 12 May 2016 23:45:27 +0200 Subject: [PATCH] Multi device support: completely removed DSPEngine dependency on DSPDeviceEngine message queues --- plugins/samplesource/sdrdaemon/sdrdaemoninput.cpp | 2 +- plugins/samplesource/sdrdaemon/sdrdaemonudphandler.cpp | 9 ++++++--- plugins/samplesource/sdrdaemon/sdrdaemonudphandler.h | 4 +++- sdrbase/dsp/dspengine.cpp | 5 ----- sdrbase/dsp/dspengine.h | 2 -- 5 files changed, 10 insertions(+), 12 deletions(-) diff --git a/plugins/samplesource/sdrdaemon/sdrdaemoninput.cpp b/plugins/samplesource/sdrdaemon/sdrdaemoninput.cpp index 6ef78eaef..8ffaacd18 100644 --- a/plugins/samplesource/sdrdaemon/sdrdaemoninput.cpp +++ b/plugins/samplesource/sdrdaemon/sdrdaemoninput.cpp @@ -52,7 +52,7 @@ SDRdaemonInput::SDRdaemonInput(const QTimer& masterTimer, PluginAPI *pluginAPI) m_autoCorrBuffer(false) { m_sampleFifo.setSize(96000 * 4); - m_SDRdaemonUDPHandler = new SDRdaemonUDPHandler(&m_sampleFifo, getOutputMessageQueueToGUI()); + m_SDRdaemonUDPHandler = new SDRdaemonUDPHandler(&m_sampleFifo, getOutputMessageQueueToGUI(), m_pluginAPI); m_SDRdaemonUDPHandler->connectTimer(&m_masterTimer); } diff --git a/plugins/samplesource/sdrdaemon/sdrdaemonudphandler.cpp b/plugins/samplesource/sdrdaemon/sdrdaemonudphandler.cpp index 2f04abe15..bb9431215 100644 --- a/plugins/samplesource/sdrdaemon/sdrdaemonudphandler.cpp +++ b/plugins/samplesource/sdrdaemon/sdrdaemonudphandler.cpp @@ -18,12 +18,15 @@ #include #include #include + +#include "plugin/pluginapi.h" #include "dsp/dspcommands.h" #include "dsp/dspengine.h" #include "sdrdaemonudphandler.h" #include "sdrdaemoninput.h" -SDRdaemonUDPHandler::SDRdaemonUDPHandler(SampleFifo *sampleFifo, MessageQueue *outputMessageQueueToGUI) : +SDRdaemonUDPHandler::SDRdaemonUDPHandler(SampleFifo *sampleFifo, MessageQueue *outputMessageQueueToGUI, PluginAPI *pluginAPI) : + m_pluginAPI(pluginAPI), m_sdrDaemonBuffer(m_rateDivider), m_dataSocket(0), m_dataAddress(QHostAddress::LocalHost), @@ -88,7 +91,7 @@ void SDRdaemonUDPHandler::start() // Need to notify the DSP engine to actually start DSPSignalNotification *notif = new DSPSignalNotification(m_samplerate, m_centerFrequency * 1000); // Frequency in Hz for the DSP engine - DSPEngine::instance()->getInputMessageQueue()->push(notif); + m_pluginAPI->getDeviceInputMessageQueue()->push(notif); m_elapsedTimer.start(); } @@ -169,7 +172,7 @@ void SDRdaemonUDPHandler::processData() if (change) { DSPSignalNotification *notif = new DSPSignalNotification(m_samplerate, m_centerFrequency * 1000); // Frequency in Hz for the DSP engine - DSPEngine::instance()->getInputMessageQueue()->push(notif); + m_pluginAPI->getDeviceInputMessageQueue()->push(notif); SDRdaemonInput::MsgReportSDRdaemonStreamData *report = SDRdaemonInput::MsgReportSDRdaemonStreamData::create( m_sdrDaemonBuffer.getSampleRateStream(), m_samplerate, diff --git a/plugins/samplesource/sdrdaemon/sdrdaemonudphandler.h b/plugins/samplesource/sdrdaemon/sdrdaemonudphandler.h index 4615eaab1..881eb26a2 100644 --- a/plugins/samplesource/sdrdaemon/sdrdaemonudphandler.h +++ b/plugins/samplesource/sdrdaemon/sdrdaemonudphandler.h @@ -30,12 +30,13 @@ class SampleFifo; class MessageQueue; class QTimer; +class PluginAPI; class SDRdaemonUDPHandler : public QObject { Q_OBJECT public: - SDRdaemonUDPHandler(SampleFifo* sampleFifo, MessageQueue *outputMessageQueueToGUI); + SDRdaemonUDPHandler(SampleFifo* sampleFifo, MessageQueue *outputMessageQueueToGUI, PluginAPI *pluginAPI); ~SDRdaemonUDPHandler(); void connectTimer(const QTimer* timer); void start(); @@ -49,6 +50,7 @@ public slots: void dataReadyRead(); private: + PluginAPI *m_pluginAPI; SDRdaemonBuffer m_sdrDaemonBuffer; QUdpSocket *m_dataSocket; QHostAddress m_dataAddress; diff --git a/sdrbase/dsp/dspengine.cpp b/sdrbase/dsp/dspengine.cpp index 5681b2fb0..d2a65252f 100644 --- a/sdrbase/dsp/dspengine.cpp +++ b/sdrbase/dsp/dspengine.cpp @@ -44,11 +44,6 @@ DSPEngine *DSPEngine::instance() return dspEngine; } -MessageQueue* DSPEngine::getInputMessageQueue(uint deviceIndex) -{ - return m_deviceEngines[deviceIndex]->getInputMessageQueue(); -} - void DSPEngine::stopAllAcquisitions() { std::vector::iterator it = m_deviceEngines.begin(); diff --git a/sdrbase/dsp/dspengine.h b/sdrbase/dsp/dspengine.h index fc7004fd6..c113ba1d7 100644 --- a/sdrbase/dsp/dspengine.h +++ b/sdrbase/dsp/dspengine.h @@ -38,8 +38,6 @@ public: static DSPEngine *instance(); - MessageQueue* getInputMessageQueue(uint deviceIndex = 0); - uint getAudioSampleRate() const { return m_audioSampleRate; } void stopAllAcquisitions();