1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-09-05 14:47:50 -04:00

Multi device support: moved setInputGUI method from plugin API and manager classes to device API class

This commit is contained in:
f4exb 2016-05-16 16:02:55 +02:00
parent 6747a1cae7
commit 500e809cba
15 changed files with 47 additions and 29 deletions

View File

@ -21,6 +21,7 @@
#include "airspygui.h" #include "airspygui.h"
#include "airspyplugin.h" #include "airspyplugin.h"
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "util/simpleserializer.h" #include "util/simpleserializer.h"
const PluginDescriptor AirspyPlugin::m_pluginDescriptor = { const PluginDescriptor AirspyPlugin::m_pluginDescriptor = {
@ -127,7 +128,7 @@ PluginGUI* AirspyPlugin::createSampleSourcePluginGUI(const QString& sourceId, co
if(sourceId == m_deviceTypeID) if(sourceId == m_deviceTypeID)
{ {
AirspyGui* gui = new AirspyGui(m_pluginAPI, deviceAPI); AirspyGui* gui = new AirspyGui(m_pluginAPI, deviceAPI);
m_pluginAPI->setInputGUI(gui, sourceDisplayName); deviceAPI->setInputGUI(gui, sourceDisplayName);
return gui; return gui;
} }
else else

View File

@ -18,6 +18,7 @@
#include <QAction> #include <QAction>
#include <libbladeRF.h> #include <libbladeRF.h>
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "util/simpleserializer.h" #include "util/simpleserializer.h"
#include "bladerfgui.h" #include "bladerfgui.h"
#include "bladerfplugin.h" #include "bladerfplugin.h"
@ -85,7 +86,7 @@ PluginGUI* BlderfPlugin::createSampleSourcePluginGUI(const QString& sourceId, co
if(sourceId == m_deviceTypeID) if(sourceId == m_deviceTypeID)
{ {
BladerfGui* gui = new BladerfGui(m_pluginAPI, deviceAPI); BladerfGui* gui = new BladerfGui(m_pluginAPI, deviceAPI);
m_pluginAPI->setInputGUI(gui, sourceDisplayName); deviceAPI->setInputGUI(gui, sourceDisplayName);
return gui; return gui;
} }
else else

View File

@ -17,6 +17,7 @@
#include <QtPlugin> #include <QtPlugin>
#include <QAction> #include <QAction>
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "util/simpleserializer.h" #include "util/simpleserializer.h"
#include "fcdproplugin.h" #include "fcdproplugin.h"
#include "fcdprogui.h" #include "fcdprogui.h"
@ -79,7 +80,7 @@ PluginGUI* FCDProPlugin::createSampleSourcePluginGUI(const QString& sourceId, co
if(sourceId == fcd_traits<Pro>::interfaceIID) if(sourceId == fcd_traits<Pro>::interfaceIID)
{ {
FCDProGui* gui = new FCDProGui(m_pluginAPI, deviceAPI); FCDProGui* gui = new FCDProGui(m_pluginAPI, deviceAPI);
m_pluginAPI->setInputGUI(gui, sourceDisplayName); deviceAPI->setInputGUI(gui, sourceDisplayName);
return gui; return gui;
} }
else else

View File

@ -17,6 +17,7 @@
#include <QtPlugin> #include <QtPlugin>
#include <QAction> #include <QAction>
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "util/simpleserializer.h" #include "util/simpleserializer.h"
#include "fcdproplusplugin.h" #include "fcdproplusplugin.h"
#include "fcdproplusgui.h" #include "fcdproplusgui.h"
@ -79,7 +80,7 @@ PluginGUI* FCDProPlusPlugin::createSampleSourcePluginGUI(const QString& sourceId
if(sourceId == fcd_traits<ProPlus>::interfaceIID) if(sourceId == fcd_traits<ProPlus>::interfaceIID)
{ {
FCDProPlusGui* gui = new FCDProPlusGui(m_pluginAPI, deviceAPI); FCDProPlusGui* gui = new FCDProPlusGui(m_pluginAPI, deviceAPI);
m_pluginAPI->setInputGUI(gui, sourceDisplayName); deviceAPI->setInputGUI(gui, sourceDisplayName);
return gui; return gui;
} }
else else

View File

@ -17,6 +17,7 @@
#include <QtPlugin> #include <QtPlugin>
#include <QAction> #include <QAction>
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "util/simpleserializer.h" #include "util/simpleserializer.h"
#include "filesourcegui.h" #include "filesourcegui.h"
@ -72,7 +73,7 @@ PluginGUI* FileSourcePlugin::createSampleSourcePluginGUI(const QString& sourceId
if(sourceId == m_deviceTypeID) if(sourceId == m_deviceTypeID)
{ {
FileSourceGui* gui = new FileSourceGui(m_pluginAPI, deviceAPI); FileSourceGui* gui = new FileSourceGui(m_pluginAPI, deviceAPI);
m_pluginAPI->setInputGUI(gui, sourceDisplayName); deviceAPI->setInputGUI(gui, sourceDisplayName);
return gui; return gui;
} }
else else

View File

@ -22,6 +22,7 @@
#include "hackrfgui.h" #include "hackrfgui.h"
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "util/simpleserializer.h" #include "util/simpleserializer.h"
const PluginDescriptor HackRFPlugin::m_pluginDescriptor = { const PluginDescriptor HackRFPlugin::m_pluginDescriptor = {
@ -122,7 +123,7 @@ PluginGUI* HackRFPlugin::createSampleSourcePluginGUI(const QString& sourceId, co
if(sourceId == m_deviceTypeID) if(sourceId == m_deviceTypeID)
{ {
HackRFGui* gui = new HackRFGui(m_pluginAPI, deviceAPI); HackRFGui* gui = new HackRFGui(m_pluginAPI, deviceAPI);
m_pluginAPI->setInputGUI(gui, sourceDisplayName); deviceAPI->setInputGUI(gui, sourceDisplayName);
return gui; return gui;
} }
else else

View File

@ -2,6 +2,7 @@
#include <QAction> #include <QAction>
#include <rtl-sdr.h> #include <rtl-sdr.h>
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "util/simpleserializer.h" #include "util/simpleserializer.h"
#include "rtlsdrplugin.h" #include "rtlsdrplugin.h"
#include "rtlsdrgui.h" #include "rtlsdrgui.h"
@ -63,7 +64,7 @@ PluginGUI* RTLSDRPlugin::createSampleSourcePluginGUI(const QString& sourceId, co
{ {
if(sourceId == m_deviceTypeID) { if(sourceId == m_deviceTypeID) {
RTLSDRGui* gui = new RTLSDRGui(m_pluginAPI, deviceAPI); RTLSDRGui* gui = new RTLSDRGui(m_pluginAPI, deviceAPI);
m_pluginAPI->setInputGUI(gui, sourceDisplayName); deviceAPI->setInputGUI(gui, sourceDisplayName);
return gui; return gui;
} else { } else {
return NULL; return NULL;

View File

@ -17,6 +17,7 @@
#include <QtPlugin> #include <QtPlugin>
#include <QAction> #include <QAction>
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "device/deviceapi.h"
#include "util/simpleserializer.h" #include "util/simpleserializer.h"
#include "sdrdaemongui.h" #include "sdrdaemongui.h"
@ -72,7 +73,7 @@ PluginGUI* SDRdaemonPlugin::createSampleSourcePluginGUI(const QString& sourceId,
if(sourceId == m_deviceTypeID) if(sourceId == m_deviceTypeID)
{ {
SDRdaemonGui* gui = new SDRdaemonGui(m_pluginAPI, deviceAPI); SDRdaemonGui* gui = new SDRdaemonGui(m_pluginAPI, deviceAPI);
m_pluginAPI->setInputGUI(gui, sourceDisplayName); deviceAPI->setInputGUI(gui, sourceDisplayName);
return gui; return gui;
} }
else else

View File

@ -17,8 +17,15 @@
#include "device/deviceapi.h" #include "device/deviceapi.h"
#include "gui/glspectrum.h" #include "gui/glspectrum.h"
#include "gui/channelwindow.h" #include "gui/channelwindow.h"
#include "mainwindow.h"
DeviceAPI::DeviceAPI(DSPDeviceEngine *deviceEngine, GLSpectrum *glSpectrum, ChannelWindow *channelWindow) : DeviceAPI::DeviceAPI(MainWindow *mainWindow,
int deviceTabIndex,
DSPDeviceEngine *deviceEngine,
GLSpectrum *glSpectrum,
ChannelWindow *channelWindow) :
m_mainWindow(mainWindow),
m_deviceTabIndex(deviceTabIndex),
m_deviceEngine(deviceEngine), m_deviceEngine(deviceEngine),
m_spectrum(glSpectrum), m_spectrum(glSpectrum),
m_channelWindow(channelWindow) m_channelWindow(channelWindow)
@ -124,3 +131,7 @@ void DeviceAPI::addRollupWidget(QWidget *widget)
m_channelWindow->addRollupWidget(widget); m_channelWindow->addRollupWidget(widget);
} }
void DeviceAPI::setInputGUI(QWidget* inputGUI, const QString& sourceDisplayName)
{
m_mainWindow->setInputGUI(m_deviceTabIndex, inputGUI, sourceDisplayName);
}

View File

@ -55,6 +55,7 @@ public:
MessageQueue *getDeviceInputMessageQueue(); MessageQueue *getDeviceInputMessageQueue();
MessageQueue *getDeviceOutputMessageQueue(); MessageQueue *getDeviceOutputMessageQueue();
void configureCorrections(bool dcOffsetCorrection, bool iqImbalanceCorrection); //!< Configure current device engine DSP corrections void configureCorrections(bool dcOffsetCorrection, bool iqImbalanceCorrection); //!< Configure current device engine DSP corrections
void setSourceSequence(int sourceSequence); void setSourceSequence(int sourceSequence);
// device related stuff // device related stuff
@ -62,11 +63,18 @@ public:
void addChannelMarker(ChannelMarker* channelMarker); //!< Add channel marker to spectrum void addChannelMarker(ChannelMarker* channelMarker); //!< Add channel marker to spectrum
ChannelWindow *getChannelWindow(); //!< Direct channel window getter ChannelWindow *getChannelWindow(); //!< Direct channel window getter
void addRollupWidget(QWidget *widget); //!< Add rollup widget to channel window void addRollupWidget(QWidget *widget); //!< Add rollup widget to channel window
void setInputGUI(QWidget* inputGUI, const QString& sourceDisplayName);
protected: protected:
DeviceAPI(DSPDeviceEngine *deviceEngine, GLSpectrum *glSpectrum, ChannelWindow *channelWindow); DeviceAPI(MainWindow *mainWindow,
int deviceTabIndex,
DSPDeviceEngine *deviceEngine,
GLSpectrum *glSpectrum,
ChannelWindow *channelWindow);
~DeviceAPI(); ~DeviceAPI();
MainWindow *m_mainWindow;
int m_deviceTabIndex;
DSPDeviceEngine *m_deviceEngine; DSPDeviceEngine *m_deviceEngine;
GLSpectrum *m_spectrum; GLSpectrum *m_spectrum;
ChannelWindow *m_channelWindow; ChannelWindow *m_channelWindow;

View File

@ -198,7 +198,7 @@ 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_channelWindow); DeviceAPI *deviceAPI = new DeviceAPI(this, m_deviceUIs.size()-1, dspDeviceEngine, m_deviceUIs.back()->m_spectrum, m_deviceUIs.back()->m_channelWindow);
m_deviceUIs.back()->m_deviceAPI = deviceAPI; m_deviceUIs.back()->m_deviceAPI = deviceAPI;
// TODO: do not create one plugin manager per device. Use device API instead // TODO: do not create one plugin manager per device. Use device API instead

View File

@ -8,11 +8,6 @@ MessageQueue* PluginAPI::getMainWindowMessageQueue()
return m_mainWindow->getInputMessageQueue(); return m_mainWindow->getInputMessageQueue();
} }
void PluginAPI::setInputGUI(QWidget* inputGUI, const QString& sourceDisplayName)
{
m_pluginManager->setInputGUI(inputGUI, sourceDisplayName);
}
void PluginAPI::registerChannel(const QString& channelName, PluginInterface* plugin) void PluginAPI::registerChannel(const QString& channelName, PluginInterface* plugin)
{ {
m_pluginManager->registerChannel(channelName, plugin); m_pluginManager->registerChannel(channelName, plugin);

View File

@ -18,7 +18,6 @@ class SDRANGEL_API PluginAPI : public QObject {
public: public:
// MainWindow access // MainWindow access
MessageQueue* getMainWindowMessageQueue(); MessageQueue* getMainWindowMessageQueue();
void setInputGUI(QWidget* inputGUI, const QString& sourceDisplayName);
// Channel stuff // Channel stuff
void registerChannel(const QString& channelName, PluginInterface* plugin); void registerChannel(const QString& channelName, PluginInterface* plugin);

View File

@ -85,12 +85,6 @@ void PluginManager::registerSampleSource(const QString& sourceName, PluginInterf
m_sampleSourceRegistrations.append(SampleSourceRegistration(sourceName, plugin)); m_sampleSourceRegistrations.append(SampleSourceRegistration(sourceName, plugin));
} }
void PluginManager::setInputGUI(QWidget* gui, const QString& sourceDisplayName)
{
//m_mainWindow->setInputGUI(gui);
m_mainWindow->setInputGUI(m_deviceTabIndex, gui, sourceDisplayName);
}
void PluginManager::loadSettings(const Preset* preset, DeviceAPI *deviceAPI) void PluginManager::loadSettings(const Preset* preset, DeviceAPI *deviceAPI)
{ {
fprintf(stderr, "PluginManager::loadSettings: Loading preset [%s | %s]\n", qPrintable(preset->getGroup()), qPrintable(preset->getDescription())); fprintf(stderr, "PluginManager::loadSettings: Loading preset [%s | %s]\n", qPrintable(preset->getGroup()), qPrintable(preset->getDescription()));
@ -321,7 +315,8 @@ int PluginManager::selectSampleSourceByIndex(int index, DeviceAPI *deviceAPI)
<< " 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, deviceAPI); PluginGUI *pluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId, m_sampleSourceDevices[index].m_displayName, deviceAPI);
m_sampleSourcePluginGUI = pluginGUI;
deviceAPI->setSourceSequence(m_sampleSourceSequence); deviceAPI->setSourceSequence(m_sampleSourceSequence);
return index; return index;
@ -375,7 +370,9 @@ int PluginManager::selectFirstSampleSource(const QString& sourceId, DeviceAPI *d
<< " 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, deviceAPI); PluginGUI *pluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId, m_sampleSourceDevices[index].m_displayName, deviceAPI);
m_sampleSourcePluginGUI = pluginGUI;
deviceAPI->setSourceSequence(m_sampleSourceSequence);
return index; return index;
} }
@ -442,7 +439,9 @@ 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, deviceAPI); PluginGUI *pluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId, m_sampleSourceDevices[index].m_displayName, deviceAPI);
m_sampleSourcePluginGUI = pluginGUI;
deviceAPI->setSourceSequence(m_sampleSourceSequence);
return index; return index;
} }

View File

@ -47,8 +47,6 @@ public:
void removeChannelInstance(PluginGUI* pluginGUI); void removeChannelInstance(PluginGUI* pluginGUI);
void registerSampleSource(const QString& sourceName, PluginInterface* plugin); void registerSampleSource(const QString& sourceName, PluginInterface* plugin);
void setInputGUI(QWidget* gui, const QString& sourceDisplayName);
void loadSettings(const Preset* preset, DeviceAPI *deviceAPI); void loadSettings(const Preset* preset, DeviceAPI *deviceAPI);
void loadSourceSettings(const Preset* preset); void loadSourceSettings(const Preset* preset);
void saveSettings(Preset* preset); void saveSettings(Preset* preset);