mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-07-30 12:42:25 -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);
|
m_pluginManager->registerRxChannel(channelIdURI, channelId, plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PluginAPI::registerSampleSource(const QString& sourceName, PluginInterface* plugin)
|
|
||||||
{
|
|
||||||
m_pluginManager->registerSampleSource(sourceName, plugin);
|
|
||||||
}
|
|
||||||
|
|
||||||
PluginAPI::ChannelRegistrations *PluginAPI::getRxChannelRegistrations()
|
PluginAPI::ChannelRegistrations *PluginAPI::getRxChannelRegistrations()
|
||||||
{
|
{
|
||||||
return m_pluginManager->getRxChannelRegistrations();
|
return m_pluginManager->getRxChannelRegistrations();
|
||||||
@ -21,6 +16,26 @@ void PluginAPI::registerTxChannel(const QString& channelIdURI, const QString& ch
|
|||||||
m_pluginManager->registerTxChannel(channelIdURI, channelId, plugin);
|
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)
|
void PluginAPI::registerSampleSink(const QString& sinkName, PluginInterface* plugin)
|
||||||
{
|
{
|
||||||
m_pluginManager->registerSampleSink(sinkName, plugin);
|
m_pluginManager->registerSampleSink(sinkName, plugin);
|
||||||
@ -31,11 +46,6 @@ void PluginAPI::registerSampleMIMO(const QString& mimoName, PluginInterface* plu
|
|||||||
m_pluginManager->registerSampleMIMO(mimoName, plugin);
|
m_pluginManager->registerSampleMIMO(mimoName, plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
PluginAPI::ChannelRegistrations *PluginAPI::getTxChannelRegistrations()
|
|
||||||
{
|
|
||||||
return m_pluginManager->getTxChannelRegistrations();
|
|
||||||
}
|
|
||||||
|
|
||||||
PluginAPI::PluginAPI(PluginManager* pluginManager) :
|
PluginAPI::PluginAPI(PluginManager* pluginManager) :
|
||||||
m_pluginManager(pluginManager)
|
m_pluginManager(pluginManager)
|
||||||
{
|
{
|
||||||
|
@ -51,6 +51,10 @@ public:
|
|||||||
void registerTxChannel(const QString& channelIdURI, const QString& channelId, PluginInterface* plugin);
|
void registerTxChannel(const QString& channelIdURI, const QString& channelId, PluginInterface* plugin);
|
||||||
ChannelRegistrations *getTxChannelRegistrations();
|
ChannelRegistrations *getTxChannelRegistrations();
|
||||||
|
|
||||||
|
// MIMO Channel stuff
|
||||||
|
void registerMIMOChannel(const QString& channelIdURI, const QString& channelId, PluginInterface* plugin);
|
||||||
|
ChannelRegistrations *getMIMOChannelRegistrations();
|
||||||
|
|
||||||
// Sample Source stuff
|
// Sample Source stuff
|
||||||
void registerSampleSource(const QString& sourceName, PluginInterface* plugin);
|
void registerSampleSource(const QString& sourceName, PluginInterface* plugin);
|
||||||
|
|
||||||
|
@ -26,6 +26,7 @@ class DeviceSampleSink;
|
|||||||
class DeviceSampleMIMO;
|
class DeviceSampleMIMO;
|
||||||
class BasebandSampleSink;
|
class BasebandSampleSink;
|
||||||
class BasebandSampleSource;
|
class BasebandSampleSource;
|
||||||
|
class MIMOSampleSink;
|
||||||
class ChannelAPI;
|
class ChannelAPI;
|
||||||
class ChannelWebAPIAdapter;
|
class ChannelWebAPIAdapter;
|
||||||
class DeviceWebAPIAdapter;
|
class DeviceWebAPIAdapter;
|
||||||
@ -132,6 +133,29 @@ public:
|
|||||||
return nullptr;
|
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
|
// any channel
|
||||||
|
|
||||||
virtual ChannelWebAPIAdapter* createChannelWebAPIAdapter() const
|
virtual ChannelWebAPIAdapter* createChannelWebAPIAdapter() const
|
||||||
|
@ -135,6 +135,15 @@ void PluginManager::registerTxChannel(const QString& channelIdURI, const QString
|
|||||||
m_txChannelRegistrations.append(PluginAPI::ChannelRegistration(channelIdURI, channelId, plugin));
|
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)
|
void PluginManager::registerSampleSource(const QString& sourceName, PluginInterface* plugin)
|
||||||
{
|
{
|
||||||
qDebug() << "PluginManager::registerSampleSource "
|
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)
|
void PluginManager::createRxChannelInstance(int channelPluginIndex, DeviceUISet *deviceUISet, DeviceAPI *deviceAPI)
|
||||||
{
|
{
|
||||||
if (channelPluginIndex < m_rxChannelRegistrations.size())
|
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
|
const PluginInterface *PluginManager::getChannelPluginInterface(const QString& channelIdURI) const
|
||||||
{
|
{
|
||||||
for (PluginAPI::ChannelRegistrations::const_iterator it = m_rxChannelRegistrations.begin(); it != m_rxChannelRegistrations.end(); ++it)
|
for (PluginAPI::ChannelRegistrations::const_iterator it = m_rxChannelRegistrations.begin(); it != m_rxChannelRegistrations.end(); ++it)
|
||||||
|
@ -63,8 +63,9 @@ public:
|
|||||||
|
|
||||||
// Callbacks from the plugins
|
// Callbacks from the plugins
|
||||||
void registerRxChannel(const QString& channelIdURI, const QString& channelId, PluginInterface* plugin);
|
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 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 registerSampleSink(const QString& sinkName, PluginInterface* plugin);
|
||||||
void registerSampleMIMO(const QString& mimoName, PluginInterface* plugin);
|
void registerSampleMIMO(const QString& mimoName, PluginInterface* plugin);
|
||||||
|
|
||||||
@ -73,6 +74,7 @@ public:
|
|||||||
PluginAPI::SamplingDeviceRegistrations& getMIMODeviceRegistrations() { return m_sampleMIMORegistrations; }
|
PluginAPI::SamplingDeviceRegistrations& getMIMODeviceRegistrations() { return m_sampleMIMORegistrations; }
|
||||||
PluginAPI::ChannelRegistrations *getRxChannelRegistrations() { return &m_rxChannelRegistrations; }
|
PluginAPI::ChannelRegistrations *getRxChannelRegistrations() { return &m_rxChannelRegistrations; }
|
||||||
PluginAPI::ChannelRegistrations *getTxChannelRegistrations() { return &m_txChannelRegistrations; }
|
PluginAPI::ChannelRegistrations *getTxChannelRegistrations() { return &m_txChannelRegistrations; }
|
||||||
|
PluginAPI::ChannelRegistrations *getMIMOChannelRegistrations() { return &m_mimoChannelRegistrations; }
|
||||||
|
|
||||||
void createRxChannelInstance(int channelPluginIndex, DeviceUISet *deviceUISet, DeviceAPI *deviceAPI);
|
void createRxChannelInstance(int channelPluginIndex, DeviceUISet *deviceUISet, DeviceAPI *deviceAPI);
|
||||||
void listRxChannels(QList<QString>& list);
|
void listRxChannels(QList<QString>& list);
|
||||||
@ -80,6 +82,9 @@ public:
|
|||||||
void createTxChannelInstance(int channelPluginIndex, DeviceUISet *deviceUISet, DeviceAPI *deviceAPI);
|
void createTxChannelInstance(int channelPluginIndex, DeviceUISet *deviceUISet, DeviceAPI *deviceAPI);
|
||||||
void listTxChannels(QList<QString>& list);
|
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 *getChannelPluginInterface(const QString& channelIdURI) const;
|
||||||
const PluginInterface *getDevicePluginInterface(const QString& deviceId) const;
|
const PluginInterface *getDevicePluginInterface(const QString& deviceId) const;
|
||||||
|
|
||||||
@ -117,12 +122,12 @@ private:
|
|||||||
Plugins m_plugins;
|
Plugins m_plugins;
|
||||||
|
|
||||||
PluginAPI::ChannelRegistrations m_rxChannelRegistrations; //!< Channel plugins register here
|
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::SamplingDeviceRegistrations m_sampleSourceRegistrations; //!< Input source plugins (one per device kind) register here
|
||||||
|
PluginAPI::SamplingDeviceRegistrations m_sampleSinkRegistrations; //!< Output sink plugins (one per device kind) register here
|
||||||
PluginAPI::ChannelRegistrations m_txChannelRegistrations; //!< Channel plugins 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
|
// "Local" sample source device IDs
|
||||||
static const QString m_localInputHardwareID; //!< Local input hardware ID
|
static const QString m_localInputHardwareID; //!< Local input hardware ID
|
||||||
|
Loading…
x
Reference in New Issue
Block a user