From 71de6774c431399004704d9160d973a6117d30d5 Mon Sep 17 00:00:00 2001 From: f4exb Date: Tue, 21 May 2019 01:52:13 +0200 Subject: [PATCH] MIMO: dialog to select device stream from channel. Implemented in AM demod --- plugins/channelrx/demodam/amdemod.cpp | 5 +++++ plugins/channelrx/demodam/amdemod.h | 2 ++ plugins/channelrx/demodam/amdemodgui.cpp | 10 +++++++++- sdrgui/CMakeLists.txt | 3 +++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/plugins/channelrx/demodam/amdemod.cpp b/plugins/channelrx/demodam/amdemod.cpp index 29f03e81a..99eeb328e 100644 --- a/plugins/channelrx/demodam/amdemod.cpp +++ b/plugins/channelrx/demodam/amdemod.cpp @@ -107,6 +107,11 @@ AMDemod::~AMDemod() delete SSBFilter; } +uint32_t AMDemod::getNumberOfDeviceStreams() const +{ + return m_deviceAPI->getNbSourceStreams(); +} + void AMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst) { (void) firstOfBurst; diff --git a/plugins/channelrx/demodam/amdemod.h b/plugins/channelrx/demodam/amdemod.h index 7abf39f22..9baba749a 100644 --- a/plugins/channelrx/demodam/amdemod.h +++ b/plugins/channelrx/demodam/amdemod.h @@ -158,6 +158,8 @@ public: m_magsqCount = 0; } + uint32_t getNumberOfDeviceStreams() const; + static const QString m_channelIdURI; static const QString m_channelId; diff --git a/plugins/channelrx/demodam/amdemodgui.cpp b/plugins/channelrx/demodam/amdemodgui.cpp index 34ecc7eb7..8a4aabfc6 100644 --- a/plugins/channelrx/demodam/amdemodgui.cpp +++ b/plugins/channelrx/demodam/amdemodgui.cpp @@ -31,6 +31,7 @@ #include "util/simpleserializer.h" #include "util/db.h" #include "gui/basicchannelsettingsdialog.h" +#include "gui/devicestreamselectiondialog.h" #include "dsp/dspengine.h" #include "mainwindow.h" #include "gui/crightclickenabler.h" @@ -232,7 +233,14 @@ void AMDemodGUI::onMenuDialogCalled(const QPoint &p) } else if ((m_contextMenuType == ContextMenuStreamSettings) && (m_deviceUISet->m_deviceMIMOEngine)) { - // TODO: open select MIMO channel dialog + DeviceStreamSelectionDialog dialog(this); + dialog.setNumberOfStreams(m_amDemod->getNumberOfDeviceStreams()); + dialog.setStreamIndex(m_settings.m_streamIndex); + dialog.move(p); + dialog.exec(); + + m_settings.m_streamIndex = dialog.getSelectedStreamIndex(); + applySettings(); } resetContextMenuType(); diff --git a/sdrgui/CMakeLists.txt b/sdrgui/CMakeLists.txt index d825c6a72..99efc2328 100644 --- a/sdrgui/CMakeLists.txt +++ b/sdrgui/CMakeLists.txt @@ -20,6 +20,7 @@ set(sdrgui_SOURCES gui/comboboxnoarrow.cpp gui/crightclickenabler.cpp gui/cwkeyergui.cpp + gui/devicestreamselectiondialog.cpp gui/editcommanddialog.cpp gui/externalclockbutton.cpp gui/externalclockdialog.cpp @@ -85,6 +86,7 @@ set(sdrgui_HEADERS gui/comboboxnoarrow.h gui/crightclickenabler.h gui/cwkeyergui.h + gui/devicestreamselectiondialog.h gui/editcommanddialog.h gui/externalclockbutton.h gui/externalclockdialog.h @@ -146,6 +148,7 @@ set(sdrgui_FORMS gui/basicchannelsettingsdialog.ui gui/basicdevicesettingsdialog.ui gui/commandoutputdialog.ui + gui/devicestreamselectiondialog.ui gui/cwkeyergui.ui gui/editcommanddialog.ui gui/externalclockdialog.ui