mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-12-23 10:05:46 -05:00
MIMO: add channels
This commit is contained in:
parent
75ee688ac2
commit
f220927704
@ -48,6 +48,9 @@ DeviceUISet::DeviceUISet(int tabIndex, int deviceType, QTimer& timer)
|
|||||||
m_deviceAPI = 0;
|
m_deviceAPI = 0;
|
||||||
m_deviceSinkEngine = 0;
|
m_deviceSinkEngine = 0;
|
||||||
m_deviceTabIndex = tabIndex;
|
m_deviceTabIndex = tabIndex;
|
||||||
|
m_nbAvailableRxChannels = 0; // updated at enumeration for UI selector
|
||||||
|
m_nbAvailableTxChannels = 0; // updated at enumeration for UI selector
|
||||||
|
m_nbAvailableMIMOChannels = 0; // updated at enumeration for UI selector
|
||||||
|
|
||||||
// m_spectrum needs to have its font to be set since it cannot be inherited from the main window
|
// m_spectrum needs to have its font to be set since it cannot be inherited from the main window
|
||||||
QFont font;
|
QFont font;
|
||||||
|
@ -73,6 +73,14 @@ public:
|
|||||||
void loadTxChannelSettings(const Preset* preset, PluginAPI *pluginAPI);
|
void loadTxChannelSettings(const Preset* preset, PluginAPI *pluginAPI);
|
||||||
void saveTxChannelSettings(Preset* preset);
|
void saveTxChannelSettings(Preset* preset);
|
||||||
|
|
||||||
|
// These are the number of channel types available for selection
|
||||||
|
void setNumberOfAvailableRxChannels(int number) { m_nbAvailableRxChannels = number; }
|
||||||
|
void setNumberOfAvailableTxChannels(int number) { m_nbAvailableTxChannels = number; }
|
||||||
|
void setNumberOfAvailableMIMOChannels(int number) { m_nbAvailableMIMOChannels = number; }
|
||||||
|
int getNumberOfAvailableRxChannels() const { return m_nbAvailableRxChannels; }
|
||||||
|
int getNumberOfAvailableTxChannels() const { return m_nbAvailableTxChannels; }
|
||||||
|
int getNumberOfAvailableMIMOChannels() const { return m_nbAvailableMIMOChannels; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct ChannelInstanceRegistration
|
struct ChannelInstanceRegistration
|
||||||
{
|
{
|
||||||
@ -97,6 +105,9 @@ private:
|
|||||||
ChannelInstanceRegistrations m_rxChannelInstanceRegistrations;
|
ChannelInstanceRegistrations m_rxChannelInstanceRegistrations;
|
||||||
ChannelInstanceRegistrations m_txChannelInstanceRegistrations;
|
ChannelInstanceRegistrations m_txChannelInstanceRegistrations;
|
||||||
int m_deviceTabIndex;
|
int m_deviceTabIndex;
|
||||||
|
int m_nbAvailableRxChannels; //!< Number of Rx channels available for selection
|
||||||
|
int m_nbAvailableTxChannels; //!< Number of Tx channels available for selection
|
||||||
|
int m_nbAvailableMIMOChannels; //!< Number of MIMO channels available for selection
|
||||||
|
|
||||||
void renameRxChannelInstances();
|
void renameRxChannelInstances();
|
||||||
void renameTxChannelInstances();
|
void renameTxChannelInstances();
|
||||||
|
@ -222,6 +222,7 @@ MainWindow::MainWindow(qtwebapp::LoggerWithFile *logger, const MainParser& parse
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_mimoEnabled = parser.getMIMOSupport();
|
m_mimoEnabled = parser.getMIMOSupport();
|
||||||
|
|
||||||
m_apiAdapter = new WebAPIAdapterGUI(*this);
|
m_apiAdapter = new WebAPIAdapterGUI(*this);
|
||||||
m_requestMapper = new WebAPIRequestMapper(this);
|
m_requestMapper = new WebAPIRequestMapper(this);
|
||||||
m_requestMapper->setAdapter(m_apiAdapter);
|
m_requestMapper->setAdapter(m_apiAdapter);
|
||||||
@ -283,6 +284,7 @@ void MainWindow::addSourceDevice(int deviceIndex)
|
|||||||
m_pluginManager->listRxChannels(channelNames);
|
m_pluginManager->listRxChannels(channelNames);
|
||||||
QStringList channelNamesList(channelNames);
|
QStringList channelNamesList(channelNames);
|
||||||
m_deviceUIs.back()->m_samplingDeviceControl->getChannelSelector()->addItems(channelNamesList);
|
m_deviceUIs.back()->m_samplingDeviceControl->getChannelSelector()->addItems(channelNamesList);
|
||||||
|
m_deviceUIs.back()->setNumberOfAvailableRxChannels(channelNamesList.size());
|
||||||
|
|
||||||
connect(m_deviceUIs.back()->m_samplingDeviceControl->getAddChannelButton(), SIGNAL(clicked(bool)), this, SLOT(channelAddClicked(bool)));
|
connect(m_deviceUIs.back()->m_samplingDeviceControl->getAddChannelButton(), SIGNAL(clicked(bool)), this, SLOT(channelAddClicked(bool)));
|
||||||
|
|
||||||
@ -357,6 +359,7 @@ void MainWindow::addSinkDevice()
|
|||||||
m_pluginManager->listTxChannels(channelNames);
|
m_pluginManager->listTxChannels(channelNames);
|
||||||
QStringList channelNamesList(channelNames);
|
QStringList channelNamesList(channelNames);
|
||||||
m_deviceUIs.back()->m_samplingDeviceControl->getChannelSelector()->addItems(channelNamesList);
|
m_deviceUIs.back()->m_samplingDeviceControl->getChannelSelector()->addItems(channelNamesList);
|
||||||
|
m_deviceUIs.back()->setNumberOfAvailableTxChannels(channelNamesList.size());
|
||||||
|
|
||||||
connect(m_deviceUIs.back()->m_samplingDeviceControl->getAddChannelButton(), SIGNAL(clicked(bool)), this, SLOT(channelAddClicked(bool)));
|
connect(m_deviceUIs.back()->m_samplingDeviceControl->getAddChannelButton(), SIGNAL(clicked(bool)), this, SLOT(channelAddClicked(bool)));
|
||||||
|
|
||||||
@ -430,12 +433,13 @@ void MainWindow::addMIMODevice()
|
|||||||
m_pluginManager->listRxChannels(rxChannelNames);
|
m_pluginManager->listRxChannels(rxChannelNames);
|
||||||
QStringList rxChannelNamesList(rxChannelNames);
|
QStringList rxChannelNamesList(rxChannelNames);
|
||||||
channelSelector->addItems(rxChannelNamesList);
|
channelSelector->addItems(rxChannelNamesList);
|
||||||
channelSelector->insertSeparator(channelSelector->count());
|
m_deviceUIs.back()->setNumberOfAvailableRxChannels(rxChannelNamesList.size());
|
||||||
// Add Tx channels
|
// Add Tx channels
|
||||||
QList<QString> txChannelNames;
|
QList<QString> txChannelNames;
|
||||||
m_pluginManager->listTxChannels(txChannelNames);
|
m_pluginManager->listTxChannels(txChannelNames);
|
||||||
QStringList txChannelNamesList(txChannelNames);
|
QStringList txChannelNamesList(txChannelNames);
|
||||||
channelSelector->addItems(txChannelNamesList);
|
channelSelector->addItems(txChannelNamesList);
|
||||||
|
m_deviceUIs.back()->setNumberOfAvailableTxChannels(txChannelNamesList.size());
|
||||||
// TODO: add MIMO channels
|
// TODO: add MIMO channels
|
||||||
|
|
||||||
connect(m_deviceUIs.back()->m_samplingDeviceControl->getAddChannelButton(), SIGNAL(clicked(bool)), this, SLOT(channelAddClicked(bool)));
|
connect(m_deviceUIs.back()->m_samplingDeviceControl->getAddChannelButton(), SIGNAL(clicked(bool)), this, SLOT(channelAddClicked(bool)));
|
||||||
@ -1873,6 +1877,22 @@ void MainWindow::channelAddClicked(bool checked)
|
|||||||
m_pluginManager->createTxChannelInstance(
|
m_pluginManager->createTxChannelInstance(
|
||||||
deviceUI->m_samplingDeviceControl->getChannelSelector()->currentIndex(), deviceUI, deviceUI->m_deviceAPI);
|
deviceUI->m_samplingDeviceControl->getChannelSelector()->currentIndex(), deviceUI, deviceUI->m_deviceAPI);
|
||||||
}
|
}
|
||||||
|
else if (deviceUI->m_deviceMIMOEngine) // MIMO device => all possible channels. Depends on index range
|
||||||
|
{
|
||||||
|
int nbRxChannels = deviceUI->getNumberOfAvailableRxChannels();
|
||||||
|
int nbTxChannels = deviceUI->getNumberOfAvailableTxChannels();
|
||||||
|
int selectedIndex = deviceUI->m_samplingDeviceControl->getChannelSelector()->currentIndex();
|
||||||
|
qDebug("MainWindow::channelAddClicked: MIMO: tab: %d nbRx: %d nbTx: %d selected: %d",
|
||||||
|
currentSourceTabIndex, nbRxChannels, nbTxChannels, selectedIndex);
|
||||||
|
|
||||||
|
if (selectedIndex < nbRxChannels) {
|
||||||
|
m_pluginManager->createRxChannelInstance(
|
||||||
|
selectedIndex, deviceUI, deviceUI->m_deviceAPI);
|
||||||
|
} else if (selectedIndex < nbRxChannels + nbTxChannels) {
|
||||||
|
m_pluginManager->createTxChannelInstance(
|
||||||
|
selectedIndex - nbRxChannels, deviceUI, deviceUI->m_deviceAPI);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user