diff --git a/plugins/samplesink/bladerfoutput/bladerfoutput.cpp b/plugins/samplesink/bladerfoutput/bladerfoutput.cpp index 6e89f8eaa..d61dd41dd 100644 --- a/plugins/samplesink/bladerfoutput/bladerfoutput.cpp +++ b/plugins/samplesink/bladerfoutput/bladerfoutput.cpp @@ -119,6 +119,11 @@ bool BladerfOutput::openDevice() return true; } +void BladerfOutput::init() +{ + applySettings(m_settings, true); +} + bool BladerfOutput::start() { // QMutexLocker mutexLocker(&m_mutex); diff --git a/plugins/samplesink/bladerfoutput/bladerfoutput.h b/plugins/samplesink/bladerfoutput/bladerfoutput.h index c668575cd..3e8a4d50f 100644 --- a/plugins/samplesink/bladerfoutput/bladerfoutput.h +++ b/plugins/samplesink/bladerfoutput/bladerfoutput.h @@ -94,6 +94,7 @@ public: virtual ~BladerfOutput(); virtual void destroy(); + virtual void init(); virtual bool start(); virtual void stop(); diff --git a/plugins/samplesink/filesink/filesinkoutput.cpp b/plugins/samplesink/filesink/filesinkoutput.cpp index b94535a34..64bec1646 100644 --- a/plugins/samplesink/filesink/filesinkoutput.cpp +++ b/plugins/samplesink/filesink/filesinkoutput.cpp @@ -79,6 +79,11 @@ void FileSinkOutput::openFileStream() qDebug() << "FileSinkOutput::openFileStream: " << m_fileName.toStdString().c_str(); } +void FileSinkOutput::init() +{ + applySettings(m_settings, true); +} + bool FileSinkOutput::start() { QMutexLocker mutexLocker(&m_mutex); diff --git a/plugins/samplesink/filesink/filesinkoutput.h b/plugins/samplesink/filesink/filesinkoutput.h index 3117f4b3d..3f612d52c 100644 --- a/plugins/samplesink/filesink/filesinkoutput.h +++ b/plugins/samplesink/filesink/filesinkoutput.h @@ -174,6 +174,7 @@ public: virtual ~FileSinkOutput(); virtual void destroy(); + virtual void init(); virtual bool start(); virtual void stop(); diff --git a/plugins/samplesink/hackrfoutput/hackrfoutput.cpp b/plugins/samplesink/hackrfoutput/hackrfoutput.cpp index e613bc793..42d4d18aa 100644 --- a/plugins/samplesink/hackrfoutput/hackrfoutput.cpp +++ b/plugins/samplesink/hackrfoutput/hackrfoutput.cpp @@ -104,6 +104,11 @@ bool HackRFOutput::openDevice() return true; } +void HackRFOutput::init() +{ + applySettings(m_settings, true); +} + bool HackRFOutput::start() { if (!m_dev) { diff --git a/plugins/samplesink/hackrfoutput/hackrfoutput.h b/plugins/samplesink/hackrfoutput/hackrfoutput.h index c2e9bb30f..302dfcb65 100644 --- a/plugins/samplesink/hackrfoutput/hackrfoutput.h +++ b/plugins/samplesink/hackrfoutput/hackrfoutput.h @@ -94,6 +94,7 @@ public: virtual ~HackRFOutput(); virtual void destroy(); + virtual void init(); virtual bool start(); virtual void stop(); diff --git a/plugins/samplesink/limesdroutput/limesdroutput.cpp b/plugins/samplesink/limesdroutput/limesdroutput.cpp index 5ce4dc929..f7fae80df 100644 --- a/plugins/samplesink/limesdroutput/limesdroutput.cpp +++ b/plugins/samplesink/limesdroutput/limesdroutput.cpp @@ -346,6 +346,11 @@ void LimeSDROutput::releaseChannel() m_channelAcquired = false; } +void LimeSDROutput::init() +{ + applySettings(m_settings, true, false); +} + bool LimeSDROutput::start() { if (!m_deviceShared.m_deviceParams->getDevice()) { diff --git a/plugins/samplesink/limesdroutput/limesdroutput.h b/plugins/samplesink/limesdroutput/limesdroutput.h index 19571645e..e80be20e7 100644 --- a/plugins/samplesink/limesdroutput/limesdroutput.h +++ b/plugins/samplesink/limesdroutput/limesdroutput.h @@ -188,6 +188,7 @@ public: virtual ~LimeSDROutput(); virtual void destroy(); + virtual void init(); virtual bool start(); virtual void stop(); diff --git a/plugins/samplesink/plutosdroutput/plutosdroutput.cpp b/plugins/samplesink/plutosdroutput/plutosdroutput.cpp index 54d6ae071..a122e2db7 100644 --- a/plugins/samplesink/plutosdroutput/plutosdroutput.cpp +++ b/plugins/samplesink/plutosdroutput/plutosdroutput.cpp @@ -59,6 +59,11 @@ void PlutoSDROutput::destroy() delete this; } +void PlutoSDROutput::init() +{ + applySettings(m_settings, true); +} + bool PlutoSDROutput::start() { if (!m_deviceShared.m_deviceParams->getBox()) { diff --git a/plugins/samplesink/plutosdroutput/plutosdroutput.h b/plugins/samplesink/plutosdroutput/plutosdroutput.h index 9606469a0..0f1b5bdaa 100644 --- a/plugins/samplesink/plutosdroutput/plutosdroutput.h +++ b/plugins/samplesink/plutosdroutput/plutosdroutput.h @@ -76,6 +76,7 @@ public: ~PlutoSDROutput(); virtual void destroy(); + virtual void init(); virtual bool start(); virtual void stop(); diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp index db4e775c2..2272fe15a 100644 --- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp +++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp @@ -87,6 +87,11 @@ bool SDRdaemonSinkOutput::start() return true; } +void SDRdaemonSinkOutput::init() +{ + applySettings(m_settings, true); +} + void SDRdaemonSinkOutput::stop() { qDebug() << "SDRdaemonSinkOutput::stop"; diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.h b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.h index 0be2c199d..8faec9bf2 100644 --- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.h +++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.h @@ -155,6 +155,7 @@ public: virtual ~SDRdaemonSinkOutput(); virtual void destroy(); + virtual void init(); virtual bool start(); virtual void stop(); diff --git a/sdrbase/dsp/devicesamplesink.h b/sdrbase/dsp/devicesamplesink.h index a76d8d18e..3c6685eea 100644 --- a/sdrbase/dsp/devicesamplesink.h +++ b/sdrbase/dsp/devicesamplesink.h @@ -38,6 +38,7 @@ public: virtual ~DeviceSampleSink(); virtual void destroy() = 0; + virtual void init() = 0; //!< initializations to be done when all collaborating objects are created and possibly connected virtual bool start() = 0; virtual void stop() = 0; diff --git a/sdrgui/mainwindow.cpp b/sdrgui/mainwindow.cpp index b34636141..1e8140e4c 100644 --- a/sdrgui/mainwindow.cpp +++ b/sdrgui/mainwindow.cpp @@ -334,6 +334,7 @@ void MainWindow::addSinkDevice() m_deviceUIs.back()); m_deviceUIs.back()->m_deviceSinkAPI->getSampleSink()->setMessageQueueToGUI(pluginUI->getInputMessageQueue()); m_deviceUIs.back()->m_deviceSinkAPI->setSampleSinkPluginInstanceUI(pluginUI); + m_deviceUIs.back()->m_deviceSinkAPI->getSampleSink()->init(); setDeviceGUI(deviceTabIndex, gui, m_deviceUIs.back()->m_deviceSinkAPI->getSampleSinkDisplayName(), false); } @@ -1183,6 +1184,7 @@ void MainWindow::on_sampleSink_changed() deviceUI->m_deviceSinkAPI->getSampleSink()->setMessageQueueToGUI(pluginUI->getInputMessageQueue()); deviceUI->m_deviceSinkAPI->setSampleSinkPluginInstanceUI(pluginUI); setDeviceGUI(currentSinkTabIndex, gui, deviceUI->m_deviceSinkAPI->getSampleSinkDisplayName(), false); + m_deviceUIs.back()->m_deviceSinkAPI->getSampleSink()->init(); deviceUI->m_deviceSinkAPI->loadSinkSettings(m_settings.getWorkingPreset()); // load new API settings }