From 2af1f56fea1ef949f985b84acecafa772e5441c6 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 17 Sep 2017 02:02:41 +0200 Subject: [PATCH] SDRdaemon input: fixed reporting to the GUI. Device sample source: cleanup --- .../sdrdaemonsource/sdrdaemonsourcegui.cpp | 2 +- .../sdrdaemonsource/sdrdaemonsourceinput.cpp | 23 ++++++++++++++++++- .../sdrdaemonsourceudphandler.cpp | 8 ++----- sdrbase/dsp/devicesamplesource.h | 2 -- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.cpp b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.cpp index 34eb57b7b..54b5d12d5 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.cpp +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.cpp @@ -258,7 +258,7 @@ void SDRdaemonSourceGui::handleInputMessages() while ((message = m_inputMessageQueue.pop()) != 0) { - qDebug("SDRdaemonGui::handleInputMessages: message: %s", message->getIdentifier()); + //qDebug("SDRdaemonGui::handleInputMessages: message: %s", message->getIdentifier()); if (DSPSignalNotification::match(*message)) { diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp index 3f725d439..723638bf0 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp @@ -52,7 +52,7 @@ SDRdaemonSourceInput::SDRdaemonSourceInput(DeviceSourceAPI *deviceAPI) : m_autoCorrBuffer(false) { m_sampleFifo.setSize(96000 * 4); - m_SDRdaemonUDPHandler = new SDRdaemonSourceUDPHandler(&m_sampleFifo, getMessageQueueToGUI(), m_deviceAPI); + m_SDRdaemonUDPHandler = new SDRdaemonSourceUDPHandler(&m_sampleFifo, &m_inputMessageQueue, m_deviceAPI); m_SDRdaemonUDPHandler->connectTimer(&m_masterTimer); char recFileNameCStr[30]; @@ -175,6 +175,26 @@ bool SDRdaemonSourceInput::handleMessage(const Message& message) { return true; } + else if (MsgReportSDRdaemonSourceStreamData::match(message)) + { + // Forward message to the GUI if it is present + if (getMessageQueueToGUI()) { + getMessageQueueToGUI()->push(const_cast(&message)); + return false; // deletion of message is handled by the GUI + } else { + return true; // delete the unused message + } + } + else if (MsgReportSDRdaemonSourceStreamTiming::match(message)) + { + // Forward message to the GUI if it is present + if (getMessageQueueToGUI()) { + getMessageQueueToGUI()->push(const_cast(&message)); + return false; // deletion of message is handled by the GUI + } else { + return true; // delete the unused message + } + } else { return false; @@ -183,6 +203,7 @@ bool SDRdaemonSourceInput::handleMessage(const Message& message) void SDRdaemonSourceInput::setMessageQueueToGUI(MessageQueue *queue) { + qDebug("SDRdaemonSourceInput::setMessageQueueToGUI: %p", queue); DeviceSampleSource::setMessageQueueToGUI(queue); m_SDRdaemonUDPHandler->setMessageQueueToGUI(queue); } diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.cpp b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.cpp index f84f280c2..58eae51fc 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.cpp +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.cpp @@ -180,9 +180,7 @@ void SDRdaemonSourceUDPHandler::processData() m_tv_sec, m_tv_usec); - if (m_outputMessageQueueToGUI) { - m_outputMessageQueueToGUI->push(report); - } + m_outputMessageQueueToGUI->push(report); } } @@ -262,8 +260,6 @@ void SDRdaemonSourceUDPHandler::tick() nbOriginalBlocks, nbFECblocks); - if (m_outputMessageQueueToGUI) { - m_outputMessageQueueToGUI->push(report); - } + m_outputMessageQueueToGUI->push(report); } } diff --git a/sdrbase/dsp/devicesamplesource.h b/sdrbase/dsp/devicesamplesource.h index dc04b98b3..1b5a8d9cc 100644 --- a/sdrbase/dsp/devicesamplesource.h +++ b/sdrbase/dsp/devicesamplesource.h @@ -44,7 +44,6 @@ public: MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } void setMessageQueueToGUI(MessageQueue *queue) { m_guiMessageQueue = queue; } MessageQueue *getMessageQueueToGUI() { return m_guiMessageQueue; } - //MessageQueue *getOutputMessageQueueToGUI() { return &m_outputMessageQueueToGUI; } // TODO: remove SampleSinkFifo* getSampleFifo() { return &m_sampleFifo; } protected slots: @@ -54,7 +53,6 @@ protected: SampleSinkFifo m_sampleFifo; MessageQueue m_inputMessageQueue; //!< Input queue to the source MessageQueue *m_guiMessageQueue; //!< Input message queue to the GUI - MessageQueue m_outputMessageQueueToGUI; //!< Output queue specialized for the source GUI // TODO: remove }; #endif // INCLUDE_SAMPLESOURCE_H