mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-10-31 13:00:26 -04:00 
			
		
		
		
	Multi device support: ensure there is only one instance of SDRdaemon and FileSource plugins
This commit is contained in:
		
							parent
							
								
									3e4a163304
								
							
						
					
					
						commit
						a32175eccb
					
				| @ -194,7 +194,7 @@ void MainWindow::addDevice() | |||||||
|     ui->tabChannels->addTab(m_deviceUIs.back()->m_channelWindow, tabNameCStr); |     ui->tabChannels->addTab(m_deviceUIs.back()->m_channelWindow, tabNameCStr); | ||||||
| 
 | 
 | ||||||
|     bool sampleSourceSignalsBlocked = m_deviceUIs.back()->m_samplingDeviceControl->getDeviceSelector()->blockSignals(true); |     bool sampleSourceSignalsBlocked = m_deviceUIs.back()->m_samplingDeviceControl->getDeviceSelector()->blockSignals(true); | ||||||
|     m_pluginManager->fillSampleSourceSelector(m_deviceUIs.back()->m_samplingDeviceControl->getDeviceSelector()); |     m_pluginManager->fillSampleSourceSelector(m_deviceUIs.back()->m_samplingDeviceControl->getDeviceSelector(), dspDeviceEngineUID); | ||||||
| 
 | 
 | ||||||
|     connect(m_deviceUIs.back()->m_samplingDeviceControl->getDeviceSelectionConfirm(), SIGNAL(clicked(bool)), this, SLOT(on_sampleSource_confirmClicked(bool))); |     connect(m_deviceUIs.back()->m_samplingDeviceControl->getDeviceSelectionConfirm(), SIGNAL(clicked(bool)), this, SLOT(on_sampleSource_confirmClicked(bool))); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -14,6 +14,9 @@ | |||||||
| 
 | 
 | ||||||
| #include <QDebug> | #include <QDebug> | ||||||
| 
 | 
 | ||||||
|  | const QString PluginManager::m_sdrDaemonDeviceTypeID = "sdrangel.samplesource.sdrdaemon"; | ||||||
|  | const QString PluginManager::m_fileSourceDeviceTypeID = "sdrangel.samplesource.filesource"; | ||||||
|  | 
 | ||||||
| PluginManager::PluginManager(MainWindow* mainWindow, QObject* parent) : | PluginManager::PluginManager(MainWindow* mainWindow, QObject* parent) : | ||||||
| 	QObject(parent), | 	QObject(parent), | ||||||
| 	m_pluginAPI(this, mainWindow), | 	m_pluginAPI(this, mainWindow), | ||||||
| @ -81,12 +84,20 @@ void PluginManager::updateSampleSourceDevices() | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void PluginManager::fillSampleSourceSelector(QComboBox* comboBox) | void PluginManager::fillSampleSourceSelector(QComboBox* comboBox, uint deviceUID) | ||||||
| { | { | ||||||
| 	comboBox->clear(); | 	comboBox->clear(); | ||||||
| 
 | 
 | ||||||
| 	for(int i = 0; i < m_sampleSourceDevices.count(); i++) | 	for(int i = 0; i < m_sampleSourceDevices.count(); i++) | ||||||
| 	{ | 	{ | ||||||
|  | 	    // There can be only one instance of file source and SDRdaemon plugins
 | ||||||
|  | 	    if ((m_sampleSourceDevices[i].m_sourceId == m_sdrDaemonDeviceTypeID) || (m_sampleSourceDevices[i].m_sourceId == m_fileSourceDeviceTypeID)) | ||||||
|  | 	    { | ||||||
|  | 	        if (deviceUID != 0) { | ||||||
|  | 	            continue; | ||||||
|  | 	        } | ||||||
|  | 	    } | ||||||
|  | 
 | ||||||
| 		comboBox->addItem(m_sampleSourceDevices[i].m_displayName, i); | 		comboBox->addItem(m_sampleSourceDevices[i].m_displayName, i); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -48,7 +48,7 @@ public: | |||||||
| 	PluginAPI::ChannelRegistrations *getChannelRegistrations() { return &m_channelRegistrations; } | 	PluginAPI::ChannelRegistrations *getChannelRegistrations() { return &m_channelRegistrations; } | ||||||
| 
 | 
 | ||||||
| 	void updateSampleSourceDevices(); | 	void updateSampleSourceDevices(); | ||||||
| 	void fillSampleSourceSelector(QComboBox* comboBox); | 	void fillSampleSourceSelector(QComboBox* comboBox, uint deviceUID); | ||||||
| 
 | 
 | ||||||
| 	int selectSampleSourceByIndex(int index, DeviceAPI *deviceAPI); | 	int selectSampleSourceByIndex(int index, DeviceAPI *deviceAPI); | ||||||
| 	int selectFirstSampleSource(const QString& sourceId, DeviceAPI *deviceAPI); | 	int selectFirstSampleSource(const QString& sourceId, DeviceAPI *deviceAPI); | ||||||
| @ -99,6 +99,9 @@ private: | |||||||
| 	SampleSourceRegistrations m_sampleSourceRegistrations; //!< Input source plugins (one per device kind) register here
 | 	SampleSourceRegistrations m_sampleSourceRegistrations; //!< Input source plugins (one per device kind) register here
 | ||||||
| 	SampleSourceDevices m_sampleSourceDevices;             //!< Instances of input sources present in the system
 | 	SampleSourceDevices m_sampleSourceDevices;             //!< Instances of input sources present in the system
 | ||||||
| 
 | 
 | ||||||
|  | 	static const QString m_sdrDaemonDeviceTypeID; | ||||||
|  |     static const QString m_fileSourceDeviceTypeID; | ||||||
|  | 
 | ||||||
| //	QString m_sampleSourceId;
 | //	QString m_sampleSourceId;
 | ||||||
| //	QString m_sampleSourceSerial;
 | //	QString m_sampleSourceSerial;
 | ||||||
| //	int m_sampleSourceSequence;
 | //	int m_sampleSourceSequence;
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user