From 35b6409753a169f914a5a59f1bdfbc7eda7b18d5 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 26 Dec 2016 15:26:25 +0100 Subject: [PATCH] Multiple transmission channels warning when adding more than one channel --- sdrbase/device/devicesinkapi.cpp | 5 +++++ sdrbase/device/devicesinkapi.h | 1 + sdrbase/dsp/dspdevicesinkengine.h | 2 ++ sdrbase/mainwindow.cpp | 6 ++++++ 4 files changed, 14 insertions(+) diff --git a/sdrbase/device/devicesinkapi.cpp b/sdrbase/device/devicesinkapi.cpp index e4172cd3c..749cd885a 100644 --- a/sdrbase/device/devicesinkapi.cpp +++ b/sdrbase/device/devicesinkapi.cpp @@ -72,6 +72,11 @@ void DeviceSinkAPI::removeThreadedSource(ThreadedBasebandSampleSource* source) m_deviceSinkEngine->removeThreadedSource(source); } +uint32_t DeviceSinkAPI::getNumberOfSources() +{ + return m_deviceSinkEngine->getNumberOfSources(); +} + void DeviceSinkAPI::setSink(DeviceSampleSink* sink) { m_deviceSinkEngine->setSink(sink); diff --git a/sdrbase/device/devicesinkapi.h b/sdrbase/device/devicesinkapi.h index 10c492260..4c6c638b6 100644 --- a/sdrbase/device/devicesinkapi.h +++ b/sdrbase/device/devicesinkapi.h @@ -47,6 +47,7 @@ public: void removeSource(BasebandSampleSource* sink); //!< Remove a baseband sample source from device engine void addThreadedSource(ThreadedBasebandSampleSource* sink); //!< Add a baseband sample source that will run on its own thread to device engine void removeThreadedSource(ThreadedBasebandSampleSource* sink); //!< Remove a baseband sample source that runs on its own thread from device engine + uint32_t getNumberOfSources(); void setSink(DeviceSampleSink* sink); //!< Set device engine sample sink type bool initGeneration(); //!< Initialize device engine generation sequence bool startGeneration(); //!< Start device engine generation sequence diff --git a/sdrbase/dsp/dspdevicesinkengine.h b/sdrbase/dsp/dspdevicesinkengine.h index f37c17925..6b1b0db94 100644 --- a/sdrbase/dsp/dspdevicesinkengine.h +++ b/sdrbase/dsp/dspdevicesinkengine.h @@ -72,6 +72,8 @@ public: void addThreadedSource(ThreadedBasebandSampleSource* source); //!< Add a baseband sample source that will run on its own thread void removeThreadedSource(ThreadedBasebandSampleSource* source); //!< Remove a baseband sample source that runs on its own thread + uint32_t getNumberOfSources() const { return m_basebandSampleSources.size() + m_threadedBasebandSampleSources.size(); } + void addSpectrumSink(BasebandSampleSink* spectrumSink); //!< Add a spectrum vis baseband sample sink void removeSpectrumSink(BasebandSampleSink* spectrumSink); //!< Add a spectrum vis baseband sample sink diff --git a/sdrbase/mainwindow.cpp b/sdrbase/mainwindow.cpp index df45dd14d..2dff670d1 100644 --- a/sdrbase/mainwindow.cpp +++ b/sdrbase/mainwindow.cpp @@ -829,6 +829,12 @@ void MainWindow::on_channel_addClicked(bool checked) } else if (deviceUI->m_deviceSinkEngine) // sink device => Tx channels { + uint32_t nbSources = deviceUI->m_deviceSinkAPI->getNumberOfSources(); + + if (nbSources > 0) { + QMessageBox::information(this, tr("Message"), tr("%1 channel(s) already in use. Multiple transmission channels is experimental. You may experience performance problems").arg(nbSources)); + } + m_pluginManager->createTxChannelInstance(deviceUI->m_samplingDeviceControl->getChannelSelector()->currentIndex(), deviceUI->m_deviceSinkAPI); } }