1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-06-25 05:25:27 -04:00

Multi device support: migrate device specific stuff outside plugin classes

This commit is contained in:
f4exb 2016-05-16 01:12:37 +02:00
parent a26174eb8b
commit be918a217b
40 changed files with 120 additions and 69 deletions

View File

@ -156,6 +156,8 @@ set(sdrbase_SOURCES
sdrbase/util/samplesourceserializer.cpp sdrbase/util/samplesourceserializer.cpp
sdrbase/util/simpleserializer.cpp sdrbase/util/simpleserializer.cpp
#sdrbase/util/spinlock.cpp #sdrbase/util/spinlock.cpp
sdrbase/device/deviceapi.cpp
) )
set(sdrbase_HEADERS set(sdrbase_HEADERS
@ -243,6 +245,8 @@ set(sdrbase_HEADERS
sdrbase/util/samplesourceserializer.h sdrbase/util/samplesourceserializer.h
sdrbase/util/simpleserializer.h sdrbase/util/simpleserializer.h
#sdrbase/util/spinlock.h #sdrbase/util/spinlock.h
sdrbase/device/deviceapi.h
) )
set(sdrbase_SOURCES set(sdrbase_SOURCES

View File

@ -22,16 +22,18 @@
#include "airspygui.h" #include "airspygui.h"
#include "ui_airspygui.h" #include "ui_airspygui.h"
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "gui/colormapper.h" #include "gui/colormapper.h"
#include "gui/glspectrum.h" #include "gui/glspectrum.h"
#include "dsp/dspengine.h" #include "dsp/dspengine.h"
#include "dsp/dspcommands.h" #include "dsp/dspcommands.h"
#include "dsp/filesink.h" #include "dsp/filesink.h"
AirspyGui::AirspyGui(PluginAPI* pluginAPI, QWidget* parent) : AirspyGui::AirspyGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::AirspyGui), ui(new Ui::AirspyGui),
m_pluginAPI(pluginAPI), m_pluginAPI(pluginAPI),
m_deviceAPI(deviceAPI),
m_settings(), m_settings(),
m_sampleSource(0), m_sampleSource(0),
m_lastEngineState((DSPDeviceEngine::State)-1) m_lastEngineState((DSPDeviceEngine::State)-1)
@ -55,7 +57,7 @@ AirspyGui::AirspyGui(PluginAPI* pluginAPI, QWidget* parent) :
char recFileNameCStr[30]; char recFileNameCStr[30];
sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID());
m_fileSink = new FileSink(std::string(recFileNameCStr)); 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); connect(m_pluginAPI->getDeviceOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection);
} }

View File

@ -25,6 +25,7 @@
#define AIRSPY_MAX_DEVICE (32) #define AIRSPY_MAX_DEVICE (32)
class PluginAPI; class PluginAPI;
class DeviceAPI;
class FileSink; class FileSink;
namespace Ui { namespace Ui {
@ -36,7 +37,7 @@ class AirspyGui : public QWidget, public PluginGUI {
Q_OBJECT Q_OBJECT
public: public:
explicit AirspyGui(PluginAPI* pluginAPI, QWidget* parent = NULL); explicit AirspyGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL);
virtual ~AirspyGui(); virtual ~AirspyGui();
void destroy(); void destroy();
@ -56,6 +57,7 @@ private:
Ui::AirspyGui* ui; Ui::AirspyGui* ui;
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
DeviceAPI* m_deviceAPI;
AirspySettings m_settings; AirspySettings m_settings;
QTimer m_updateTimer; QTimer m_updateTimer;
QTimer m_statusTimer; QTimer m_statusTimer;

View File

@ -117,7 +117,7 @@ PluginInterface::SampleSourceDevices AirspyPlugin::enumSampleSources()
return result; 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) if (!m_pluginAPI)
{ {
@ -126,7 +126,7 @@ PluginGUI* AirspyPlugin::createSampleSourcePluginGUI(const QString& sourceId, co
if(sourceId == m_deviceTypeID) if(sourceId == m_deviceTypeID)
{ {
AirspyGui* gui = new AirspyGui(m_pluginAPI); AirspyGui* gui = new AirspyGui(m_pluginAPI, deviceAPI);
m_pluginAPI->setInputGUI(gui, sourceDisplayName); m_pluginAPI->setInputGUI(gui, sourceDisplayName);
return gui; return gui;
} }

View File

@ -34,7 +34,7 @@ public:
void initPlugin(PluginAPI* pluginAPI); void initPlugin(PluginAPI* pluginAPI);
virtual SampleSourceDevices enumSampleSources(); 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; static const QString m_deviceTypeID;

View File

@ -21,6 +21,7 @@
#include "ui_bladerfgui.h" #include "ui_bladerfgui.h"
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "gui/colormapper.h" #include "gui/colormapper.h"
#include "gui/glspectrum.h" #include "gui/glspectrum.h"
#include "dsp/dspengine.h" #include "dsp/dspengine.h"
@ -28,10 +29,11 @@
#include "dsp/filesink.h" #include "dsp/filesink.h"
#include "bladerfgui.h" #include "bladerfgui.h"
BladerfGui::BladerfGui(PluginAPI* pluginAPI, QWidget* parent) : BladerfGui::BladerfGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::BladerfGui), ui(new Ui::BladerfGui),
m_pluginAPI(pluginAPI), m_pluginAPI(pluginAPI),
m_deviceAPI(deviceAPI),
m_settings(), m_settings(),
m_sampleSource(NULL), m_sampleSource(NULL),
m_sampleRate(0), m_sampleRate(0),
@ -65,7 +67,7 @@ BladerfGui::BladerfGui(PluginAPI* pluginAPI, QWidget* parent) :
char recFileNameCStr[30]; char recFileNameCStr[30];
sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID());
m_fileSink = new FileSink(std::string(recFileNameCStr)); 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); connect(m_pluginAPI->getDeviceOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection);
} }

View File

@ -23,6 +23,7 @@
#include "bladerfinput.h" #include "bladerfinput.h"
class PluginAPI; class PluginAPI;
class DeviceAPI;
class FileSink; class FileSink;
namespace Ui { namespace Ui {
@ -34,7 +35,7 @@ class BladerfGui : public QWidget, public PluginGUI {
Q_OBJECT Q_OBJECT
public: public:
explicit BladerfGui(PluginAPI* pluginAPI, QWidget* parent = NULL); explicit BladerfGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL);
virtual ~BladerfGui(); virtual ~BladerfGui();
void destroy(); void destroy();
@ -52,6 +53,7 @@ private:
Ui::BladerfGui* ui; Ui::BladerfGui* ui;
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
DeviceAPI* m_deviceAPI;
BladeRFSettings m_settings; BladeRFSettings m_settings;
QTimer m_updateTimer; QTimer m_updateTimer;
QTimer m_statusTimer; QTimer m_statusTimer;

View File

@ -75,7 +75,7 @@ PluginInterface::SampleSourceDevices BlderfPlugin::enumSampleSources()
return result; 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) if (!m_pluginAPI)
{ {
@ -84,7 +84,7 @@ PluginGUI* BlderfPlugin::createSampleSourcePluginGUI(const QString& sourceId, co
if(sourceId == m_deviceTypeID) if(sourceId == m_deviceTypeID)
{ {
BladerfGui* gui = new BladerfGui(m_pluginAPI); BladerfGui* gui = new BladerfGui(m_pluginAPI, deviceAPI);
m_pluginAPI->setInputGUI(gui, sourceDisplayName); m_pluginAPI->setInputGUI(gui, sourceDisplayName);
return gui; return gui;
} }

View File

@ -34,7 +34,7 @@ public:
void initPlugin(PluginAPI* pluginAPI); void initPlugin(PluginAPI* pluginAPI);
virtual SampleSourceDevices enumSampleSources(); 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; static const QString m_deviceTypeID;

View File

@ -18,6 +18,7 @@
#include "ui_fcdprogui.h" #include "ui_fcdprogui.h"
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "gui/colormapper.h" #include "gui/colormapper.h"
#include "gui/glspectrum.h" #include "gui/glspectrum.h"
#include "dsp/dspengine.h" #include "dsp/dspengine.h"
@ -26,10 +27,11 @@
#include "fcdprogui.h" #include "fcdprogui.h"
#include "fcdproconst.h" #include "fcdproconst.h"
FCDProGui::FCDProGui(PluginAPI* pluginAPI, QWidget* parent) : FCDProGui::FCDProGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::FCDProGui), ui(new Ui::FCDProGui),
m_pluginAPI(pluginAPI), m_pluginAPI(pluginAPI),
m_deviceAPI(deviceAPI),
m_settings(), m_settings(),
m_sampleSource(NULL), m_sampleSource(NULL),
m_lastEngineState((DSPDeviceEngine::State)-1) m_lastEngineState((DSPDeviceEngine::State)-1)
@ -146,7 +148,7 @@ FCDProGui::FCDProGui(PluginAPI* pluginAPI, QWidget* parent) :
char recFileNameCStr[30]; char recFileNameCStr[30];
sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID());
m_fileSink = new FileSink(std::string(recFileNameCStr)); 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); connect(m_pluginAPI->getDeviceOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection);
} }

View File

@ -23,6 +23,7 @@
#include "plugin/plugingui.h" #include "plugin/plugingui.h"
class PluginAPI; class PluginAPI;
class DeviceAPI;
class FileSink; class FileSink;
namespace Ui { namespace Ui {
@ -33,7 +34,7 @@ class FCDProGui : public QWidget, public PluginGUI {
Q_OBJECT Q_OBJECT
public: public:
explicit FCDProGui(PluginAPI* pluginAPI, QWidget* parent = NULL); explicit FCDProGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL);
virtual ~FCDProGui(); virtual ~FCDProGui();
void destroy(); void destroy();
@ -52,6 +53,7 @@ private:
Ui::FCDProGui* ui; Ui::FCDProGui* ui;
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
DeviceAPI* m_deviceAPI;
FCDProSettings m_settings; FCDProSettings m_settings;
QTimer m_updateTimer; QTimer m_updateTimer;
QTimer m_statusTimer; QTimer m_statusTimer;

View File

@ -74,11 +74,11 @@ PluginInterface::SampleSourceDevices FCDProPlugin::enumSampleSources()
return result; 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<Pro>::interfaceIID) if(sourceId == fcd_traits<Pro>::interfaceIID)
{ {
FCDProGui* gui = new FCDProGui(m_pluginAPI); FCDProGui* gui = new FCDProGui(m_pluginAPI, deviceAPI);
m_pluginAPI->setInputGUI(gui, sourceDisplayName); m_pluginAPI->setInputGUI(gui, sourceDisplayName);
return gui; return gui;
} }

View File

@ -18,7 +18,7 @@ public:
void initPlugin(PluginAPI* pluginAPI); void initPlugin(PluginAPI* pluginAPI);
virtual SampleSourceDevices enumSampleSources(); 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; static const QString m_deviceTypeID;

View File

@ -19,6 +19,7 @@
#include "ui_fcdproplusgui.h" #include "ui_fcdproplusgui.h"
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "gui/colormapper.h" #include "gui/colormapper.h"
#include "gui/glspectrum.h" #include "gui/glspectrum.h"
#include "dsp/dspengine.h" #include "dsp/dspengine.h"
@ -27,10 +28,11 @@
#include "fcdproplusgui.h" #include "fcdproplusgui.h"
#include "fcdproplusconst.h" #include "fcdproplusconst.h"
FCDProPlusGui::FCDProPlusGui(PluginAPI* pluginAPI, QWidget* parent) : FCDProPlusGui::FCDProPlusGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::FCDProPlusGui), ui(new Ui::FCDProPlusGui),
m_pluginAPI(pluginAPI), m_pluginAPI(pluginAPI),
m_deviceAPI(deviceAPI),
m_settings(), m_settings(),
m_sampleSource(NULL), m_sampleSource(NULL),
m_lastEngineState((DSPDeviceEngine::State)-1) m_lastEngineState((DSPDeviceEngine::State)-1)
@ -64,7 +66,7 @@ FCDProPlusGui::FCDProPlusGui(PluginAPI* pluginAPI, QWidget* parent) :
char recFileNameCStr[30]; char recFileNameCStr[30];
sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID());
m_fileSink = new FileSink(std::string(recFileNameCStr)); 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); connect(m_pluginAPI->getDeviceOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection);
} }

View File

@ -23,6 +23,7 @@
#include "plugin/plugingui.h" #include "plugin/plugingui.h"
class PluginAPI; class PluginAPI;
class DeviceAPI;
class FileSink; class FileSink;
namespace Ui { namespace Ui {
@ -33,7 +34,7 @@ class FCDProPlusGui : public QWidget, public PluginGUI {
Q_OBJECT Q_OBJECT
public: public:
explicit FCDProPlusGui(PluginAPI* pluginAPI, QWidget* parent = NULL); explicit FCDProPlusGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL);
virtual ~FCDProPlusGui(); virtual ~FCDProPlusGui();
void destroy(); void destroy();
@ -52,6 +53,7 @@ private:
Ui::FCDProPlusGui* ui; Ui::FCDProPlusGui* ui;
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
DeviceAPI* m_deviceAPI;
FCDProPlusSettings m_settings; FCDProPlusSettings m_settings;
QTimer m_updateTimer; QTimer m_updateTimer;
QTimer m_statusTimer; QTimer m_statusTimer;

View File

@ -74,11 +74,11 @@ PluginInterface::SampleSourceDevices FCDProPlusPlugin::enumSampleSources()
return result; 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<ProPlus>::interfaceIID) if(sourceId == fcd_traits<ProPlus>::interfaceIID)
{ {
FCDProPlusGui* gui = new FCDProPlusGui(m_pluginAPI); FCDProPlusGui* gui = new FCDProPlusGui(m_pluginAPI, deviceAPI);
m_pluginAPI->setInputGUI(gui, sourceDisplayName); m_pluginAPI->setInputGUI(gui, sourceDisplayName);
return gui; return gui;
} }

View File

@ -18,7 +18,7 @@ public:
void initPlugin(PluginAPI* pluginAPI); void initPlugin(PluginAPI* pluginAPI);
virtual SampleSourceDevices enumSampleSources(); 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; static const QString m_deviceTypeID;

View File

@ -33,10 +33,11 @@
#include "filesourcegui.h" #include "filesourcegui.h"
FileSourceGui::FileSourceGui(PluginAPI* pluginAPI, QWidget* parent) : FileSourceGui::FileSourceGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::FileSourceGui), ui(new Ui::FileSourceGui),
m_pluginAPI(pluginAPI), m_pluginAPI(pluginAPI),
m_deviceAPI(deviceAPI),
m_settings(), m_settings(),
m_sampleSource(NULL), m_sampleSource(NULL),
m_acquisition(false), m_acquisition(false),

View File

@ -23,6 +23,7 @@
#include "filesourceinput.h" #include "filesourceinput.h"
class PluginAPI; class PluginAPI;
class DeviceAPI;
namespace Ui { namespace Ui {
class FileSourceGui; class FileSourceGui;
@ -32,7 +33,7 @@ class FileSourceGui : public QWidget, public PluginGUI {
Q_OBJECT Q_OBJECT
public: public:
explicit FileSourceGui(PluginAPI* pluginAPI, QWidget* parent = NULL); explicit FileSourceGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL);
virtual ~FileSourceGui(); virtual ~FileSourceGui();
void destroy(); void destroy();
@ -50,6 +51,7 @@ private:
Ui::FileSourceGui* ui; Ui::FileSourceGui* ui;
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
DeviceAPI* m_deviceAPI;
FileSourceInput::Settings m_settings; FileSourceInput::Settings m_settings;
QTimer m_statusTimer; QTimer m_statusTimer;
std::vector<int> m_gains; std::vector<int> m_gains;

View File

@ -67,11 +67,11 @@ PluginInterface::SampleSourceDevices FileSourcePlugin::enumSampleSources()
return result; 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) if(sourceId == m_deviceTypeID)
{ {
FileSourceGui* gui = new FileSourceGui(m_pluginAPI); FileSourceGui* gui = new FileSourceGui(m_pluginAPI, deviceAPI);
m_pluginAPI->setInputGUI(gui, sourceDisplayName); m_pluginAPI->setInputGUI(gui, sourceDisplayName);
return gui; return gui;
} }

View File

@ -34,7 +34,7 @@ public:
void initPlugin(PluginAPI* pluginAPI); void initPlugin(PluginAPI* pluginAPI);
virtual SampleSourceDevices enumSampleSources(); 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; static const QString m_deviceTypeID;

View File

@ -20,6 +20,7 @@
#include <libhackrf/hackrf.h> #include <libhackrf/hackrf.h>
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "gui/colormapper.h" #include "gui/colormapper.h"
#include "gui/glspectrum.h" #include "gui/glspectrum.h"
#include "dsp/dspengine.h" #include "dsp/dspengine.h"
@ -28,10 +29,11 @@
#include "hackrfgui.h" #include "hackrfgui.h"
#include "ui_hackrfgui.h" #include "ui_hackrfgui.h"
HackRFGui::HackRFGui(PluginAPI* pluginAPI, QWidget* parent) : HackRFGui::HackRFGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::HackRFGui), ui(new Ui::HackRFGui),
m_pluginAPI(pluginAPI), m_pluginAPI(pluginAPI),
m_deviceAPI(deviceAPI),
m_settings(), m_settings(),
m_sampleSource(NULL), m_sampleSource(NULL),
m_lastEngineState((DSPDeviceEngine::State)-1) m_lastEngineState((DSPDeviceEngine::State)-1)
@ -56,7 +58,7 @@ HackRFGui::HackRFGui(PluginAPI* pluginAPI, QWidget* parent) :
char recFileNameCStr[30]; char recFileNameCStr[30];
sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID());
m_fileSink = new FileSink(std::string(recFileNameCStr)); 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); connect(m_pluginAPI->getDeviceOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection);
} }

View File

@ -25,6 +25,7 @@
#define HACKRF_MAX_DEVICE (32) #define HACKRF_MAX_DEVICE (32)
class PluginAPI; class PluginAPI;
class DeviceAPI;
class FileSink; class FileSink;
namespace Ui { namespace Ui {
@ -43,7 +44,7 @@ public:
HACKRF_IMGREJ_NB HACKRF_IMGREJ_NB
} HackRFImgRejValue; } HackRFImgRejValue;
explicit HackRFGui(PluginAPI* pluginAPI, QWidget* parent = NULL); explicit HackRFGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL);
virtual ~HackRFGui(); virtual ~HackRFGui();
void destroy(); void destroy();
@ -61,6 +62,7 @@ private:
Ui::HackRFGui* ui; Ui::HackRFGui* ui;
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
DeviceAPI* m_deviceAPI;
HackRFSettings m_settings; HackRFSettings m_settings;
QTimer m_updateTimer; QTimer m_updateTimer;
QTimer m_statusTimer; QTimer m_statusTimer;

View File

@ -112,7 +112,7 @@ PluginInterface::SampleSourceDevices HackRFPlugin::enumSampleSources()
return result; 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) if (!m_pluginAPI)
{ {
@ -121,7 +121,7 @@ PluginGUI* HackRFPlugin::createSampleSourcePluginGUI(const QString& sourceId, co
if(sourceId == m_deviceTypeID) if(sourceId == m_deviceTypeID)
{ {
HackRFGui* gui = new HackRFGui(m_pluginAPI); HackRFGui* gui = new HackRFGui(m_pluginAPI, deviceAPI);
m_pluginAPI->setInputGUI(gui, sourceDisplayName); m_pluginAPI->setInputGUI(gui, sourceDisplayName);
return gui; return gui;
} }

View File

@ -34,7 +34,7 @@ public:
void initPlugin(PluginAPI* pluginAPI); void initPlugin(PluginAPI* pluginAPI);
virtual SampleSourceDevices enumSampleSources(); 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; static const QString m_deviceTypeID;

View File

@ -20,16 +20,18 @@
#include "rtlsdrgui.h" #include "rtlsdrgui.h"
#include "ui_rtlsdrgui.h" #include "ui_rtlsdrgui.h"
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "gui/colormapper.h" #include "gui/colormapper.h"
#include "gui/glspectrum.h" #include "gui/glspectrum.h"
#include "dsp/dspengine.h" #include "dsp/dspengine.h"
#include "dsp/dspcommands.h" #include "dsp/dspcommands.h"
#include "dsp/filesink.h" #include "dsp/filesink.h"
RTLSDRGui::RTLSDRGui(PluginAPI* pluginAPI, QWidget* parent) : RTLSDRGui::RTLSDRGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::RTLSDRGui), ui(new Ui::RTLSDRGui),
m_pluginAPI(pluginAPI), m_pluginAPI(pluginAPI),
m_deviceAPI(deviceAPI),
m_settings(), m_settings(),
m_sampleSource(0), m_sampleSource(0),
m_lastEngineState((DSPDeviceEngine::State)-1) m_lastEngineState((DSPDeviceEngine::State)-1)
@ -58,7 +60,7 @@ RTLSDRGui::RTLSDRGui(PluginAPI* pluginAPI, QWidget* parent) :
char recFileNameCStr[30]; char recFileNameCStr[30];
sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID());
m_fileSink = new FileSink(std::string(recFileNameCStr)); 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); connect(m_pluginAPI->getDeviceOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection);
} }

View File

@ -22,6 +22,7 @@
#include "rtlsdrinput.h" #include "rtlsdrinput.h"
class PluginAPI; class PluginAPI;
class DeviceAPI;
class FileSink; class FileSink;
namespace Ui { namespace Ui {
@ -33,7 +34,7 @@ class RTLSDRGui : public QWidget, public PluginGUI {
Q_OBJECT Q_OBJECT
public: public:
explicit RTLSDRGui(PluginAPI* pluginAPI, QWidget* parent = NULL); explicit RTLSDRGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL);
virtual ~RTLSDRGui(); virtual ~RTLSDRGui();
void destroy(); void destroy();
@ -51,6 +52,7 @@ private:
Ui::RTLSDRGui* ui; Ui::RTLSDRGui* ui;
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
DeviceAPI* m_deviceAPI;
RTLSDRSettings m_settings; RTLSDRSettings m_settings;
QTimer m_updateTimer; QTimer m_updateTimer;
QTimer m_statusTimer; QTimer m_statusTimer;

View File

@ -59,10 +59,10 @@ PluginInterface::SampleSourceDevices RTLSDRPlugin::enumSampleSources()
return result; 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) { if(sourceId == m_deviceTypeID) {
RTLSDRGui* gui = new RTLSDRGui(m_pluginAPI); RTLSDRGui* gui = new RTLSDRGui(m_pluginAPI, deviceAPI);
m_pluginAPI->setInputGUI(gui, sourceDisplayName); m_pluginAPI->setInputGUI(gui, sourceDisplayName);
return gui; return gui;
} else { } else {

View File

@ -18,7 +18,7 @@ public:
void initPlugin(PluginAPI* pluginAPI); void initPlugin(PluginAPI* pluginAPI);
virtual SampleSourceDevices enumSampleSources(); 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; static const QString m_deviceTypeID;

View File

@ -31,6 +31,7 @@
#include "ui_sdrdaemongui.h" #include "ui_sdrdaemongui.h"
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "gui/colormapper.h" #include "gui/colormapper.h"
#include "gui/glspectrum.h" #include "gui/glspectrum.h"
#include "dsp/dspengine.h" #include "dsp/dspengine.h"
@ -41,10 +42,11 @@
#include "sdrdaemongui.h" #include "sdrdaemongui.h"
SDRdaemonGui::SDRdaemonGui(PluginAPI* pluginAPI, QWidget* parent) : SDRdaemonGui::SDRdaemonGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::SDRdaemonGui), ui(new Ui::SDRdaemonGui),
m_pluginAPI(pluginAPI), m_pluginAPI(pluginAPI),
m_deviceAPI(deviceAPI),
m_sampleSource(NULL), m_sampleSource(NULL),
m_acquisition(false), m_acquisition(false),
m_lastEngineState((DSPDeviceEngine::State)-1), m_lastEngineState((DSPDeviceEngine::State)-1),
@ -99,7 +101,7 @@ SDRdaemonGui::SDRdaemonGui(PluginAPI* pluginAPI, QWidget* parent) :
char recFileNameCStr[30]; char recFileNameCStr[30];
sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID()); sprintf(recFileNameCStr, "test_%d.sdriq", m_pluginAPI->getDeviceUID());
m_fileSink = new FileSink(std::string(recFileNameCStr)); 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); connect(m_pluginAPI->getDeviceOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection);
} }

View File

@ -24,6 +24,7 @@
#include "sdrdaemoninput.h" #include "sdrdaemoninput.h"
class PluginAPI; class PluginAPI;
class DeviceAPI;
class FileSink; class FileSink;
namespace Ui { namespace Ui {
@ -34,7 +35,7 @@ class SDRdaemonGui : public QWidget, public PluginGUI {
Q_OBJECT Q_OBJECT
public: public:
explicit SDRdaemonGui(PluginAPI* pluginAPI, QWidget* parent = NULL); explicit SDRdaemonGui(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL);
virtual ~SDRdaemonGui(); virtual ~SDRdaemonGui();
void destroy(); void destroy();
@ -52,6 +53,7 @@ private:
Ui::SDRdaemonGui* ui; Ui::SDRdaemonGui* ui;
PluginAPI* m_pluginAPI; PluginAPI* m_pluginAPI;
DeviceAPI* m_deviceAPI;
QTimer m_updateTimer; QTimer m_updateTimer;
QTimer m_statusTimer; QTimer m_statusTimer;
SampleSource* m_sampleSource; SampleSource* m_sampleSource;

View File

@ -67,11 +67,11 @@ PluginInterface::SampleSourceDevices SDRdaemonPlugin::enumSampleSources()
return result; 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) if(sourceId == m_deviceTypeID)
{ {
SDRdaemonGui* gui = new SDRdaemonGui(m_pluginAPI); SDRdaemonGui* gui = new SDRdaemonGui(m_pluginAPI, deviceAPI);
m_pluginAPI->setInputGUI(gui, sourceDisplayName); m_pluginAPI->setInputGUI(gui, sourceDisplayName);
return gui; return gui;
} }

View File

@ -34,7 +34,7 @@ public:
void initPlugin(PluginAPI* pluginAPI); void initPlugin(PluginAPI* pluginAPI);
virtual SampleSourceDevices enumSampleSources(); 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; static const QString m_deviceTypeID;

View File

@ -43,6 +43,7 @@
#include "dsp/dspcommands.h" #include "dsp/dspcommands.h"
#include "plugin/plugingui.h" #include "plugin/plugingui.h"
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "plugin/plugingui.h" #include "plugin/plugingui.h"
#include "gui/glspectrum.h" #include "gui/glspectrum.h"
@ -142,7 +143,7 @@ MainWindow::MainWindow(QWidget* parent) :
qDebug() << "MainWindow::MainWindow: select SampleSource from settings..."; qDebug() << "MainWindow::MainWindow: select SampleSource from settings...";
int sampleSourceIndex = m_settings.getSourceIndex(); 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) if (sampleSourceIndex >= 0)
{ {
@ -195,8 +196,13 @@ void MainWindow::addDevice()
m_deviceUIs.push_back(new DeviceUISet(m_masterTimer)); m_deviceUIs.push_back(new DeviceUISet(m_masterTimer));
m_deviceUIs.back()->m_deviceEngine = dspDeviceEngine; 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); PluginManager *pluginManager = new PluginManager(this, m_deviceUIs.size()-1, dspDeviceEngine, m_deviceUIs.back()->m_spectrum);
m_deviceUIs.back()->m_pluginManager = pluginManager; m_deviceUIs.back()->m_pluginManager = pluginManager;
pluginManager->loadPlugins(); pluginManager->loadPlugins();
m_deviceUIs.back()->m_samplingDeviceControl->setPluginManager(pluginManager); m_deviceUIs.back()->m_samplingDeviceControl->setPluginManager(pluginManager);
@ -229,6 +235,7 @@ void MainWindow::removeLastDevice()
// On the other hand freeAll() must be executed only once // On the other hand freeAll() must be executed only once
delete m_deviceUIs.back()->m_pluginManager; delete m_deviceUIs.back()->m_pluginManager;
//m_deviceUIs.back()->m_pluginManager->freeAll(); //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(); lastDeviceEngine->stop();
m_dspEngine->removeLastDeviceEngine(); m_dspEngine->removeLastDeviceEngine();
@ -664,7 +671,7 @@ void MainWindow::on_sampleSource_currentIndexChanged(int index)
{ {
DeviceUISet *deviceUI = m_deviceUIs[currentSourceTabIndex]; DeviceUISet *deviceUI = m_deviceUIs[currentSourceTabIndex];
deviceUI->m_pluginManager->saveSourceSettings(m_settings.getWorkingPreset()); 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()); m_settings.setSourceIndex(deviceUI->m_samplingDeviceControl->getDeviceSelector()->currentIndex());
deviceUI->m_pluginManager->loadSourceSettings(m_settings.getWorkingPreset()); deviceUI->m_pluginManager->loadSourceSettings(m_settings.getWorkingPreset());

View File

@ -42,6 +42,7 @@ class PluginAPI;
class PluginGUI; class PluginGUI;
class ChannelMarker; class ChannelMarker;
class PluginManager; class PluginManager;
class DeviceAPI;
class PluginInterface; class PluginInterface;
namespace Ui { namespace Ui {
@ -61,6 +62,7 @@ public:
SamplingDeviceControl *m_samplingDeviceControl; SamplingDeviceControl *m_samplingDeviceControl;
DSPDeviceEngine *m_deviceEngine; DSPDeviceEngine *m_deviceEngine;
PluginManager *m_pluginManager; PluginManager *m_pluginManager;
DeviceAPI *m_deviceAPI;
DeviceUISet(QTimer& timer); DeviceUISet(QTimer& timer);
~DeviceUISet(); ~DeviceUISet();

View File

@ -59,10 +59,10 @@ void PluginAPI::registerSampleSource(const QString& sourceName, PluginInterface*
m_pluginManager->registerSampleSource(sourceName, plugin); m_pluginManager->registerSampleSource(sourceName, plugin);
} }
void PluginAPI::addSink(SampleSink* sink) //void PluginAPI::addSink(SampleSink* sink)
{ //{
m_pluginManager->addSink(sink); // m_pluginManager->addSink(sink);
} //}
void PluginAPI::removeSink(SampleSink* sink) void PluginAPI::removeSink(SampleSink* sink)
{ {

View File

@ -41,7 +41,7 @@ public:
void registerSampleSource(const QString& sourceName, PluginInterface* plugin); void registerSampleSource(const QString& sourceName, PluginInterface* plugin);
// Device engine stuff // 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 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 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 setSource(SampleSource* source); //!< Set device engine sample source type

View File

@ -15,6 +15,7 @@ struct PluginDescriptor {
}; };
class PluginAPI; class PluginAPI;
class DeviceAPI;
class PluginGUI; class PluginGUI;
class PluginInterface { class PluginInterface {
@ -46,7 +47,12 @@ public:
virtual PluginGUI* createChannel(const QString& channelName) { return 0; } virtual PluginGUI* createChannel(const QString& channelName) { return 0; }
virtual SampleSourceDevices enumSampleSources() { return SampleSourceDevices(); } 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"); Q_DECLARE_INTERFACE(PluginInterface, "SDRangel.PluginInterface/0.1");

View File

@ -106,10 +106,10 @@ void PluginManager::setInputGUI(QWidget* gui, const QString& sourceDisplayName)
m_mainWindow->setInputGUI(m_deviceTabIndex, gui, sourceDisplayName); m_mainWindow->setInputGUI(m_deviceTabIndex, gui, sourceDisplayName);
} }
void PluginManager::addSink(SampleSink* sink) //void PluginManager::addSink(SampleSink* sink)
{ //{
m_dspDeviceEngine->addSink(sink); // m_dspDeviceEngine->addSink(sink);
} //}
void PluginManager::removeSink(SampleSink* 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); qDebug("PluginManager::selectSampleSourceByIndex: index: %d", index);
@ -356,13 +356,13 @@ int PluginManager::selectSampleSourceByIndex(int index)
<< " ser: " << m_sampleSourceSerial.toStdString().c_str() << " ser: " << m_sampleSourceSerial.toStdString().c_str()
<< " seq: " << m_sampleSourceSequence; << " 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); m_dspDeviceEngine->setSourceSequence(m_sampleSourceSequence);
return index; return index;
} }
int PluginManager::selectFirstSampleSource(const QString& sourceId) int PluginManager::selectFirstSampleSource(const QString& sourceId, DeviceAPI *deviceAPI)
{ {
qDebug("PluginManager::selectFirstSampleSource by id: [%s]", qPrintable(sourceId)); qDebug("PluginManager::selectFirstSampleSource by id: [%s]", qPrintable(sourceId));
@ -410,12 +410,12 @@ int PluginManager::selectFirstSampleSource(const QString& sourceId)
<< " ser: " << m_sampleSourceSerial.toStdString().c_str() << " ser: " << m_sampleSourceSerial.toStdString().c_str()
<< " seq: " << m_sampleSourceSequence; << " 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; 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); 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) << " ser: " << qPrintable(m_sampleSourceSerial)
<< " seq: " << m_sampleSourceSequence; << " 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; return index;
} }

View File

@ -20,6 +20,7 @@ class GLSpectrum;
class SampleSink; class SampleSink;
class ThreadedSampleSink; class ThreadedSampleSink;
class ChannelMarker; class ChannelMarker;
class DeviceAPI;
class SDRANGEL_API PluginManager : public QObject { class SDRANGEL_API PluginManager : public QObject {
Q_OBJECT Q_OBJECT
@ -58,7 +59,7 @@ public:
void setInputGUI(QWidget* gui, const QString& sourceDisplayName); void setInputGUI(QWidget* gui, const QString& sourceDisplayName);
void addSink(SampleSink* sink); // void addSink(SampleSink* sink);
void removeSink(SampleSink* sink); void removeSink(SampleSink* sink);
void addThreadedSink(ThreadedSampleSink* sink); void addThreadedSink(ThreadedSampleSink* sink);
void removeThreadedSink(ThreadedSampleSink* sink); void removeThreadedSink(ThreadedSampleSink* sink);
@ -90,9 +91,9 @@ public:
void updateSampleSourceDevices(); void updateSampleSourceDevices();
void fillSampleSourceSelector(QComboBox* comboBox); void fillSampleSourceSelector(QComboBox* comboBox);
int selectSampleSourceByIndex(int index); int selectSampleSourceByIndex(int index, DeviceAPI *deviceAPI);
int selectFirstSampleSource(const QString& sourceId); int selectFirstSampleSource(const QString& sourceId, DeviceAPI *deviceAPI);
int selectSampleSourceBySerialOrSequence(const QString& sourceId, const QString& sourceSerial, int sourceSequence); int selectSampleSourceBySerialOrSequence(const QString& sourceId, const QString& sourceSerial, int sourceSequence, DeviceAPI *deviceAPI);
void populateChannelComboBox(QComboBox *channels); void populateChannelComboBox(QComboBox *channels);
void createChannelInstance(int channelPluginIndex); void createChannelInstance(int channelPluginIndex);