From be918a217b42a0d01c2de52d0ab8189f4b569ea1 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 16 May 2016 01:12:37 +0200 Subject: [PATCH] Multi device support: migrate device specific stuff outside plugin classes --- CMakeLists.txt | 4 ++++ plugins/samplesource/airspy/airspygui.cpp | 6 ++++-- plugins/samplesource/airspy/airspygui.h | 4 +++- plugins/samplesource/airspy/airspyplugin.cpp | 4 ++-- plugins/samplesource/airspy/airspyplugin.h | 2 +- plugins/samplesource/bladerf/bladerfgui.cpp | 6 ++++-- plugins/samplesource/bladerf/bladerfgui.h | 4 +++- .../samplesource/bladerf/bladerfplugin.cpp | 4 ++-- plugins/samplesource/bladerf/bladerfplugin.h | 2 +- plugins/samplesource/fcdpro/fcdprogui.cpp | 6 ++++-- plugins/samplesource/fcdpro/fcdprogui.h | 4 +++- plugins/samplesource/fcdpro/fcdproplugin.cpp | 4 ++-- plugins/samplesource/fcdpro/fcdproplugin.h | 2 +- .../samplesource/fcdproplus/fcdproplusgui.cpp | 6 ++++-- .../samplesource/fcdproplus/fcdproplusgui.h | 4 +++- .../fcdproplus/fcdproplusplugin.cpp | 4 ++-- .../fcdproplus/fcdproplusplugin.h | 2 +- .../samplesource/filesource/filesourcegui.cpp | 3 ++- .../samplesource/filesource/filesourcegui.h | 4 +++- .../filesource/filesourceplugin.cpp | 4 ++-- .../filesource/filesourceplugin.h | 2 +- plugins/samplesource/hackrf/hackrfgui.cpp | 6 ++++-- plugins/samplesource/hackrf/hackrfgui.h | 4 +++- plugins/samplesource/hackrf/hackrfplugin.cpp | 4 ++-- plugins/samplesource/hackrf/hackrfplugin.h | 2 +- plugins/samplesource/rtlsdr/rtlsdrgui.cpp | 6 ++++-- plugins/samplesource/rtlsdr/rtlsdrgui.h | 4 +++- plugins/samplesource/rtlsdr/rtlsdrplugin.cpp | 4 ++-- plugins/samplesource/rtlsdr/rtlsdrplugin.h | 2 +- .../samplesource/sdrdaemon/sdrdaemongui.cpp | 6 ++++-- plugins/samplesource/sdrdaemon/sdrdaemongui.h | 4 +++- .../sdrdaemon/sdrdaemonplugin.cpp | 4 ++-- .../samplesource/sdrdaemon/sdrdaemonplugin.h | 2 +- sdrbase/mainwindow.cpp | 11 ++++++++-- sdrbase/mainwindow.h | 2 ++ sdrbase/plugin/pluginapi.cpp | 8 ++++---- sdrbase/plugin/pluginapi.h | 2 +- sdrbase/plugin/plugininterface.h | 8 +++++++- sdrbase/plugin/pluginmanager.cpp | 20 +++++++++---------- sdrbase/plugin/pluginmanager.h | 9 +++++---- 40 files changed, 120 insertions(+), 69 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 94ca66bcb..7172f7276 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -156,6 +156,8 @@ set(sdrbase_SOURCES sdrbase/util/samplesourceserializer.cpp sdrbase/util/simpleserializer.cpp #sdrbase/util/spinlock.cpp + + sdrbase/device/deviceapi.cpp ) set(sdrbase_HEADERS @@ -243,6 +245,8 @@ set(sdrbase_HEADERS sdrbase/util/samplesourceserializer.h sdrbase/util/simpleserializer.h #sdrbase/util/spinlock.h + + sdrbase/device/deviceapi.h ) set(sdrbase_SOURCES diff --git a/plugins/samplesource/airspy/airspygui.cpp b/plugins/samplesource/airspy/airspygui.cpp index 3caebf324..c2e867aad 100644 --- a/plugins/samplesource/airspy/airspygui.cpp +++ b/plugins/samplesource/airspy/airspygui.cpp @@ -22,16 +22,18 @@ #include "airspygui.h" #include "ui_airspygui.h" #include "plugin/pluginapi.h" +#include "device/deviceapi.h" #include "gui/colormapper.h" #include "gui/glspectrum.h" #include "dsp/dspengine.h" #include "dsp/dspcommands.h" #include "dsp/filesink.h" -AirspyGui::AirspyGui(PluginAPI* pluginAPI, QWidget* parent) : +AirspyGui::AirspyGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) : QWidget(parent), ui(new Ui::AirspyGui), m_pluginAPI(pluginAPI), + m_deviceAPI(deviceAPI), m_settings(), m_sampleSource(0), m_lastEngineState((DSPDeviceEngine::State)-1) @@ -55,7 +57,7 @@ AirspyGui::AirspyGui(PluginAPI* pluginAPI, QWidget* parent) : char recFileNameCStr[30]; sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); m_fileSink = new FileSink(std::string(recFileNameCStr)); - m_pluginAPI->addSink(m_fileSink); + m_deviceAPI->addSink(m_fileSink); connect(m_pluginAPI->getDeviceOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); } diff --git a/plugins/samplesource/airspy/airspygui.h b/plugins/samplesource/airspy/airspygui.h index b64326d38..49836f6be 100644 --- a/plugins/samplesource/airspy/airspygui.h +++ b/plugins/samplesource/airspy/airspygui.h @@ -25,6 +25,7 @@ #define AIRSPY_MAX_DEVICE (32) class PluginAPI; +class DeviceAPI; class FileSink; namespace Ui { @@ -36,7 +37,7 @@ class AirspyGui : public QWidget, public PluginGUI { Q_OBJECT public: - explicit AirspyGui(PluginAPI* pluginAPI, QWidget* parent = NULL); + explicit AirspyGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL); virtual ~AirspyGui(); void destroy(); @@ -56,6 +57,7 @@ private: Ui::AirspyGui* ui; PluginAPI* m_pluginAPI; + DeviceAPI* m_deviceAPI; AirspySettings m_settings; QTimer m_updateTimer; QTimer m_statusTimer; diff --git a/plugins/samplesource/airspy/airspyplugin.cpp b/plugins/samplesource/airspy/airspyplugin.cpp index 17fd626ed..33e160558 100644 --- a/plugins/samplesource/airspy/airspyplugin.cpp +++ b/plugins/samplesource/airspy/airspyplugin.cpp @@ -117,7 +117,7 @@ PluginInterface::SampleSourceDevices AirspyPlugin::enumSampleSources() return result; } -PluginGUI* AirspyPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName) +PluginGUI* AirspyPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName, DeviceAPI *deviceAPI) { if (!m_pluginAPI) { @@ -126,7 +126,7 @@ PluginGUI* AirspyPlugin::createSampleSourcePluginGUI(const QString& sourceId, co if(sourceId == m_deviceTypeID) { - AirspyGui* gui = new AirspyGui(m_pluginAPI); + AirspyGui* gui = new AirspyGui(m_pluginAPI, deviceAPI); m_pluginAPI->setInputGUI(gui, sourceDisplayName); return gui; } diff --git a/plugins/samplesource/airspy/airspyplugin.h b/plugins/samplesource/airspy/airspyplugin.h index d9f911804..03b7a6e28 100644 --- a/plugins/samplesource/airspy/airspyplugin.h +++ b/plugins/samplesource/airspy/airspyplugin.h @@ -34,7 +34,7 @@ public: void initPlugin(PluginAPI* pluginAPI); virtual SampleSourceDevices enumSampleSources(); - virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName); + virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName, DeviceAPI *deviceAPI); static const QString m_deviceTypeID; diff --git a/plugins/samplesource/bladerf/bladerfgui.cpp b/plugins/samplesource/bladerf/bladerfgui.cpp index a582ede07..3bf69433d 100644 --- a/plugins/samplesource/bladerf/bladerfgui.cpp +++ b/plugins/samplesource/bladerf/bladerfgui.cpp @@ -21,6 +21,7 @@ #include "ui_bladerfgui.h" #include "plugin/pluginapi.h" +#include "device/deviceapi.h" #include "gui/colormapper.h" #include "gui/glspectrum.h" #include "dsp/dspengine.h" @@ -28,10 +29,11 @@ #include "dsp/filesink.h" #include "bladerfgui.h" -BladerfGui::BladerfGui(PluginAPI* pluginAPI, QWidget* parent) : +BladerfGui::BladerfGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) : QWidget(parent), ui(new Ui::BladerfGui), m_pluginAPI(pluginAPI), + m_deviceAPI(deviceAPI), m_settings(), m_sampleSource(NULL), m_sampleRate(0), @@ -65,7 +67,7 @@ BladerfGui::BladerfGui(PluginAPI* pluginAPI, QWidget* parent) : char recFileNameCStr[30]; sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); m_fileSink = new FileSink(std::string(recFileNameCStr)); - m_pluginAPI->addSink(m_fileSink); + m_deviceAPI->addSink(m_fileSink); connect(m_pluginAPI->getDeviceOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); } diff --git a/plugins/samplesource/bladerf/bladerfgui.h b/plugins/samplesource/bladerf/bladerfgui.h index d9d6c4fb0..a743f8377 100644 --- a/plugins/samplesource/bladerf/bladerfgui.h +++ b/plugins/samplesource/bladerf/bladerfgui.h @@ -23,6 +23,7 @@ #include "bladerfinput.h" class PluginAPI; +class DeviceAPI; class FileSink; namespace Ui { @@ -34,7 +35,7 @@ class BladerfGui : public QWidget, public PluginGUI { Q_OBJECT public: - explicit BladerfGui(PluginAPI* pluginAPI, QWidget* parent = NULL); + explicit BladerfGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL); virtual ~BladerfGui(); void destroy(); @@ -52,6 +53,7 @@ private: Ui::BladerfGui* ui; PluginAPI* m_pluginAPI; + DeviceAPI* m_deviceAPI; BladeRFSettings m_settings; QTimer m_updateTimer; QTimer m_statusTimer; diff --git a/plugins/samplesource/bladerf/bladerfplugin.cpp b/plugins/samplesource/bladerf/bladerfplugin.cpp index 98abffa8a..891c2e946 100644 --- a/plugins/samplesource/bladerf/bladerfplugin.cpp +++ b/plugins/samplesource/bladerf/bladerfplugin.cpp @@ -75,7 +75,7 @@ PluginInterface::SampleSourceDevices BlderfPlugin::enumSampleSources() return result; } -PluginGUI* BlderfPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName) +PluginGUI* BlderfPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName, DeviceAPI *deviceAPI) { if (!m_pluginAPI) { @@ -84,7 +84,7 @@ PluginGUI* BlderfPlugin::createSampleSourcePluginGUI(const QString& sourceId, co if(sourceId == m_deviceTypeID) { - BladerfGui* gui = new BladerfGui(m_pluginAPI); + BladerfGui* gui = new BladerfGui(m_pluginAPI, deviceAPI); m_pluginAPI->setInputGUI(gui, sourceDisplayName); return gui; } diff --git a/plugins/samplesource/bladerf/bladerfplugin.h b/plugins/samplesource/bladerf/bladerfplugin.h index 221b8e570..769eafd31 100644 --- a/plugins/samplesource/bladerf/bladerfplugin.h +++ b/plugins/samplesource/bladerf/bladerfplugin.h @@ -34,7 +34,7 @@ public: void initPlugin(PluginAPI* pluginAPI); virtual SampleSourceDevices enumSampleSources(); - virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName); + virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName, DeviceAPI *deviceAPI); static const QString m_deviceTypeID; diff --git a/plugins/samplesource/fcdpro/fcdprogui.cpp b/plugins/samplesource/fcdpro/fcdprogui.cpp index 76c6912a6..678072ad5 100644 --- a/plugins/samplesource/fcdpro/fcdprogui.cpp +++ b/plugins/samplesource/fcdpro/fcdprogui.cpp @@ -18,6 +18,7 @@ #include "ui_fcdprogui.h" #include "plugin/pluginapi.h" +#include "device/deviceapi.h" #include "gui/colormapper.h" #include "gui/glspectrum.h" #include "dsp/dspengine.h" @@ -26,10 +27,11 @@ #include "fcdprogui.h" #include "fcdproconst.h" -FCDProGui::FCDProGui(PluginAPI* pluginAPI, QWidget* parent) : +FCDProGui::FCDProGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) : QWidget(parent), ui(new Ui::FCDProGui), m_pluginAPI(pluginAPI), + m_deviceAPI(deviceAPI), m_settings(), m_sampleSource(NULL), m_lastEngineState((DSPDeviceEngine::State)-1) @@ -146,7 +148,7 @@ FCDProGui::FCDProGui(PluginAPI* pluginAPI, QWidget* parent) : char recFileNameCStr[30]; sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); m_fileSink = new FileSink(std::string(recFileNameCStr)); - m_pluginAPI->addSink(m_fileSink); + m_deviceAPI->addSink(m_fileSink); connect(m_pluginAPI->getDeviceOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); } diff --git a/plugins/samplesource/fcdpro/fcdprogui.h b/plugins/samplesource/fcdpro/fcdprogui.h index 8c1b64e9f..e3d01a442 100644 --- a/plugins/samplesource/fcdpro/fcdprogui.h +++ b/plugins/samplesource/fcdpro/fcdprogui.h @@ -23,6 +23,7 @@ #include "plugin/plugingui.h" class PluginAPI; +class DeviceAPI; class FileSink; namespace Ui { @@ -33,7 +34,7 @@ class FCDProGui : public QWidget, public PluginGUI { Q_OBJECT public: - explicit FCDProGui(PluginAPI* pluginAPI, QWidget* parent = NULL); + explicit FCDProGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL); virtual ~FCDProGui(); void destroy(); @@ -52,6 +53,7 @@ private: Ui::FCDProGui* ui; PluginAPI* m_pluginAPI; + DeviceAPI* m_deviceAPI; FCDProSettings m_settings; QTimer m_updateTimer; QTimer m_statusTimer; diff --git a/plugins/samplesource/fcdpro/fcdproplugin.cpp b/plugins/samplesource/fcdpro/fcdproplugin.cpp index a35bfdfdf..0142cf37b 100644 --- a/plugins/samplesource/fcdpro/fcdproplugin.cpp +++ b/plugins/samplesource/fcdpro/fcdproplugin.cpp @@ -74,11 +74,11 @@ PluginInterface::SampleSourceDevices FCDProPlugin::enumSampleSources() return result; } -PluginGUI* FCDProPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName) +PluginGUI* FCDProPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName, DeviceAPI *deviceAPI) { if(sourceId == fcd_traits::interfaceIID) { - FCDProGui* gui = new FCDProGui(m_pluginAPI); + FCDProGui* gui = new FCDProGui(m_pluginAPI, deviceAPI); m_pluginAPI->setInputGUI(gui, sourceDisplayName); return gui; } diff --git a/plugins/samplesource/fcdpro/fcdproplugin.h b/plugins/samplesource/fcdpro/fcdproplugin.h index 341313574..57dbfea02 100644 --- a/plugins/samplesource/fcdpro/fcdproplugin.h +++ b/plugins/samplesource/fcdpro/fcdproplugin.h @@ -18,7 +18,7 @@ public: void initPlugin(PluginAPI* pluginAPI); virtual SampleSourceDevices enumSampleSources(); - virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName); + virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName, DeviceAPI *deviceAPI); static const QString m_deviceTypeID; diff --git a/plugins/samplesource/fcdproplus/fcdproplusgui.cpp b/plugins/samplesource/fcdproplus/fcdproplusgui.cpp index 0b9b55702..bdbc8af91 100644 --- a/plugins/samplesource/fcdproplus/fcdproplusgui.cpp +++ b/plugins/samplesource/fcdproplus/fcdproplusgui.cpp @@ -19,6 +19,7 @@ #include "ui_fcdproplusgui.h" #include "plugin/pluginapi.h" +#include "device/deviceapi.h" #include "gui/colormapper.h" #include "gui/glspectrum.h" #include "dsp/dspengine.h" @@ -27,10 +28,11 @@ #include "fcdproplusgui.h" #include "fcdproplusconst.h" -FCDProPlusGui::FCDProPlusGui(PluginAPI* pluginAPI, QWidget* parent) : +FCDProPlusGui::FCDProPlusGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) : QWidget(parent), ui(new Ui::FCDProPlusGui), m_pluginAPI(pluginAPI), + m_deviceAPI(deviceAPI), m_settings(), m_sampleSource(NULL), m_lastEngineState((DSPDeviceEngine::State)-1) @@ -64,7 +66,7 @@ FCDProPlusGui::FCDProPlusGui(PluginAPI* pluginAPI, QWidget* parent) : char recFileNameCStr[30]; sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); m_fileSink = new FileSink(std::string(recFileNameCStr)); - m_pluginAPI->addSink(m_fileSink); + m_deviceAPI->addSink(m_fileSink); connect(m_pluginAPI->getDeviceOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); } diff --git a/plugins/samplesource/fcdproplus/fcdproplusgui.h b/plugins/samplesource/fcdproplus/fcdproplusgui.h index 5fecab4b8..c15a6b0ac 100644 --- a/plugins/samplesource/fcdproplus/fcdproplusgui.h +++ b/plugins/samplesource/fcdproplus/fcdproplusgui.h @@ -23,6 +23,7 @@ #include "plugin/plugingui.h" class PluginAPI; +class DeviceAPI; class FileSink; namespace Ui { @@ -33,7 +34,7 @@ class FCDProPlusGui : public QWidget, public PluginGUI { Q_OBJECT public: - explicit FCDProPlusGui(PluginAPI* pluginAPI, QWidget* parent = NULL); + explicit FCDProPlusGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL); virtual ~FCDProPlusGui(); void destroy(); @@ -52,6 +53,7 @@ private: Ui::FCDProPlusGui* ui; PluginAPI* m_pluginAPI; + DeviceAPI* m_deviceAPI; FCDProPlusSettings m_settings; QTimer m_updateTimer; QTimer m_statusTimer; diff --git a/plugins/samplesource/fcdproplus/fcdproplusplugin.cpp b/plugins/samplesource/fcdproplus/fcdproplusplugin.cpp index bb42bad5d..5f5554eb8 100644 --- a/plugins/samplesource/fcdproplus/fcdproplusplugin.cpp +++ b/plugins/samplesource/fcdproplus/fcdproplusplugin.cpp @@ -74,11 +74,11 @@ PluginInterface::SampleSourceDevices FCDProPlusPlugin::enumSampleSources() return result; } -PluginGUI* FCDProPlusPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName) +PluginGUI* FCDProPlusPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName, DeviceAPI *deviceAPI) { if(sourceId == fcd_traits::interfaceIID) { - FCDProPlusGui* gui = new FCDProPlusGui(m_pluginAPI); + FCDProPlusGui* gui = new FCDProPlusGui(m_pluginAPI, deviceAPI); m_pluginAPI->setInputGUI(gui, sourceDisplayName); return gui; } diff --git a/plugins/samplesource/fcdproplus/fcdproplusplugin.h b/plugins/samplesource/fcdproplus/fcdproplusplugin.h index a6dd5d453..44ab6397a 100644 --- a/plugins/samplesource/fcdproplus/fcdproplusplugin.h +++ b/plugins/samplesource/fcdproplus/fcdproplusplugin.h @@ -18,7 +18,7 @@ public: void initPlugin(PluginAPI* pluginAPI); virtual SampleSourceDevices enumSampleSources(); - virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName); + virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName, DeviceAPI *deviceAPI); static const QString m_deviceTypeID; diff --git a/plugins/samplesource/filesource/filesourcegui.cpp b/plugins/samplesource/filesource/filesourcegui.cpp index ac49efd57..6b7585bc0 100644 --- a/plugins/samplesource/filesource/filesourcegui.cpp +++ b/plugins/samplesource/filesource/filesourcegui.cpp @@ -33,10 +33,11 @@ #include "filesourcegui.h" -FileSourceGui::FileSourceGui(PluginAPI* pluginAPI, QWidget* parent) : +FileSourceGui::FileSourceGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) : QWidget(parent), ui(new Ui::FileSourceGui), m_pluginAPI(pluginAPI), + m_deviceAPI(deviceAPI), m_settings(), m_sampleSource(NULL), m_acquisition(false), diff --git a/plugins/samplesource/filesource/filesourcegui.h b/plugins/samplesource/filesource/filesourcegui.h index 41098a368..f3fea4057 100644 --- a/plugins/samplesource/filesource/filesourcegui.h +++ b/plugins/samplesource/filesource/filesourcegui.h @@ -23,6 +23,7 @@ #include "filesourceinput.h" class PluginAPI; +class DeviceAPI; namespace Ui { class FileSourceGui; @@ -32,7 +33,7 @@ class FileSourceGui : public QWidget, public PluginGUI { Q_OBJECT public: - explicit FileSourceGui(PluginAPI* pluginAPI, QWidget* parent = NULL); + explicit FileSourceGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL); virtual ~FileSourceGui(); void destroy(); @@ -50,6 +51,7 @@ private: Ui::FileSourceGui* ui; PluginAPI* m_pluginAPI; + DeviceAPI* m_deviceAPI; FileSourceInput::Settings m_settings; QTimer m_statusTimer; std::vector m_gains; diff --git a/plugins/samplesource/filesource/filesourceplugin.cpp b/plugins/samplesource/filesource/filesourceplugin.cpp index 9639924ad..68ffaa8c7 100644 --- a/plugins/samplesource/filesource/filesourceplugin.cpp +++ b/plugins/samplesource/filesource/filesourceplugin.cpp @@ -67,11 +67,11 @@ PluginInterface::SampleSourceDevices FileSourcePlugin::enumSampleSources() return result; } -PluginGUI* FileSourcePlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName) +PluginGUI* FileSourcePlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName, DeviceAPI *deviceAPI) { if(sourceId == m_deviceTypeID) { - FileSourceGui* gui = new FileSourceGui(m_pluginAPI); + FileSourceGui* gui = new FileSourceGui(m_pluginAPI, deviceAPI); m_pluginAPI->setInputGUI(gui, sourceDisplayName); return gui; } diff --git a/plugins/samplesource/filesource/filesourceplugin.h b/plugins/samplesource/filesource/filesourceplugin.h index 18c31186d..558bdc2d7 100644 --- a/plugins/samplesource/filesource/filesourceplugin.h +++ b/plugins/samplesource/filesource/filesourceplugin.h @@ -34,7 +34,7 @@ public: void initPlugin(PluginAPI* pluginAPI); virtual SampleSourceDevices enumSampleSources(); - virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName); + virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName, DeviceAPI *deviceAPI); static const QString m_deviceTypeID; diff --git a/plugins/samplesource/hackrf/hackrfgui.cpp b/plugins/samplesource/hackrf/hackrfgui.cpp index 4b42a3a12..345624589 100644 --- a/plugins/samplesource/hackrf/hackrfgui.cpp +++ b/plugins/samplesource/hackrf/hackrfgui.cpp @@ -20,6 +20,7 @@ #include #include "plugin/pluginapi.h" +#include "device/deviceapi.h" #include "gui/colormapper.h" #include "gui/glspectrum.h" #include "dsp/dspengine.h" @@ -28,10 +29,11 @@ #include "hackrfgui.h" #include "ui_hackrfgui.h" -HackRFGui::HackRFGui(PluginAPI* pluginAPI, QWidget* parent) : +HackRFGui::HackRFGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) : QWidget(parent), ui(new Ui::HackRFGui), m_pluginAPI(pluginAPI), + m_deviceAPI(deviceAPI), m_settings(), m_sampleSource(NULL), m_lastEngineState((DSPDeviceEngine::State)-1) @@ -56,7 +58,7 @@ HackRFGui::HackRFGui(PluginAPI* pluginAPI, QWidget* parent) : char recFileNameCStr[30]; sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); m_fileSink = new FileSink(std::string(recFileNameCStr)); - m_pluginAPI->addSink(m_fileSink); + m_deviceAPI->addSink(m_fileSink); connect(m_pluginAPI->getDeviceOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); } diff --git a/plugins/samplesource/hackrf/hackrfgui.h b/plugins/samplesource/hackrf/hackrfgui.h index d98eda3bd..1238195d6 100644 --- a/plugins/samplesource/hackrf/hackrfgui.h +++ b/plugins/samplesource/hackrf/hackrfgui.h @@ -25,6 +25,7 @@ #define HACKRF_MAX_DEVICE (32) class PluginAPI; +class DeviceAPI; class FileSink; namespace Ui { @@ -43,7 +44,7 @@ public: HACKRF_IMGREJ_NB } HackRFImgRejValue; - explicit HackRFGui(PluginAPI* pluginAPI, QWidget* parent = NULL); + explicit HackRFGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL); virtual ~HackRFGui(); void destroy(); @@ -61,6 +62,7 @@ private: Ui::HackRFGui* ui; PluginAPI* m_pluginAPI; + DeviceAPI* m_deviceAPI; HackRFSettings m_settings; QTimer m_updateTimer; QTimer m_statusTimer; diff --git a/plugins/samplesource/hackrf/hackrfplugin.cpp b/plugins/samplesource/hackrf/hackrfplugin.cpp index a29b11f28..47c71bf6a 100644 --- a/plugins/samplesource/hackrf/hackrfplugin.cpp +++ b/plugins/samplesource/hackrf/hackrfplugin.cpp @@ -112,7 +112,7 @@ PluginInterface::SampleSourceDevices HackRFPlugin::enumSampleSources() return result; } -PluginGUI* HackRFPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName) +PluginGUI* HackRFPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName, DeviceAPI *deviceAPI) { if (!m_pluginAPI) { @@ -121,7 +121,7 @@ PluginGUI* HackRFPlugin::createSampleSourcePluginGUI(const QString& sourceId, co if(sourceId == m_deviceTypeID) { - HackRFGui* gui = new HackRFGui(m_pluginAPI); + HackRFGui* gui = new HackRFGui(m_pluginAPI, deviceAPI); m_pluginAPI->setInputGUI(gui, sourceDisplayName); return gui; } diff --git a/plugins/samplesource/hackrf/hackrfplugin.h b/plugins/samplesource/hackrf/hackrfplugin.h index a8190bff8..c6bd95ee4 100644 --- a/plugins/samplesource/hackrf/hackrfplugin.h +++ b/plugins/samplesource/hackrf/hackrfplugin.h @@ -34,7 +34,7 @@ public: void initPlugin(PluginAPI* pluginAPI); virtual SampleSourceDevices enumSampleSources(); - virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName); + virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName, DeviceAPI *deviceAPI); static const QString m_deviceTypeID; diff --git a/plugins/samplesource/rtlsdr/rtlsdrgui.cpp b/plugins/samplesource/rtlsdr/rtlsdrgui.cpp index f4e9ceb2d..8cbec4e16 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrgui.cpp +++ b/plugins/samplesource/rtlsdr/rtlsdrgui.cpp @@ -20,16 +20,18 @@ #include "rtlsdrgui.h" #include "ui_rtlsdrgui.h" #include "plugin/pluginapi.h" +#include "device/deviceapi.h" #include "gui/colormapper.h" #include "gui/glspectrum.h" #include "dsp/dspengine.h" #include "dsp/dspcommands.h" #include "dsp/filesink.h" -RTLSDRGui::RTLSDRGui(PluginAPI* pluginAPI, QWidget* parent) : +RTLSDRGui::RTLSDRGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) : QWidget(parent), ui(new Ui::RTLSDRGui), m_pluginAPI(pluginAPI), + m_deviceAPI(deviceAPI), m_settings(), m_sampleSource(0), m_lastEngineState((DSPDeviceEngine::State)-1) @@ -58,7 +60,7 @@ RTLSDRGui::RTLSDRGui(PluginAPI* pluginAPI, QWidget* parent) : char recFileNameCStr[30]; sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); m_fileSink = new FileSink(std::string(recFileNameCStr)); - m_pluginAPI->addSink(m_fileSink); + m_deviceAPI->addSink(m_fileSink); connect(m_pluginAPI->getDeviceOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); } diff --git a/plugins/samplesource/rtlsdr/rtlsdrgui.h b/plugins/samplesource/rtlsdr/rtlsdrgui.h index b3dcc20e6..bca8b1e4c 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrgui.h +++ b/plugins/samplesource/rtlsdr/rtlsdrgui.h @@ -22,6 +22,7 @@ #include "rtlsdrinput.h" class PluginAPI; +class DeviceAPI; class FileSink; namespace Ui { @@ -33,7 +34,7 @@ class RTLSDRGui : public QWidget, public PluginGUI { Q_OBJECT public: - explicit RTLSDRGui(PluginAPI* pluginAPI, QWidget* parent = NULL); + explicit RTLSDRGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL); virtual ~RTLSDRGui(); void destroy(); @@ -51,6 +52,7 @@ private: Ui::RTLSDRGui* ui; PluginAPI* m_pluginAPI; + DeviceAPI* m_deviceAPI; RTLSDRSettings m_settings; QTimer m_updateTimer; QTimer m_statusTimer; diff --git a/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp b/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp index de715ba08..ba3ace1af 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp +++ b/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp @@ -59,10 +59,10 @@ PluginInterface::SampleSourceDevices RTLSDRPlugin::enumSampleSources() return result; } -PluginGUI* RTLSDRPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName) +PluginGUI* RTLSDRPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName, DeviceAPI *deviceAPI) { if(sourceId == m_deviceTypeID) { - RTLSDRGui* gui = new RTLSDRGui(m_pluginAPI); + RTLSDRGui* gui = new RTLSDRGui(m_pluginAPI, deviceAPI); m_pluginAPI->setInputGUI(gui, sourceDisplayName); return gui; } else { diff --git a/plugins/samplesource/rtlsdr/rtlsdrplugin.h b/plugins/samplesource/rtlsdr/rtlsdrplugin.h index 083c90d67..802a00a5c 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrplugin.h +++ b/plugins/samplesource/rtlsdr/rtlsdrplugin.h @@ -18,7 +18,7 @@ public: void initPlugin(PluginAPI* pluginAPI); virtual SampleSourceDevices enumSampleSources(); - virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName); + virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName, DeviceAPI *deviceAPI); static const QString m_deviceTypeID; diff --git a/plugins/samplesource/sdrdaemon/sdrdaemongui.cpp b/plugins/samplesource/sdrdaemon/sdrdaemongui.cpp index 69f3a43d6..fa6dfbb65 100644 --- a/plugins/samplesource/sdrdaemon/sdrdaemongui.cpp +++ b/plugins/samplesource/sdrdaemon/sdrdaemongui.cpp @@ -31,6 +31,7 @@ #include "ui_sdrdaemongui.h" #include "plugin/pluginapi.h" +#include "device/deviceapi.h" #include "gui/colormapper.h" #include "gui/glspectrum.h" #include "dsp/dspengine.h" @@ -41,10 +42,11 @@ #include "sdrdaemongui.h" -SDRdaemonGui::SDRdaemonGui(PluginAPI* pluginAPI, QWidget* parent) : +SDRdaemonGui::SDRdaemonGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) : QWidget(parent), ui(new Ui::SDRdaemonGui), m_pluginAPI(pluginAPI), + m_deviceAPI(deviceAPI), m_sampleSource(NULL), m_acquisition(false), m_lastEngineState((DSPDeviceEngine::State)-1), @@ -99,7 +101,7 @@ SDRdaemonGui::SDRdaemonGui(PluginAPI* pluginAPI, QWidget* parent) : char recFileNameCStr[30]; sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); m_fileSink = new FileSink(std::string(recFileNameCStr)); - m_pluginAPI->addSink(m_fileSink); + m_deviceAPI->addSink(m_fileSink); connect(m_pluginAPI->getDeviceOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); } diff --git a/plugins/samplesource/sdrdaemon/sdrdaemongui.h b/plugins/samplesource/sdrdaemon/sdrdaemongui.h index 47f59692e..3c5ffc06b 100644 --- a/plugins/samplesource/sdrdaemon/sdrdaemongui.h +++ b/plugins/samplesource/sdrdaemon/sdrdaemongui.h @@ -24,6 +24,7 @@ #include "sdrdaemoninput.h" class PluginAPI; +class DeviceAPI; class FileSink; namespace Ui { @@ -34,7 +35,7 @@ class SDRdaemonGui : public QWidget, public PluginGUI { Q_OBJECT public: - explicit SDRdaemonGui(PluginAPI* pluginAPI, QWidget* parent = NULL); + explicit SDRdaemonGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL); virtual ~SDRdaemonGui(); void destroy(); @@ -52,6 +53,7 @@ private: Ui::SDRdaemonGui* ui; PluginAPI* m_pluginAPI; + DeviceAPI* m_deviceAPI; QTimer m_updateTimer; QTimer m_statusTimer; SampleSource* m_sampleSource; diff --git a/plugins/samplesource/sdrdaemon/sdrdaemonplugin.cpp b/plugins/samplesource/sdrdaemon/sdrdaemonplugin.cpp index c03d34eb3..302fbd825 100644 --- a/plugins/samplesource/sdrdaemon/sdrdaemonplugin.cpp +++ b/plugins/samplesource/sdrdaemon/sdrdaemonplugin.cpp @@ -67,11 +67,11 @@ PluginInterface::SampleSourceDevices SDRdaemonPlugin::enumSampleSources() return result; } -PluginGUI* SDRdaemonPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName) +PluginGUI* SDRdaemonPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName, DeviceAPI *deviceAPI) { if(sourceId == m_deviceTypeID) { - SDRdaemonGui* gui = new SDRdaemonGui(m_pluginAPI); + SDRdaemonGui* gui = new SDRdaemonGui(m_pluginAPI, deviceAPI); m_pluginAPI->setInputGUI(gui, sourceDisplayName); return gui; } diff --git a/plugins/samplesource/sdrdaemon/sdrdaemonplugin.h b/plugins/samplesource/sdrdaemon/sdrdaemonplugin.h index 70e44b65f..ea2682dfb 100644 --- a/plugins/samplesource/sdrdaemon/sdrdaemonplugin.h +++ b/plugins/samplesource/sdrdaemon/sdrdaemonplugin.h @@ -34,7 +34,7 @@ public: void initPlugin(PluginAPI* pluginAPI); virtual SampleSourceDevices enumSampleSources(); - virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName); + virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName, DeviceAPI *deviceAPI); static const QString m_deviceTypeID; diff --git a/sdrbase/mainwindow.cpp b/sdrbase/mainwindow.cpp index 1ff14b7e7..60ccc58c2 100644 --- a/sdrbase/mainwindow.cpp +++ b/sdrbase/mainwindow.cpp @@ -43,6 +43,7 @@ #include "dsp/dspcommands.h" #include "plugin/plugingui.h" #include "plugin/pluginapi.h" +#include "device/deviceapi.h" #include "plugin/plugingui.h" #include "gui/glspectrum.h" @@ -142,7 +143,7 @@ MainWindow::MainWindow(QWidget* parent) : qDebug() << "MainWindow::MainWindow: select SampleSource from settings..."; int sampleSourceIndex = m_settings.getSourceIndex(); - sampleSourceIndex = m_deviceUIs.back()->m_pluginManager->selectSampleSourceByIndex(sampleSourceIndex); + sampleSourceIndex = m_deviceUIs.back()->m_pluginManager->selectSampleSourceByIndex(sampleSourceIndex, m_deviceUIs.back()->m_deviceAPI); if (sampleSourceIndex >= 0) { @@ -195,8 +196,13 @@ void MainWindow::addDevice() m_deviceUIs.push_back(new DeviceUISet(m_masterTimer)); m_deviceUIs.back()->m_deviceEngine = dspDeviceEngine; + DeviceAPI *deviceAPI = new DeviceAPI(dspDeviceEngine, m_deviceUIs.back()->m_spectrum); + m_deviceUIs.back()->m_deviceAPI = deviceAPI; + + // TODO: do not create one plugin manager per device. Use device API instead PluginManager *pluginManager = new PluginManager(this, m_deviceUIs.size()-1, dspDeviceEngine, m_deviceUIs.back()->m_spectrum); m_deviceUIs.back()->m_pluginManager = pluginManager; + pluginManager->loadPlugins(); m_deviceUIs.back()->m_samplingDeviceControl->setPluginManager(pluginManager); @@ -229,6 +235,7 @@ void MainWindow::removeLastDevice() // On the other hand freeAll() must be executed only once delete m_deviceUIs.back()->m_pluginManager; //m_deviceUIs.back()->m_pluginManager->freeAll(); + //delete m_deviceUIs.back()->m_deviceAPI; // TODO: reinstate when plugin manager is not created for each device lastDeviceEngine->stop(); m_dspEngine->removeLastDeviceEngine(); @@ -664,7 +671,7 @@ void MainWindow::on_sampleSource_currentIndexChanged(int index) { DeviceUISet *deviceUI = m_deviceUIs[currentSourceTabIndex]; deviceUI->m_pluginManager->saveSourceSettings(m_settings.getWorkingPreset()); - deviceUI->m_pluginManager->selectSampleSourceByIndex(deviceUI->m_samplingDeviceControl->getDeviceSelector()->currentIndex()); + deviceUI->m_pluginManager->selectSampleSourceByIndex(deviceUI->m_samplingDeviceControl->getDeviceSelector()->currentIndex(), deviceUI->m_deviceAPI); m_settings.setSourceIndex(deviceUI->m_samplingDeviceControl->getDeviceSelector()->currentIndex()); deviceUI->m_pluginManager->loadSourceSettings(m_settings.getWorkingPreset()); diff --git a/sdrbase/mainwindow.h b/sdrbase/mainwindow.h index 446091605..25acb64b9 100644 --- a/sdrbase/mainwindow.h +++ b/sdrbase/mainwindow.h @@ -42,6 +42,7 @@ class PluginAPI; class PluginGUI; class ChannelMarker; class PluginManager; +class DeviceAPI; class PluginInterface; namespace Ui { @@ -61,6 +62,7 @@ public: SamplingDeviceControl *m_samplingDeviceControl; DSPDeviceEngine *m_deviceEngine; PluginManager *m_pluginManager; + DeviceAPI *m_deviceAPI; DeviceUISet(QTimer& timer); ~DeviceUISet(); diff --git a/sdrbase/plugin/pluginapi.cpp b/sdrbase/plugin/pluginapi.cpp index 4e847c1c2..0d1f8671a 100644 --- a/sdrbase/plugin/pluginapi.cpp +++ b/sdrbase/plugin/pluginapi.cpp @@ -59,10 +59,10 @@ void PluginAPI::registerSampleSource(const QString& sourceName, PluginInterface* m_pluginManager->registerSampleSource(sourceName, plugin); } -void PluginAPI::addSink(SampleSink* sink) -{ - m_pluginManager->addSink(sink); -} +//void PluginAPI::addSink(SampleSink* sink) +//{ +// m_pluginManager->addSink(sink); +//} void PluginAPI::removeSink(SampleSink* sink) { diff --git a/sdrbase/plugin/pluginapi.h b/sdrbase/plugin/pluginapi.h index 993dae1a7..2ab9a628b 100644 --- a/sdrbase/plugin/pluginapi.h +++ b/sdrbase/plugin/pluginapi.h @@ -41,7 +41,7 @@ public: void registerSampleSource(const QString& sourceName, PluginInterface* plugin); // Device engine stuff - void addSink(SampleSink* sink); //!< Add a sample sink to device engine +// 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 diff --git a/sdrbase/plugin/plugininterface.h b/sdrbase/plugin/plugininterface.h index 0f3555224..0bee23c3d 100644 --- a/sdrbase/plugin/plugininterface.h +++ b/sdrbase/plugin/plugininterface.h @@ -15,6 +15,7 @@ struct PluginDescriptor { }; class PluginAPI; +class DeviceAPI; class PluginGUI; class PluginInterface { @@ -46,7 +47,12 @@ public: virtual PluginGUI* createChannel(const QString& channelName) { return 0; } virtual SampleSourceDevices enumSampleSources() { return SampleSourceDevices(); } - virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName) { return 0; } + virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, + const QString& sourceDisplayName, + DeviceAPI *deviceAPI) + { + return 0; + } }; Q_DECLARE_INTERFACE(PluginInterface, "SDRangel.PluginInterface/0.1"); diff --git a/sdrbase/plugin/pluginmanager.cpp b/sdrbase/plugin/pluginmanager.cpp index 9aa9257c6..7dcf04ae6 100644 --- a/sdrbase/plugin/pluginmanager.cpp +++ b/sdrbase/plugin/pluginmanager.cpp @@ -106,10 +106,10 @@ void PluginManager::setInputGUI(QWidget* gui, const QString& sourceDisplayName) m_mainWindow->setInputGUI(m_deviceTabIndex, gui, sourceDisplayName); } -void PluginManager::addSink(SampleSink* sink) -{ - m_dspDeviceEngine->addSink(sink); -} +//void PluginManager::addSink(SampleSink* sink) +//{ +// m_dspDeviceEngine->addSink(sink); +//} void PluginManager::removeSink(SampleSink* sink) { @@ -318,7 +318,7 @@ void PluginManager::fillSampleSourceSelector(QComboBox* comboBox) } } -int PluginManager::selectSampleSourceByIndex(int index) +int PluginManager::selectSampleSourceByIndex(int index, DeviceAPI *deviceAPI) { qDebug("PluginManager::selectSampleSourceByIndex: index: %d", index); @@ -356,13 +356,13 @@ int PluginManager::selectSampleSourceByIndex(int index) << " ser: " << m_sampleSourceSerial.toStdString().c_str() << " seq: " << m_sampleSourceSequence; - m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId, m_sampleSourceDevices[index].m_displayName); + m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId, m_sampleSourceDevices[index].m_displayName, deviceAPI); m_dspDeviceEngine->setSourceSequence(m_sampleSourceSequence); return index; } -int PluginManager::selectFirstSampleSource(const QString& sourceId) +int PluginManager::selectFirstSampleSource(const QString& sourceId, DeviceAPI *deviceAPI) { qDebug("PluginManager::selectFirstSampleSource by id: [%s]", qPrintable(sourceId)); @@ -410,12 +410,12 @@ int PluginManager::selectFirstSampleSource(const QString& sourceId) << " ser: " << m_sampleSourceSerial.toStdString().c_str() << " seq: " << m_sampleSourceSequence; - m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId, m_sampleSourceDevices[index].m_displayName); + m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId, m_sampleSourceDevices[index].m_displayName, deviceAPI); return index; } -int PluginManager::selectSampleSourceBySerialOrSequence(const QString& sourceId, const QString& sourceSerial, int sourceSequence) +int PluginManager::selectSampleSourceBySerialOrSequence(const QString& sourceId, const QString& sourceSerial, int sourceSequence, DeviceAPI *deviceAPI) { qDebug("PluginManager::selectSampleSourceBySequence by sequence: id: %s ser: %s seq: %d", qPrintable(sourceId), qPrintable(sourceSerial), sourceSequence); @@ -477,7 +477,7 @@ int PluginManager::selectSampleSourceBySerialOrSequence(const QString& sourceId, << " ser: " << qPrintable(m_sampleSourceSerial) << " seq: " << m_sampleSourceSequence; - m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId, m_sampleSourceDevices[index].m_displayName); + m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId, m_sampleSourceDevices[index].m_displayName, deviceAPI); return index; } diff --git a/sdrbase/plugin/pluginmanager.h b/sdrbase/plugin/pluginmanager.h index 0271aed9d..e66ffe644 100644 --- a/sdrbase/plugin/pluginmanager.h +++ b/sdrbase/plugin/pluginmanager.h @@ -20,6 +20,7 @@ class GLSpectrum; class SampleSink; class ThreadedSampleSink; class ChannelMarker; +class DeviceAPI; class SDRANGEL_API PluginManager : public QObject { Q_OBJECT @@ -58,7 +59,7 @@ public: void setInputGUI(QWidget* gui, const QString& sourceDisplayName); - void addSink(SampleSink* sink); +// void addSink(SampleSink* sink); void removeSink(SampleSink* sink); void addThreadedSink(ThreadedSampleSink* sink); void removeThreadedSink(ThreadedSampleSink* sink); @@ -90,9 +91,9 @@ public: void updateSampleSourceDevices(); void fillSampleSourceSelector(QComboBox* comboBox); - int selectSampleSourceByIndex(int index); - int selectFirstSampleSource(const QString& sourceId); - int selectSampleSourceBySerialOrSequence(const QString& sourceId, const QString& sourceSerial, int sourceSequence); + int selectSampleSourceByIndex(int index, DeviceAPI *deviceAPI); + int selectFirstSampleSource(const QString& sourceId, DeviceAPI *deviceAPI); + int selectSampleSourceBySerialOrSequence(const QString& sourceId, const QString& sourceSerial, int sourceSequence, DeviceAPI *deviceAPI); void populateChannelComboBox(QComboBox *channels); void createChannelInstance(int channelPluginIndex);