diff --git a/Readme.md b/Readme.md
index 7ac085990..60f53a2c9 100644
--- a/Readme.md
+++ b/Readme.md
@@ -182,6 +182,7 @@ Assuming Debian Jessie is used:
- Many other little things...
To Do
+ - Specialize plugins into channel and sample source plugins since both have almost complete different requirements and only little in common
- Enhance presets management (Edit, Move, Import/Export from/to human readable format like JSON).
- Allow arbitrary sample rate for channelizers and demodulators (not multiple of 48 kHz). Prerequisite for polyphase channelizer
- Implement polyphase channelizer
diff --git a/include-gpl/plugin/pluginmanager.h b/include-gpl/plugin/pluginmanager.h
index ce693a313..3fd16d173 100644
--- a/include-gpl/plugin/pluginmanager.h
+++ b/include-gpl/plugin/pluginmanager.h
@@ -23,12 +23,12 @@ public:
{
QString filename;
QPluginLoader* loader;
- PluginInterface* plugin;
+ PluginInterface* pluginInterface;
Plugin(const QString& _filename, QPluginLoader* pluginLoader, PluginInterface* _plugin) :
filename(_filename),
loader(pluginLoader),
- plugin(_plugin)
+ pluginInterface(_plugin)
{ }
};
@@ -137,7 +137,7 @@ private:
static inline bool operator<(const PluginManager::Plugin& a, const PluginManager::Plugin& b)
{
- return a.plugin->getPluginDescriptor().displayedName < b.plugin->getPluginDescriptor().displayedName;
+ return a.pluginInterface->getPluginDescriptor().displayedName < b.pluginInterface->getPluginDescriptor().displayedName;
}
#endif // INCLUDE_PLUGINMANAGER_H
diff --git a/include/plugin/plugininterface.h b/include/plugin/plugininterface.h
index 39aa454b1..4bb3393d6 100644
--- a/include/plugin/plugininterface.h
+++ b/include/plugin/plugininterface.h
@@ -46,7 +46,7 @@ public:
virtual PluginGUI* createChannel(const QString& channelName) { return 0; }
virtual SampleSourceDevices enumSampleSources() { return SampleSourceDevices(); }
- virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceSerial, int sourceSequence) { return 0; }
+ virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId) { return 0; }
};
Q_DECLARE_INTERFACE(PluginInterface, "de.maintech.SDRangelove.PluginInterface/0.1");
diff --git a/plugins/samplesource/fcdpro/fcdproplugin.cpp b/plugins/samplesource/fcdpro/fcdproplugin.cpp
index 5100060d1..c7f53acf1 100644
--- a/plugins/samplesource/fcdpro/fcdproplugin.cpp
+++ b/plugins/samplesource/fcdpro/fcdproplugin.cpp
@@ -74,9 +74,9 @@ PluginInterface::SampleSourceDevices FCDProPlugin::enumSampleSources()
return result;
}
-PluginGUI* FCDProPlugin::createSampleSourcePluginGUI(const QString& sourceName, const QByteArray& address)
+PluginGUI* FCDProPlugin::createSampleSourcePluginGUI(const QString& sourceId)
{
- if(sourceName == fcd_traits::interfaceIID)
+ if(sourceId == fcd_traits::interfaceIID)
{
FCDProGui* gui = new FCDProGui(m_pluginAPI);
m_pluginAPI->setInputGUI(gui);
diff --git a/plugins/samplesource/fcdpro/fcdproplugin.h b/plugins/samplesource/fcdpro/fcdproplugin.h
index 5e999db8c..16864caa4 100644
--- a/plugins/samplesource/fcdpro/fcdproplugin.h
+++ b/plugins/samplesource/fcdpro/fcdproplugin.h
@@ -17,8 +17,8 @@ public:
const PluginDescriptor& getPluginDescriptor() const;
void initPlugin(PluginAPI* pluginAPI);
- SampleSourceDevices enumSampleSources();
- PluginGUI* createSampleSourcePluginGUI(const QString& sourceName, const QByteArray& address);
+ virtual SampleSourceDevices enumSampleSources();
+ virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId);
static const QString m_deviceTypeID;
diff --git a/plugins/samplesource/filesource/filesourceplugin.cpp b/plugins/samplesource/filesource/filesourceplugin.cpp
index 493bbd1c5..8259dd982 100644
--- a/plugins/samplesource/filesource/filesourceplugin.cpp
+++ b/plugins/samplesource/filesource/filesourceplugin.cpp
@@ -69,9 +69,9 @@ PluginInterface::SampleSourceDevices FileSourcePlugin::enumSampleSources()
return result;
}
-PluginGUI* FileSourcePlugin::createSampleSourcePluginGUI(const QString& sourceName, const QByteArray& address)
+PluginGUI* FileSourcePlugin::createSampleSourcePluginGUI(const QString& sourceId)
{
- if(sourceName == "org.osmocom.sdr.samplesource.filesource") {
+ if(sourceId == "org.osmocom.sdr.samplesource.filesource") {
FileSourceGui* gui = new FileSourceGui(m_pluginAPI);
m_pluginAPI->setInputGUI(gui);
return gui;
diff --git a/plugins/samplesource/filesource/filesourceplugin.h b/plugins/samplesource/filesource/filesourceplugin.h
index 666ec930c..086c79ce5 100644
--- a/plugins/samplesource/filesource/filesourceplugin.h
+++ b/plugins/samplesource/filesource/filesourceplugin.h
@@ -31,8 +31,8 @@ public:
const PluginDescriptor& getPluginDescriptor() const;
void initPlugin(PluginAPI* pluginAPI);
- SampleSourceDevices enumSampleSources();
- PluginGUI* createSampleSourcePluginGUI(const QString& sourceName, const QByteArray& address);
+ virtual SampleSourceDevices enumSampleSources();
+ virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId);
private:
static const PluginDescriptor m_pluginDescriptor;
diff --git a/plugins/samplesource/hackrf/hackrfplugin.cpp b/plugins/samplesource/hackrf/hackrfplugin.cpp
index e4abddeed..5c0d667e3 100644
--- a/plugins/samplesource/hackrf/hackrfplugin.cpp
+++ b/plugins/samplesource/hackrf/hackrfplugin.cpp
@@ -119,14 +119,14 @@ PluginInterface::SampleSourceDevices HackRFPlugin::enumSampleSources()
return result;
}
-PluginGUI* HackRFPlugin::createSampleSourcePluginGUI(const QString& sourceName, const QByteArray& address)
+PluginGUI* HackRFPlugin::createSampleSourcePluginGUI(const QString& sourceId)
{
if (!m_pluginAPI)
{
return 0;
}
- if(sourceName == m_deviceTypeID)
+ if(sourceId == m_deviceTypeID)
{
HackRFGui* gui = new HackRFGui(m_pluginAPI);
m_pluginAPI->setInputGUI(gui);
diff --git a/plugins/samplesource/hackrf/hackrfplugin.h b/plugins/samplesource/hackrf/hackrfplugin.h
index 8de848017..3b34ba07e 100644
--- a/plugins/samplesource/hackrf/hackrfplugin.h
+++ b/plugins/samplesource/hackrf/hackrfplugin.h
@@ -33,8 +33,8 @@ public:
const PluginDescriptor& getPluginDescriptor() const;
void initPlugin(PluginAPI* pluginAPI);
- SampleSourceDevices enumSampleSources();
- PluginGUI* createSampleSourcePluginGUI(const QString& sourceName, const QByteArray& address);
+ virtual SampleSourceDevices enumSampleSources();
+ virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId);
static const QString m_deviceTypeID;
diff --git a/sdrbase/gui/pluginsdialog.cpp b/sdrbase/gui/pluginsdialog.cpp
index 551456ff2..cb8a26fec 100644
--- a/sdrbase/gui/pluginsdialog.cpp
+++ b/sdrbase/gui/pluginsdialog.cpp
@@ -11,7 +11,7 @@ PluginsDialog::PluginsDialog(PluginManager* pluginManager, QWidget* parent) :
const PluginManager::Plugins& plugins = pluginManager->getPlugins();
for(PluginManager::Plugins::const_iterator it = plugins.constBegin(); it != plugins.constEnd(); ++it) {
QStringList sl;
- const PluginDescriptor& desc = it->plugin->getPluginDescriptor();
+ const PluginDescriptor& desc = it->pluginInterface->getPluginDescriptor();
sl.append(desc.displayedName);
sl.append(desc.version);
if(desc.licenseIsGPL)
diff --git a/sdrbase/plugin/pluginmanager.cpp b/sdrbase/plugin/pluginmanager.cpp
index 29ff14ef0..1ab19f3ee 100644
--- a/sdrbase/plugin/pluginmanager.cpp
+++ b/sdrbase/plugin/pluginmanager.cpp
@@ -17,6 +17,8 @@ PluginManager::PluginManager(MainWindow* mainWindow, DSPEngine* dspEngine, QObje
m_mainWindow(mainWindow),
m_dspEngine(dspEngine),
m_sampleSourceId(),
+ m_sampleSourceSerial(),
+ m_sampleSourceSequence(0),
m_sampleSourcePluginGUI(NULL)
{
}
@@ -38,7 +40,7 @@ void PluginManager::loadPlugins()
for (Plugins::const_iterator it = m_plugins.begin(); it != m_plugins.end(); ++it)
{
- it->plugin->initPlugin(&m_pluginAPI);
+ it->pluginInterface->initPlugin(&m_pluginAPI);
}
updateSampleSourceDevices();
@@ -311,9 +313,7 @@ int PluginManager::selectSampleSource(int index)
<< " ser: " << m_sampleSourceSerial.toStdString().c_str()
<< " seq: " << m_sampleSourceSequence;
- m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId,
- m_sampleSourceSerial,
- m_sampleSourceSequence);
+ m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId);
return index;
}
@@ -369,9 +369,7 @@ 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_sampleSourceSerial,
- m_sampleSourceSequence);
+ m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId);
return index;
}