mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-10-26 02:20:26 -04:00 
			
		
		
		
	MIMO channels: added methods to the plugin system
This commit is contained in:
		
							parent
							
								
									94c1b9a972
								
							
						
					
					
						commit
						8b5e71a1cc
					
				| @ -6,11 +6,6 @@ void PluginAPI::registerRxChannel(const QString& channelIdURI, const QString& ch | ||||
| 	m_pluginManager->registerRxChannel(channelIdURI, channelId, plugin); | ||||
| } | ||||
| 
 | ||||
| void PluginAPI::registerSampleSource(const QString& sourceName, PluginInterface* plugin) | ||||
| { | ||||
| 	m_pluginManager->registerSampleSource(sourceName, plugin); | ||||
| } | ||||
| 
 | ||||
| PluginAPI::ChannelRegistrations *PluginAPI::getRxChannelRegistrations() | ||||
| { | ||||
|     return m_pluginManager->getRxChannelRegistrations(); | ||||
| @ -21,6 +16,26 @@ void PluginAPI::registerTxChannel(const QString& channelIdURI, const QString& ch | ||||
| 	m_pluginManager->registerTxChannel(channelIdURI, channelId, plugin); | ||||
| } | ||||
| 
 | ||||
| PluginAPI::ChannelRegistrations *PluginAPI::getTxChannelRegistrations() | ||||
| { | ||||
|     return m_pluginManager->getTxChannelRegistrations(); | ||||
| } | ||||
| 
 | ||||
| void PluginAPI::registerMIMOChannel(const QString& channelIdURI, const QString& channelId, PluginInterface* plugin) | ||||
| { | ||||
| 	m_pluginManager->registerMIMOChannel(channelIdURI, channelId, plugin); | ||||
| } | ||||
| 
 | ||||
| PluginAPI::ChannelRegistrations *PluginAPI::getMIMOChannelRegistrations() | ||||
| { | ||||
|     return m_pluginManager->getMIMOChannelRegistrations(); | ||||
| } | ||||
| 
 | ||||
| void PluginAPI::registerSampleSource(const QString& sourceName, PluginInterface* plugin) | ||||
| { | ||||
| 	m_pluginManager->registerSampleSource(sourceName, plugin); | ||||
| } | ||||
| 
 | ||||
| void PluginAPI::registerSampleSink(const QString& sinkName, PluginInterface* plugin) | ||||
| { | ||||
| 	m_pluginManager->registerSampleSink(sinkName, plugin); | ||||
| @ -31,11 +46,6 @@ void PluginAPI::registerSampleMIMO(const QString& mimoName, PluginInterface* plu | ||||
| 	m_pluginManager->registerSampleMIMO(mimoName, plugin); | ||||
| } | ||||
| 
 | ||||
| PluginAPI::ChannelRegistrations *PluginAPI::getTxChannelRegistrations() | ||||
| { | ||||
|     return m_pluginManager->getTxChannelRegistrations(); | ||||
| } | ||||
| 
 | ||||
| PluginAPI::PluginAPI(PluginManager* pluginManager) : | ||||
| 	m_pluginManager(pluginManager) | ||||
| { | ||||
|  | ||||
| @ -51,6 +51,10 @@ public: | ||||
| 	void registerTxChannel(const QString& channelIdURI, const QString& channelId, PluginInterface* plugin); | ||||
| 	ChannelRegistrations *getTxChannelRegistrations(); | ||||
| 
 | ||||
|     // MIMO Channel stuff
 | ||||
| 	void registerMIMOChannel(const QString& channelIdURI, const QString& channelId, PluginInterface* plugin); | ||||
| 	ChannelRegistrations *getMIMOChannelRegistrations(); | ||||
| 
 | ||||
| 	// Sample Source stuff
 | ||||
| 	void registerSampleSource(const QString& sourceName, PluginInterface* plugin); | ||||
| 
 | ||||
|  | ||||
| @ -26,6 +26,7 @@ class DeviceSampleSink; | ||||
| class DeviceSampleMIMO; | ||||
| class BasebandSampleSink; | ||||
| class BasebandSampleSource; | ||||
| class MIMOSampleSink; | ||||
| class ChannelAPI; | ||||
| class ChannelWebAPIAdapter; | ||||
| class DeviceWebAPIAdapter; | ||||
| @ -132,6 +133,29 @@ public: | ||||
|         return nullptr; | ||||
|     } | ||||
| 
 | ||||
|     // channel MIMO plugins
 | ||||
| 
 | ||||
| 	virtual PluginInstanceGUI* createMIMOChannelGUI( | ||||
|             DeviceUISet *deviceUISet, | ||||
|             MIMOSampleSink *mimoChannel) const | ||||
|     { | ||||
|         (void) deviceUISet; | ||||
|         (void) mimoChannel; | ||||
|         return nullptr; | ||||
|     } | ||||
| 
 | ||||
|     virtual MIMOSampleSink* createMIMOChannelBS(DeviceAPI *deviceAPI) const | ||||
|     { | ||||
|         (void) deviceAPI; | ||||
|         return nullptr; | ||||
|     } | ||||
| 
 | ||||
|     virtual ChannelAPI* createMIMOChannelCS(DeviceAPI *deviceAPI) const | ||||
|     { | ||||
|         (void) deviceAPI; | ||||
|         return nullptr; | ||||
|     } | ||||
| 
 | ||||
|     // any channel
 | ||||
| 
 | ||||
|     virtual ChannelWebAPIAdapter* createChannelWebAPIAdapter() const | ||||
|  | ||||
| @ -135,6 +135,15 @@ void PluginManager::registerTxChannel(const QString& channelIdURI, const QString | ||||
| 	m_txChannelRegistrations.append(PluginAPI::ChannelRegistration(channelIdURI, channelId, plugin)); | ||||
| } | ||||
| 
 | ||||
| void PluginManager::registerMIMOChannel(const QString& channelIdURI, const QString& channelId, PluginInterface* plugin) | ||||
| { | ||||
|     qDebug() << "PluginManager::registerMIMOChannel " | ||||
|             << plugin->getPluginDescriptor().displayedName.toStdString().c_str() | ||||
|             << " with channel name " << channelIdURI; | ||||
| 
 | ||||
| 	m_mimoChannelRegistrations.append(PluginAPI::ChannelRegistration(channelIdURI, channelId, plugin)); | ||||
| } | ||||
| 
 | ||||
| void PluginManager::registerSampleSource(const QString& sourceName, PluginInterface* plugin) | ||||
| { | ||||
| 	qDebug() << "PluginManager::registerSampleSource " | ||||
| @ -218,6 +227,17 @@ void PluginManager::listRxChannels(QList<QString>& list) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void PluginManager::listMIMOChannels(QList<QString>& list) | ||||
| { | ||||
|     list.clear(); | ||||
| 
 | ||||
|     for (PluginAPI::ChannelRegistrations::iterator it = m_mimoChannelRegistrations.begin(); it != m_mimoChannelRegistrations.end(); ++it) | ||||
|     { | ||||
|         const PluginDescriptor& pluginDesciptor = it->m_plugin->getPluginDescriptor(); | ||||
|         list.append(pluginDesciptor.displayedName); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void PluginManager::createRxChannelInstance(int channelPluginIndex, DeviceUISet *deviceUISet, DeviceAPI *deviceAPI) | ||||
| { | ||||
|     if (channelPluginIndex < m_rxChannelRegistrations.size()) | ||||
| @ -238,6 +258,16 @@ void PluginManager::createTxChannelInstance(int channelPluginIndex, DeviceUISet | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void PluginManager::createMIMOChannelInstance(int channelPluginIndex, DeviceUISet *deviceUISet, DeviceAPI *deviceAPI) | ||||
| { | ||||
|     if (channelPluginIndex < m_mimoChannelRegistrations.size()) | ||||
|     { | ||||
|         PluginInterface *pluginInterface = m_mimoChannelRegistrations[channelPluginIndex].m_plugin; | ||||
|         MIMOSampleSink *mimoChannel = pluginInterface->createMIMOChannelBS(deviceAPI); | ||||
|         pluginInterface->createMIMOChannelGUI(deviceUISet, mimoChannel); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| const PluginInterface *PluginManager::getChannelPluginInterface(const QString& channelIdURI) const | ||||
| { | ||||
|     for (PluginAPI::ChannelRegistrations::const_iterator it = m_rxChannelRegistrations.begin(); it != m_rxChannelRegistrations.end(); ++it) | ||||
|  | ||||
| @ -63,8 +63,9 @@ public: | ||||
| 
 | ||||
| 	// Callbacks from the plugins
 | ||||
| 	void registerRxChannel(const QString& channelIdURI, const QString& channelId, PluginInterface* plugin); | ||||
| 	void registerSampleSource(const QString& sourceName, PluginInterface* plugin); | ||||
| 	void registerTxChannel(const QString& channelIdURI, const QString& channelId, PluginInterface* plugin); | ||||
| 	void registerMIMOChannel(const QString& channelIdURI, const QString& channelId, PluginInterface* plugin); | ||||
| 	void registerSampleSource(const QString& sourceName, PluginInterface* plugin); | ||||
| 	void registerSampleSink(const QString& sinkName, PluginInterface* plugin); | ||||
|     void registerSampleMIMO(const QString& mimoName, PluginInterface* plugin); | ||||
| 
 | ||||
| @ -73,6 +74,7 @@ public: | ||||
|     PluginAPI::SamplingDeviceRegistrations& getMIMODeviceRegistrations() { return m_sampleMIMORegistrations; } | ||||
| 	PluginAPI::ChannelRegistrations *getRxChannelRegistrations() { return &m_rxChannelRegistrations; } | ||||
| 	PluginAPI::ChannelRegistrations *getTxChannelRegistrations() { return &m_txChannelRegistrations; } | ||||
| 	PluginAPI::ChannelRegistrations *getMIMOChannelRegistrations() { return &m_mimoChannelRegistrations; } | ||||
| 
 | ||||
|     void createRxChannelInstance(int channelPluginIndex, DeviceUISet *deviceUISet, DeviceAPI *deviceAPI); | ||||
|     void listRxChannels(QList<QString>& list); | ||||
| @ -80,6 +82,9 @@ public: | ||||
| 	void createTxChannelInstance(int channelPluginIndex, DeviceUISet *deviceUISet, DeviceAPI *deviceAPI); | ||||
| 	void listTxChannels(QList<QString>& list); | ||||
| 
 | ||||
| 	void createMIMOChannelInstance(int channelPluginIndex, DeviceUISet *deviceUISet, DeviceAPI *deviceAPI); | ||||
| 	void listMIMOChannels(QList<QString>& list); | ||||
| 
 | ||||
| 	const PluginInterface *getChannelPluginInterface(const QString& channelIdURI) const; | ||||
| 	const PluginInterface *getDevicePluginInterface(const QString& deviceId) const; | ||||
| 
 | ||||
| @ -117,12 +122,12 @@ private: | ||||
| 	Plugins m_plugins; | ||||
| 
 | ||||
| 	PluginAPI::ChannelRegistrations m_rxChannelRegistrations;           //!< Channel plugins register here
 | ||||
| 	PluginAPI::ChannelRegistrations m_txChannelRegistrations;           //!< Channel plugins register here
 | ||||
| 	PluginAPI::ChannelRegistrations m_mimoChannelRegistrations;         //!< Channel plugins register here
 | ||||
| 
 | ||||
| 	PluginAPI::SamplingDeviceRegistrations m_sampleSourceRegistrations; //!< Input source plugins (one per device kind) register here
 | ||||
| 
 | ||||
| 	PluginAPI::ChannelRegistrations m_txChannelRegistrations;         //!< Channel plugins register here
 | ||||
| 	PluginAPI::SamplingDeviceRegistrations m_sampleSinkRegistrations; //!< Output sink plugins (one per device kind) register here
 | ||||
| 
 | ||||
| 	PluginAPI::SamplingDeviceRegistrations m_sampleMIMORegistrations; //!< MIMO sink plugins (one per device kind) register here
 | ||||
| 	PluginAPI::SamplingDeviceRegistrations m_sampleSinkRegistrations;   //!< Output sink plugins (one per device kind) register here
 | ||||
| 	PluginAPI::SamplingDeviceRegistrations m_sampleMIMORegistrations;   //!< MIMO sink plugins (one per device kind) register here
 | ||||
| 
 | ||||
| 	// "Local" sample source device IDs
 | ||||
|     static const QString m_localInputHardwareID;     //!< Local input hardware ID
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user