MIMO channels: added methods to the plugin system

pull/422/head
f4exb 2019-09-02 18:36:56 +02:00
rodzic 94c1b9a972
commit 8b5e71a1cc
5 zmienionych plików z 89 dodań i 16 usunięć

Wyświetl plik

@ -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)
{

Wyświetl plik

@ -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);

Wyświetl plik

@ -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

Wyświetl plik

@ -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)

Wyświetl plik

@ -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