From b73330c663ed7029b1bf74c7870e692271741825 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 20 Jun 2016 01:58:46 +0200 Subject: [PATCH] SDRdaemonFEC support: correctly implement in plugin manager --- .../sdrdaemonfec/sdrdaemonfecplugin.cpp | 4 +-- sdrbase/plugin/pluginmanager.cpp | 29 ++++++++++++++++++- sdrbase/plugin/pluginmanager.h | 1 + 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/plugins/samplesource/sdrdaemonfec/sdrdaemonfecplugin.cpp b/plugins/samplesource/sdrdaemonfec/sdrdaemonfecplugin.cpp index 43f7cb744..74d97ab1d 100644 --- a/plugins/samplesource/sdrdaemonfec/sdrdaemonfecplugin.cpp +++ b/plugins/samplesource/sdrdaemonfec/sdrdaemonfecplugin.cpp @@ -25,7 +25,7 @@ #include "sdrdaemonfecgui.h" const PluginDescriptor SDRdaemonFECPlugin::m_pluginDescriptor = { - QString("SDRdaemon input"), + QString("SDRdaemon with FEC input"), QString("2.1.0"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), @@ -57,7 +57,7 @@ PluginInterface::SampleSourceDevices SDRdaemonFECPlugin::enumSampleSources() for(int i = 0; i < count; i++) { - QString displayedName(QString("SDRdaemon[%1]").arg(i)); + QString displayedName(QString("SDRdaemonFEC[%1]").arg(i)); result.append(SampleSourceDevice(displayedName, m_deviceTypeID, diff --git a/sdrbase/plugin/pluginmanager.cpp b/sdrbase/plugin/pluginmanager.cpp index 4a58ddb2a..13dcf8b02 100644 --- a/sdrbase/plugin/pluginmanager.cpp +++ b/sdrbase/plugin/pluginmanager.cpp @@ -15,6 +15,7 @@ #include const QString PluginManager::m_sdrDaemonDeviceTypeID = "sdrangel.samplesource.sdrdaemon"; +const QString PluginManager::m_sdrDaemonFECDeviceTypeID = "sdrangel.samplesource.sdrdaemonfec"; const QString PluginManager::m_fileSourceDeviceTypeID = "sdrangel.samplesource.filesource"; PluginManager::PluginManager(MainWindow* mainWindow, QObject* parent) : @@ -91,8 +92,10 @@ void PluginManager::duplicateLocalSampleSourceDevices(uint deviceUID) } SampleSourceDevice *sdrDaemonSSD0 = 0; + SampleSourceDevice *sdrDaemonFECSSD0 = 0; SampleSourceDevice *fileSourceSSD0 = 0; bool duplicateSDRDaemon = true; + bool duplicateSDRDaemonFEC = true; bool duplicateFileSource = true; for(int i = 0; i < m_sampleSourceDevices.count(); ++i) @@ -106,6 +109,15 @@ void PluginManager::duplicateLocalSampleSourceDevices(uint deviceUID) duplicateSDRDaemon = false; } } + else if (m_sampleSourceDevices[i].m_sourceId == m_sdrDaemonFECDeviceTypeID) // SDRdaemon with FEC + { + if (m_sampleSourceDevices[i].m_sourceSequence == 0) { // reference to device 0 + sdrDaemonFECSSD0 = &m_sampleSourceDevices[i]; + } + else if (m_sampleSourceDevices[i].m_sourceSequence == deviceUID) { // already there + duplicateSDRDaemonFEC = false; + } + } else if (m_sampleSourceDevices[i].m_sourceId == m_fileSourceDeviceTypeID) // File Source { if (m_sampleSourceDevices[i].m_sourceSequence == 0) { // reference to device 0 @@ -130,6 +142,19 @@ void PluginManager::duplicateLocalSampleSourceDevices(uint deviceUID) ); } + if (sdrDaemonFECSSD0 && duplicateSDRDaemonFEC) // append item for a new instance + { + m_sampleSourceDevices.append( + SampleSourceDevice( + sdrDaemonFECSSD0->m_plugin, + QString("SDRdaemonFEC[%1]").arg(deviceUID), + sdrDaemonFECSSD0->m_sourceId, + sdrDaemonFECSSD0->m_sourceSerial, + deviceUID + ) + ); + } + if (fileSourceSSD0 && duplicateFileSource) // append item for a new instance { m_sampleSourceDevices.append( @@ -151,7 +176,9 @@ void PluginManager::fillSampleSourceSelector(QComboBox* comboBox, uint deviceUID for(int i = 0; i < m_sampleSourceDevices.count(); i++) { // For "local" devices show only ones that concern this device set - if ((m_sampleSourceDevices[i].m_sourceId == m_sdrDaemonDeviceTypeID) || (m_sampleSourceDevices[i].m_sourceId == m_fileSourceDeviceTypeID)) + if ((m_sampleSourceDevices[i].m_sourceId == m_sdrDaemonDeviceTypeID) + || (m_sampleSourceDevices[i].m_sourceId == m_sdrDaemonFECDeviceTypeID) + || (m_sampleSourceDevices[i].m_sourceId == m_fileSourceDeviceTypeID)) { if (deviceUID != m_sampleSourceDevices[i].m_sourceSequence) { continue; diff --git a/sdrbase/plugin/pluginmanager.h b/sdrbase/plugin/pluginmanager.h index aa77f491f..0dc03afc0 100644 --- a/sdrbase/plugin/pluginmanager.h +++ b/sdrbase/plugin/pluginmanager.h @@ -103,6 +103,7 @@ private: // "Local" sample source device IDs static const QString m_sdrDaemonDeviceTypeID; //!< SDRdaemon source plugin ID + static const QString m_sdrDaemonFECDeviceTypeID; //!< SDRdaemon with FEC source plugin ID static const QString m_fileSourceDeviceTypeID; //!< FileSource source plugin ID // QString m_sampleSourceId;