From 2b036e2212d94f96b847a8732e31649ac922f033 Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 13 May 2016 00:03:58 +0200 Subject: [PATCH] Multi device support: completely removed dependency on DSPEngine from source plugins --- plugins/samplesource/airspy/airspyinput.cpp | 4 ++-- plugins/samplesource/bladerf/bladerfinput.cpp | 4 ++-- plugins/samplesource/fcdpro/fcdproinput.cpp | 4 ++-- plugins/samplesource/fcdproplus/fcdproplusinput.cpp | 5 ++--- plugins/samplesource/hackrf/hackrfinput.cpp | 4 ++-- plugins/samplesource/rtlsdr/rtlsdrinput.cpp | 4 ++-- plugins/samplesource/sdrdaemon/sdrdaemoninput.cpp | 2 +- sdrbase/dsp/dspengine.cpp | 6 ------ sdrbase/dsp/dspengine.h | 2 -- sdrbase/plugin/pluginapi.cpp | 5 +++++ sdrbase/plugin/pluginapi.h | 1 + sdrbase/plugin/pluginmanager.h | 5 +++++ 12 files changed, 24 insertions(+), 22 deletions(-) diff --git a/plugins/samplesource/airspy/airspyinput.cpp b/plugins/samplesource/airspy/airspyinput.cpp index 9811a2c63..41541bdc8 100644 --- a/plugins/samplesource/airspy/airspyinput.cpp +++ b/plugins/samplesource/airspy/airspyinput.cpp @@ -228,13 +228,13 @@ bool AirspyInput::applySettings(const AirspySettings& settings, bool force) if (m_settings.m_dcBlock != settings.m_dcBlock) { m_settings.m_dcBlock = settings.m_dcBlock; - DSPEngine::instance()->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqCorrection); + m_pluginAPI->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqCorrection); } if (m_settings.m_iqCorrection != settings.m_iqCorrection) { m_settings.m_iqCorrection = settings.m_iqCorrection; - DSPEngine::instance()->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqCorrection); + m_pluginAPI->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqCorrection); } if ((m_settings.m_devSampleRateIndex != settings.m_devSampleRateIndex) || force) diff --git a/plugins/samplesource/bladerf/bladerfinput.cpp b/plugins/samplesource/bladerf/bladerfinput.cpp index f8c66328a..abe33abdf 100644 --- a/plugins/samplesource/bladerf/bladerfinput.cpp +++ b/plugins/samplesource/bladerf/bladerfinput.cpp @@ -182,13 +182,13 @@ bool BladerfInput::applySettings(const BladeRFSettings& settings, bool force) if (m_settings.m_dcBlock != settings.m_dcBlock) { m_settings.m_dcBlock = settings.m_dcBlock; - DSPEngine::instance()->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqCorrection); + m_pluginAPI->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqCorrection); } if (m_settings.m_iqCorrection != settings.m_iqCorrection) { m_settings.m_iqCorrection = settings.m_iqCorrection; - DSPEngine::instance()->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqCorrection); + m_pluginAPI->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqCorrection); } if ((m_settings.m_lnaGain != settings.m_lnaGain) || force) diff --git a/plugins/samplesource/fcdpro/fcdproinput.cpp b/plugins/samplesource/fcdpro/fcdproinput.cpp index 0a499f80e..1148b7d96 100644 --- a/plugins/samplesource/fcdpro/fcdproinput.cpp +++ b/plugins/samplesource/fcdpro/fcdproinput.cpp @@ -335,13 +335,13 @@ void FCDProInput::applySettings(const FCDProSettings& settings, bool force) if ((m_settings.m_dcBlock != settings.m_dcBlock) || force) { m_settings.m_dcBlock = settings.m_dcBlock; - DSPEngine::instance()->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqCorrection); + m_pluginAPI->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqCorrection); } if ((m_settings.m_iqCorrection != settings.m_iqCorrection) || force) { m_settings.m_iqCorrection = settings.m_iqCorrection; - DSPEngine::instance()->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqCorrection); + m_pluginAPI->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqCorrection); } if (signalChange) diff --git a/plugins/samplesource/fcdproplus/fcdproplusinput.cpp b/plugins/samplesource/fcdproplus/fcdproplusinput.cpp index d213ed4bc..ee50448f2 100644 --- a/plugins/samplesource/fcdproplus/fcdproplusinput.cpp +++ b/plugins/samplesource/fcdproplus/fcdproplusinput.cpp @@ -234,20 +234,19 @@ void FCDProPlusInput::applySettings(const FCDProPlusSettings& settings, bool for if ((m_settings.m_dcBlock != settings.m_dcBlock) || force) { m_settings.m_dcBlock = settings.m_dcBlock; - DSPEngine::instance()->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqImbalance); + m_pluginApi->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqImbalance); } if ((m_settings.m_iqImbalance != settings.m_iqImbalance) || force) { m_settings.m_iqImbalance = settings.m_iqImbalance; - DSPEngine::instance()->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqImbalance); + m_pluginApi->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqImbalance); } if (signalChange) { DSPSignalNotification *notif = new DSPSignalNotification(fcd_traits::sampleRate, m_settings.m_centerFrequency); m_pluginApi->getDeviceInputMessageQueue()->push(notif); - //DSPEngine::instance()->getInputMessageQueue()->push(notif); } } diff --git a/plugins/samplesource/hackrf/hackrfinput.cpp b/plugins/samplesource/hackrf/hackrfinput.cpp index 7fe2fb7a3..2ccc694c6 100644 --- a/plugins/samplesource/hackrf/hackrfinput.cpp +++ b/plugins/samplesource/hackrf/hackrfinput.cpp @@ -185,13 +185,13 @@ bool HackRFInput::applySettings(const HackRFSettings& settings, bool force) if (m_settings.m_dcBlock != settings.m_dcBlock) { m_settings.m_dcBlock = settings.m_dcBlock; - DSPEngine::instance()->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqCorrection); + m_pluginAPI->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqCorrection); } if (m_settings.m_iqCorrection != settings.m_iqCorrection) { m_settings.m_iqCorrection = settings.m_iqCorrection; - DSPEngine::instance()->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqCorrection); + m_pluginAPI->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqCorrection); } if ((m_settings.m_devSampleRateIndex != settings.m_devSampleRateIndex) || force) diff --git a/plugins/samplesource/rtlsdr/rtlsdrinput.cpp b/plugins/samplesource/rtlsdr/rtlsdrinput.cpp index f162f82e4..588346a99 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrinput.cpp +++ b/plugins/samplesource/rtlsdr/rtlsdrinput.cpp @@ -358,13 +358,13 @@ bool RTLSDRInput::applySettings(const RTLSDRSettings& settings, bool force) if ((m_settings.m_dcBlock != settings.m_dcBlock) || force) { m_settings.m_dcBlock = settings.m_dcBlock; - DSPEngine::instance()->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqImbalance); + m_pluginAPI->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqImbalance); } if ((m_settings.m_iqImbalance != settings.m_iqImbalance) || force) { m_settings.m_iqImbalance = settings.m_iqImbalance; - DSPEngine::instance()->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqImbalance); + m_pluginAPI->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqImbalance); } if (forwardChange) diff --git a/plugins/samplesource/sdrdaemon/sdrdaemoninput.cpp b/plugins/samplesource/sdrdaemon/sdrdaemoninput.cpp index 8ffaacd18..6873d7203 100644 --- a/plugins/samplesource/sdrdaemon/sdrdaemoninput.cpp +++ b/plugins/samplesource/sdrdaemon/sdrdaemoninput.cpp @@ -124,7 +124,7 @@ bool SDRdaemonInput::handleMessage(const Message& message) MsgConfigureSDRdaemonAutoCorr& conf = (MsgConfigureSDRdaemonAutoCorr&) message; bool dcBlock = conf.getDCBlock(); bool iqImbalance = conf.getIQImbalance(); - DSPEngine::instance()->configureCorrections(dcBlock, iqImbalance); + m_pluginAPI->configureCorrections(dcBlock, iqImbalance); return true; } else if (MsgConfigureSDRdaemonAutoFollowPolicy::match(message)) diff --git a/sdrbase/dsp/dspengine.cpp b/sdrbase/dsp/dspengine.cpp index d2a65252f..ad8a55c13 100644 --- a/sdrbase/dsp/dspengine.cpp +++ b/sdrbase/dsp/dspengine.cpp @@ -127,12 +127,6 @@ void DSPEngine::removeAudioSink(AudioFifo* audioFifo) m_audioOutput.removeFifo(audioFifo); } -void DSPEngine::configureCorrections(bool dcOffsetCorrection, bool iqImbalanceCorrection, uint deviceIndex) -{ - qDebug("DSPEngine::configureCorrections(%d)", deviceIndex); - m_deviceEngines[deviceIndex]->configureCorrections(dcOffsetCorrection, iqImbalanceCorrection); -} - DSPDeviceEngine *DSPEngine::getDeviceEngineByUID(uint uid) { std::vector::iterator it = m_deviceEngines.begin(); diff --git a/sdrbase/dsp/dspengine.h b/sdrbase/dsp/dspengine.h index c113ba1d7..48296943a 100644 --- a/sdrbase/dsp/dspengine.h +++ b/sdrbase/dsp/dspengine.h @@ -52,8 +52,6 @@ public: void addSink(SampleSink* sink, uint deviceIndex = 0); //!< Add a sample sink void removeSink(SampleSink* sink, uint deviceIndex = 0); //!< Remove a sample sink - void configureCorrections(bool dcOffsetCorrection, bool iqImbalanceCorrection, uint deviceIndex = 0); //!< Configure DSP corrections - DSPDeviceEngine *getDeviceEngineByIndex(uint deviceIndex) { return m_deviceEngines[deviceIndex]; } DSPDeviceEngine *getDeviceEngineByUID(uint uid); diff --git a/sdrbase/plugin/pluginapi.cpp b/sdrbase/plugin/pluginapi.cpp index c7c083a39..24edd85c6 100644 --- a/sdrbase/plugin/pluginapi.cpp +++ b/sdrbase/plugin/pluginapi.cpp @@ -118,6 +118,11 @@ MessageQueue *PluginAPI::getDeviceOutputMessageQueue() return m_pluginManager->getDeviceOutputMessageQueue(); } +void PluginAPI::configureCorrections(bool dcOffsetCorrection, bool iqImbalanceCorrection) +{ + m_pluginManager->configureCorrections(dcOffsetCorrection, iqImbalanceCorrection); +} + GLSpectrum *PluginAPI::getSpectrum() { return m_pluginManager->getSpectrum(); diff --git a/sdrbase/plugin/pluginapi.h b/sdrbase/plugin/pluginapi.h index 7be28263f..da471d576 100644 --- a/sdrbase/plugin/pluginapi.h +++ b/sdrbase/plugin/pluginapi.h @@ -55,6 +55,7 @@ public: uint getDeviceUID() const; //!< Return the current device engine unique ID MessageQueue *getDeviceInputMessageQueue(); MessageQueue *getDeviceOutputMessageQueue(); + void configureCorrections(bool dcOffsetCorrection, bool iqImbalanceCorrection); //!< Configure current device engine DSP corrections GLSpectrum *getSpectrum(); diff --git a/sdrbase/plugin/pluginmanager.h b/sdrbase/plugin/pluginmanager.h index 0cd208996..d92bd4df9 100644 --- a/sdrbase/plugin/pluginmanager.h +++ b/sdrbase/plugin/pluginmanager.h @@ -65,6 +65,11 @@ public: MessageQueue *getDeviceInputMessageQueue() { return m_dspDeviceEngine->getInputMessageQueue(); } MessageQueue *getDeviceOutputMessageQueue() { return m_dspDeviceEngine->getOutputMessageQueue(); } + void configureCorrections(bool dcOffsetCorrection, bool iqImbalanceCorrection) //!< Configure current device engine DSP corrections + { + m_dspDeviceEngine->configureCorrections(dcOffsetCorrection, iqImbalanceCorrection); + } + GLSpectrum *getSpectrum() { return m_spectrum; } void loadSettings(const Preset* preset);