mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-04-16 16:38:28 -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…
Reference in New Issue
Block a user