diff --git a/plugins/samplesink/bladerfoutput/bladerfoutputplugin.cpp b/plugins/samplesink/bladerfoutput/bladerfoutputplugin.cpp index 694c126e2..e37dc1108 100644 --- a/plugins/samplesink/bladerfoutput/bladerfoutputplugin.cpp +++ b/plugins/samplesink/bladerfoutput/bladerfoutputplugin.cpp @@ -67,6 +67,7 @@ PluginInterface::SamplingDevices BladerfOutputPlugin::enumSampleSinks() m_deviceTypeID, QString(devinfo[i].serial), i, + PluginInterface::SamplingDevice::PhysicalDevice, false, 0)); } diff --git a/plugins/samplesink/filesink/filesinkplugin.cpp b/plugins/samplesink/filesink/filesinkplugin.cpp index 52ae88945..34cc827d5 100644 --- a/plugins/samplesink/filesink/filesinkplugin.cpp +++ b/plugins/samplesink/filesink/filesinkplugin.cpp @@ -64,6 +64,7 @@ PluginInterface::SamplingDevices FileSinkPlugin::enumSampleSinks() m_deviceTypeID, QString::null, i, + PluginInterface::SamplingDevice::BuiltInDevice, false, 0)); } diff --git a/plugins/samplesink/hackrfoutput/hackrfoutputplugin.cpp b/plugins/samplesink/hackrfoutput/hackrfoutputplugin.cpp index 7ef95e4e1..98a9e4481 100644 --- a/plugins/samplesink/hackrfoutput/hackrfoutputplugin.cpp +++ b/plugins/samplesink/hackrfoutput/hackrfoutputplugin.cpp @@ -98,6 +98,7 @@ PluginInterface::SamplingDevices HackRFOutputPlugin::enumSampleSinks() m_deviceTypeID, serial_str, i, + PluginInterface::SamplingDevice::PhysicalDevice, false, 0)); diff --git a/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp b/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp index e74d60a4e..766463a73 100644 --- a/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp +++ b/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp @@ -96,6 +96,7 @@ PluginInterface::SamplingDevices LimeSDROutputPlugin::enumSampleSinks() m_deviceTypeID, QString(deviceList[i]), i, + PluginInterface::SamplingDevice::PhysicalDevice, false, j)); } diff --git a/plugins/samplesink/plutosdroutput/plutosdroutputplugin.cpp b/plugins/samplesink/plutosdroutput/plutosdroutputplugin.cpp index 684c84ea5..776472ca0 100644 --- a/plugins/samplesink/plutosdroutput/plutosdroutputplugin.cpp +++ b/plugins/samplesink/plutosdroutput/plutosdroutputplugin.cpp @@ -74,6 +74,7 @@ PluginInterface::SamplingDevices PlutoSDROutputPlugin::enumSampleSinks() m_deviceTypeID, serial_str, i, + PluginInterface::SamplingDevice::PhysicalDevice, false, 0)); diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkplugin.cpp b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkplugin.cpp index 29a817207..d0b2d2b8b 100644 --- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkplugin.cpp +++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkplugin.cpp @@ -65,6 +65,7 @@ PluginInterface::SamplingDevices SDRdaemonSinkPlugin::enumSampleSinks() m_deviceTypeID, QString::null, i, + PluginInterface::SamplingDevice::BuiltInDevice, false, 0)); } diff --git a/plugins/samplesource/airspy/airspyplugin.cpp b/plugins/samplesource/airspy/airspyplugin.cpp index 1dde76696..eccc2de54 100644 --- a/plugins/samplesource/airspy/airspyplugin.cpp +++ b/plugins/samplesource/airspy/airspyplugin.cpp @@ -100,6 +100,7 @@ PluginInterface::SamplingDevices AirspyPlugin::enumSampleSources() m_deviceTypeID, serial_str, i, + PluginInterface::SamplingDevice::PhysicalDevice, true, 0)); diff --git a/plugins/samplesource/bladerfinput/bladerfinputplugin.cpp b/plugins/samplesource/bladerfinput/bladerfinputplugin.cpp index fa1834fee..0a5420174 100644 --- a/plugins/samplesource/bladerfinput/bladerfinputplugin.cpp +++ b/plugins/samplesource/bladerfinput/bladerfinputplugin.cpp @@ -68,6 +68,7 @@ PluginInterface::SamplingDevices BlderfInputPlugin::enumSampleSources() m_deviceTypeID, QString(devinfo[i].serial), i, + PluginInterface::SamplingDevice::PhysicalDevice, true, 0)); } diff --git a/plugins/samplesource/fcdpro/fcdproplugin.cpp b/plugins/samplesource/fcdpro/fcdproplugin.cpp index 8b4437d2a..a813bdcb7 100644 --- a/plugins/samplesource/fcdpro/fcdproplugin.cpp +++ b/plugins/samplesource/fcdpro/fcdproplugin.cpp @@ -66,6 +66,7 @@ PluginInterface::SamplingDevices FCDProPlugin::enumSampleSources() fcd_traits::interfaceIID, serialNumber, i, + PluginInterface::SamplingDevice::PhysicalDevice, true, 0)); diff --git a/plugins/samplesource/fcdproplus/fcdproplusplugin.cpp b/plugins/samplesource/fcdproplus/fcdproplusplugin.cpp index d37a0c4ae..4a5c58d29 100644 --- a/plugins/samplesource/fcdproplus/fcdproplusplugin.cpp +++ b/plugins/samplesource/fcdproplus/fcdproplusplugin.cpp @@ -68,6 +68,7 @@ PluginInterface::SamplingDevices FCDProPlusPlugin::enumSampleSources() fcd_traits::interfaceIID, serialNumber, i, + PluginInterface::SamplingDevice::PhysicalDevice, true, 0)); diff --git a/plugins/samplesource/filesource/filesourceplugin.cpp b/plugins/samplesource/filesource/filesourceplugin.cpp index 6959dc4b3..f0552853c 100644 --- a/plugins/samplesource/filesource/filesourceplugin.cpp +++ b/plugins/samplesource/filesource/filesourceplugin.cpp @@ -64,6 +64,7 @@ PluginInterface::SamplingDevices FileSourcePlugin::enumSampleSources() m_deviceTypeID, QString::null, i, + PluginInterface::SamplingDevice::BuiltInDevice, true, 0)); } diff --git a/plugins/samplesource/hackrfinput/hackrfinputplugin.cpp b/plugins/samplesource/hackrfinput/hackrfinputplugin.cpp index 724f98e53..26a08c707 100644 --- a/plugins/samplesource/hackrfinput/hackrfinputplugin.cpp +++ b/plugins/samplesource/hackrfinput/hackrfinputplugin.cpp @@ -99,6 +99,7 @@ PluginInterface::SamplingDevices HackRFInputPlugin::enumSampleSources() m_deviceTypeID, serial_str, i, + PluginInterface::SamplingDevice::PhysicalDevice, true, 0)); diff --git a/plugins/samplesource/limesdrinput/limesdrinputplugin.cpp b/plugins/samplesource/limesdrinput/limesdrinputplugin.cpp index ece50b9ad..f3f623376 100644 --- a/plugins/samplesource/limesdrinput/limesdrinputplugin.cpp +++ b/plugins/samplesource/limesdrinput/limesdrinputplugin.cpp @@ -96,6 +96,7 @@ PluginInterface::SamplingDevices LimeSDRInputPlugin::enumSampleSources() m_deviceTypeID, QString(deviceList[i]), i, + PluginInterface::SamplingDevice::PhysicalDevice, true, j)); } diff --git a/plugins/samplesource/plutosdrinput/plutosdrinputplugin.cpp b/plugins/samplesource/plutosdrinput/plutosdrinputplugin.cpp index fa8d18ef3..10711d61c 100644 --- a/plugins/samplesource/plutosdrinput/plutosdrinputplugin.cpp +++ b/plugins/samplesource/plutosdrinput/plutosdrinputplugin.cpp @@ -74,6 +74,7 @@ PluginInterface::SamplingDevices PlutoSDRInputPlugin::enumSampleSources() m_deviceTypeID, serial_str, i, + PluginInterface::SamplingDevice::PhysicalDevice, true, 0)); diff --git a/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp b/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp index 96bfcd82e..8cc93407a 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp +++ b/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp @@ -58,6 +58,7 @@ PluginInterface::SamplingDevices RTLSDRPlugin::enumSampleSources() m_deviceTypeID, QString(serial), i, + PluginInterface::SamplingDevice::PhysicalDevice, true, 0)); } diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceplugin.cpp b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceplugin.cpp index e521eef1f..74f2bb76b 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceplugin.cpp +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceplugin.cpp @@ -65,6 +65,7 @@ PluginInterface::SamplingDevices SDRdaemonSourcePlugin::enumSampleSources() m_deviceTypeID, QString::null, i, + PluginInterface::SamplingDevice::BuiltInDevice, true, 0)); } diff --git a/plugins/samplesource/sdrplay/sdrplayplugin.cpp b/plugins/samplesource/sdrplay/sdrplayplugin.cpp index d5a1b145a..f2030a4e3 100644 --- a/plugins/samplesource/sdrplay/sdrplayplugin.cpp +++ b/plugins/samplesource/sdrplay/sdrplayplugin.cpp @@ -78,6 +78,7 @@ PluginInterface::SamplingDevices SDRPlayPlugin::enumSampleSources() m_deviceTypeID, QString(serial), i, + PluginInterface::SamplingDevice::PhysicalDevice, true, 0)); } diff --git a/sdrbase/plugin/plugininterface.h b/sdrbase/plugin/plugininterface.h index fecb4aacd..d3c20d552 100644 --- a/sdrbase/plugin/plugininterface.h +++ b/sdrbase/plugin/plugininterface.h @@ -27,20 +27,28 @@ class PluginInterface { public: struct SamplingDevice { - QString displayedName; //!< The human readable name - QString hardwareId; //!< The internal id that identifies the type of hardware (i.e. HackRF, BladeRF, ...) - QString id; //!< The internal plugin ID corresponding to the device (i.e. for HackRF input, for HackRF output ...) - QString serial; //!< The device serial number - int sequence; //!< The device sequence. >0 when more than one device of the same type is connected - bool rxElseTx; //!< This is the Rx part else the Tx part of the device - int deviceItemIndex; //!< For composite devices this is the Rx or Tx stream index. -1 if not initialized - int claimed; //!< This is the device set index if claimed else -1 + enum SamplingDeviceType + { + PhysicalDevice, + BuiltInDevice + }; + + QString displayedName; //!< The human readable name + QString hardwareId; //!< The internal id that identifies the type of hardware (i.e. HackRF, BladeRF, ...) + QString id; //!< The internal plugin ID corresponding to the device (i.e. for HackRF input, for HackRF output ...) + QString serial; //!< The device serial number + int sequence; //!< The device sequence. >0 when more than one device of the same type is connected + SamplingDeviceType type; //!< The sampling device type for behavior information + bool rxElseTx; //!< This is the Rx part else the Tx part of the device + int deviceItemIndex; //!< For composite devices this is the Rx or Tx stream index. -1 if not initialized + int claimed; //!< This is the device set index if claimed else -1 SamplingDevice(const QString& _displayedName, const QString& _hardwareId, const QString& _id, const QString& _serial, int _sequence, + SamplingDeviceType _type, bool _rxElseTx, int _deviceItemIndex) : displayedName(_displayedName), @@ -48,6 +56,7 @@ public: id(_id), serial(_serial), sequence(_sequence), + type(_type), rxElseTx(_rxElseTx), deviceItemIndex(_deviceItemIndex), claimed(-1) diff --git a/sdrgui/device/deviceuiset.cpp b/sdrgui/device/deviceuiset.cpp index b3534dd63..db255fada 100644 --- a/sdrgui/device/deviceuiset.cpp +++ b/sdrgui/device/deviceuiset.cpp @@ -32,7 +32,7 @@ #include "deviceuiset.h" -DeviceUISet::DeviceUISet(QTimer& timer) +DeviceUISet::DeviceUISet(int tabIndex, QTimer& timer) { m_spectrum = new GLSpectrum; m_spectrumVis = new SpectrumVis(m_spectrum); @@ -40,11 +40,12 @@ DeviceUISet::DeviceUISet(QTimer& timer) m_spectrumGUI = new GLSpectrumGUI; m_spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, m_spectrum); m_channelWindow = new ChannelWindow; - m_samplingDeviceControl = new SamplingDeviceControl; + m_samplingDeviceControl = new SamplingDeviceControl(tabIndex); m_deviceSourceEngine = 0; m_deviceSourceAPI = 0; m_deviceSinkEngine = 0; m_deviceSinkAPI = 0; + m_deviceTabIndex = tabIndex; // m_spectrum needs to have its font to be set since it cannot be inherited from the main window QFont font; diff --git a/sdrgui/device/deviceuiset.h b/sdrgui/device/deviceuiset.h index a823c339b..0e33d53f5 100644 --- a/sdrgui/device/deviceuiset.h +++ b/sdrgui/device/deviceuiset.h @@ -45,7 +45,7 @@ struct DeviceUISet DeviceSinkAPI *m_deviceSinkAPI; QByteArray m_mainWindowState; - DeviceUISet(QTimer& timer); + DeviceUISet(int tabIndex, QTimer& timer); ~DeviceUISet(); GLSpectrum *getSpectrum() { return m_spectrum; } //!< Direct spectrum getter @@ -86,6 +86,7 @@ private: ChannelInstanceRegistrations m_rxChannelInstanceRegistrations; ChannelInstanceRegistrations m_txChannelInstanceRegistrations; + int m_deviceTabIndex; void renameRxChannelInstances(); void renameTxChannelInstances(); diff --git a/sdrgui/gui/samplingdevicecontrol.cpp b/sdrgui/gui/samplingdevicecontrol.cpp index 7d061e964..cf68101f9 100644 --- a/sdrgui/gui/samplingdevicecontrol.cpp +++ b/sdrgui/gui/samplingdevicecontrol.cpp @@ -20,10 +20,11 @@ #include "ui_samplingdevicecontrol.h" -SamplingDeviceControl::SamplingDeviceControl(QWidget* parent) : +SamplingDeviceControl::SamplingDeviceControl(int tabIndex, QWidget* parent) : QWidget(parent), ui(new Ui::SamplingDeviceControl), - m_pluginManager(0) + m_pluginManager(0), + m_deviceTabIndex(tabIndex) { ui->setupUi(this); } diff --git a/sdrgui/gui/samplingdevicecontrol.h b/sdrgui/gui/samplingdevicecontrol.h index 3773f5e30..58dea4932 100644 --- a/sdrgui/gui/samplingdevicecontrol.h +++ b/sdrgui/gui/samplingdevicecontrol.h @@ -37,7 +37,7 @@ class SDRANGEL_API SamplingDeviceControl : public QWidget { Q_OBJECT public: - explicit SamplingDeviceControl(QWidget* parent = NULL); + explicit SamplingDeviceControl(int tabIndex, QWidget* parent = 0); ~SamplingDeviceControl(); void setPluginManager(PluginManager *pluginManager) { m_pluginManager = pluginManager; } @@ -49,6 +49,7 @@ public: private: Ui::SamplingDeviceControl* ui; PluginManager *m_pluginManager; + int m_deviceTabIndex; }; diff --git a/sdrgui/mainwindow.cpp b/sdrgui/mainwindow.cpp index b46624d3f..f4ef07956 100644 --- a/sdrgui/mainwindow.cpp +++ b/sdrgui/mainwindow.cpp @@ -204,10 +204,10 @@ void MainWindow::addSourceDevice() char uidCStr[16]; sprintf(uidCStr, "UID:%d", dspDeviceSourceEngineUID); - m_deviceUIs.push_back(new DeviceUISet(m_masterTimer)); + int deviceTabIndex = m_deviceUIs.size(); + m_deviceUIs.push_back(new DeviceUISet(deviceTabIndex, m_masterTimer)); m_deviceUIs.back()->m_deviceSourceEngine = dspDeviceSourceEngine; - int deviceTabIndex = m_deviceUIs.size()-1; char tabNameCStr[16]; sprintf(tabNameCStr, "R%d", deviceTabIndex); @@ -267,11 +267,11 @@ void MainWindow::addSinkDevice() char uidCStr[16]; sprintf(uidCStr, "UID:%d", dspDeviceSinkEngineUID); - m_deviceUIs.push_back(new DeviceUISet(m_masterTimer)); + int deviceTabIndex = m_deviceUIs.size(); + m_deviceUIs.push_back(new DeviceUISet(deviceTabIndex, m_masterTimer)); m_deviceUIs.back()->m_deviceSourceEngine = 0; m_deviceUIs.back()->m_deviceSinkEngine = dspDeviceSinkEngine; - int deviceTabIndex = m_deviceUIs.size()-1; char tabNameCStr[16]; sprintf(tabNameCStr, "T%d", deviceTabIndex); diff --git a/sdrgui/plugin/pluginapi.cpp b/sdrgui/plugin/pluginapi.cpp index eb19aa64b..7a3e63e15 100644 --- a/sdrgui/plugin/pluginapi.cpp +++ b/sdrgui/plugin/pluginapi.cpp @@ -31,11 +31,6 @@ PluginAPI::ChannelRegistrations *PluginAPI::getTxChannelRegistrations() return m_pluginManager->getTxChannelRegistrations(); } -bool PluginAPI::isBuiltInDevice(QString& deviceTypeID) -{ - return m_pluginManager->isBuiltInDevice(deviceTypeID); -} - PluginAPI::PluginAPI(PluginManager* pluginManager) : m_pluginManager(pluginManager) { diff --git a/sdrgui/plugin/pluginapi.h b/sdrgui/plugin/pluginapi.h index 6e559e8bf..1820e697a 100644 --- a/sdrgui/plugin/pluginapi.h +++ b/sdrgui/plugin/pluginapi.h @@ -5,11 +5,11 @@ #include #include "util/export.h" +#include "plugin/plugininterface.h" class QString; class PluginManager; -class PluginInterface; class MessageQueue; class PluginInstanceGUI; @@ -43,9 +43,6 @@ public: // Sample Sink stuff void registerSampleSink(const QString& sinkName, PluginInterface* plugin); - // Categories enquiry - bool isBuiltInDevice(QString& deviceTypeID); - protected: PluginManager* m_pluginManager; diff --git a/sdrgui/plugin/pluginmanager.cpp b/sdrgui/plugin/pluginmanager.cpp index 0f747cfc9..8c41399fa 100644 --- a/sdrgui/plugin/pluginmanager.cpp +++ b/sdrgui/plugin/pluginmanager.cpp @@ -643,12 +643,3 @@ void PluginManager::createTxChannelInstance(int channelPluginIndex, DeviceUISet pluginInterface->createTxChannel(m_txChannelRegistrations[channelPluginIndex].m_channelId, deviceUISet); } } - -bool PluginManager::isBuiltInDevice(QString& deviceTypeID) -{ - return ((deviceTypeID == m_fileSourceDeviceTypeID) || - (deviceTypeID == m_fileSinkDeviceTypeID) || - (deviceTypeID == m_sdrDaemonSourceDeviceTypeID) || - (deviceTypeID == m_sdrDaemonSinkDeviceTypeID)); -} - diff --git a/sdrgui/plugin/pluginmanager.h b/sdrgui/plugin/pluginmanager.h index dae139fce..644581edb 100644 --- a/sdrgui/plugin/pluginmanager.h +++ b/sdrgui/plugin/pluginmanager.h @@ -79,8 +79,6 @@ public: void createTxChannelInstance(int channelPluginIndex, DeviceUISet *deviceUISet); void listTxChannels(QList& list); - bool isBuiltInDevice(QString& deviceTypeID); - private: struct SamplingDeviceRegistration //!< This is the channel registration {