From 7bbc2749ebb0e5c2833e8b438269efae1c765599 Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 25 Feb 2022 23:43:50 +0100 Subject: [PATCH] Message pipes rework (2) --- plugins/channelrx/demodais/aisdemod.cpp | 12 +++--- plugins/channelrx/demodam/amdemod.cpp | 12 +++--- plugins/channelrx/demodam/amdemodsink.cpp | 12 +++--- plugins/channelrx/demoddab/dabdemod.cpp | 12 +++--- plugins/channelrx/demoddab/dabdemodsink.cpp | 12 +++--- plugins/channelrx/demoddsd/dsddemod.cpp | 12 +++--- plugins/channelrx/demoddsd/dsddemodsink.cpp | 12 +++--- plugins/channelrx/demodnfm/nfmdemod.cpp | 12 +++--- plugins/channelrx/demodnfm/nfmdemodsink.cpp | 12 +++--- plugins/channelrx/demodpacket/packetdemod.cpp | 12 +++--- plugins/channelrx/demodpager/pagerdemod.cpp | 12 +++--- plugins/channelrx/demodssb/ssbdemod.cpp | 24 ++++++----- plugins/channelrx/demodssb/ssbdemodsink.cpp | 19 +++++---- plugins/channelrx/demodwfm/wfmdemod.cpp | 13 +++--- plugins/channelrx/demodwfm/wfmdemodsink.cpp | 12 +++--- plugins/channeltx/modais/aismod.cpp | 12 +++--- plugins/channeltx/modais/aismodsource.cpp | 12 +++--- plugins/channeltx/modam/ammod.cpp | 12 +++--- plugins/channeltx/modam/ammodsource.cpp | 12 +++--- plugins/channeltx/modnfm/nfmmod.cpp | 12 +++--- plugins/channeltx/modnfm/nfmmodsource.cpp | 12 +++--- plugins/channeltx/modpacket/packetmod.cpp | 12 +++--- .../channeltx/modpacket/packetmodsource.cpp | 12 +++--- plugins/channeltx/modssb/ssbmod.cpp | 12 +++--- plugins/channeltx/modssb/ssbmodsource.cpp | 12 +++--- plugins/channeltx/modwfm/wfmmod.cpp | 12 +++--- plugins/channeltx/modwfm/wfmmodsource.cpp | 12 +++--- .../feature/demodanalyzer/demodanalyzer.cpp | 41 +++++++++++++------ sdrbase/channel/channelapi.h | 1 - sdrbase/dsp/datafifo.cpp | 3 ++ sdrbase/pipes/objectpipesregistrations.cpp | 15 ++++++- sdrbase/util/messagequeue.cpp | 1 + 32 files changed, 223 insertions(+), 182 deletions(-) diff --git a/plugins/channelrx/demodais/aisdemod.cpp b/plugins/channelrx/demodais/aisdemod.cpp index ad1c1a1a8..a8903c090 100644 --- a/plugins/channelrx/demodais/aisdemod.cpp +++ b/plugins/channelrx/demodais/aisdemod.cpp @@ -362,19 +362,19 @@ bool AISDemod::deserialize(const QByteArray& data) void AISDemod::sendSampleRateToDemodAnalyzer() { - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(this, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(this, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue *messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create( this, AISDemodSettings::AISDEMOD_CHANNEL_SAMPLE_RATE ); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channelrx/demodam/amdemod.cpp b/plugins/channelrx/demodam/amdemod.cpp index 2100745f4..b43fac231 100644 --- a/plugins/channelrx/demodam/amdemod.cpp +++ b/plugins/channelrx/demodam/amdemod.cpp @@ -282,19 +282,19 @@ bool AMDemod::deserialize(const QByteArray& data) void AMDemod::sendSampleRateToDemodAnalyzer() { - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(this, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(this, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue *messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create( this, getAudioSampleRate() ); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channelrx/demodam/amdemodsink.cpp b/plugins/channelrx/demodam/amdemodsink.cpp index 9dee01d79..d51fd4791 100644 --- a/plugins/channelrx/demodam/amdemodsink.cpp +++ b/plugins/channelrx/demodam/amdemodsink.cpp @@ -342,16 +342,16 @@ void AMDemodSink::applyAudioSampleRate(int sampleRate) m_syncAMAGC.resize(sampleRate/4, sampleRate/8, 0.1); m_pll.setSampleRate(sampleRate); - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(m_channel, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(m_channel, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue *messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create(m_channel, sampleRate); - (*it)->push(msg); + messageQueue->push(msg); } } diff --git a/plugins/channelrx/demoddab/dabdemod.cpp b/plugins/channelrx/demoddab/dabdemod.cpp index 88c90b016..0091ca7d3 100644 --- a/plugins/channelrx/demoddab/dabdemod.cpp +++ b/plugins/channelrx/demoddab/dabdemod.cpp @@ -369,19 +369,19 @@ bool DABDemod::deserialize(const QByteArray& data) void DABDemod::sendSampleRateToDemodAnalyzer() { - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(this, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(this, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue *messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create( this, getAudioSampleRate() ); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channelrx/demoddab/dabdemodsink.cpp b/plugins/channelrx/demoddab/dabdemodsink.cpp index 9d181a495..70c57a0ac 100644 --- a/plugins/channelrx/demoddab/dabdemodsink.cpp +++ b/plugins/channelrx/demoddab/dabdemodsink.cpp @@ -648,16 +648,16 @@ void DABDemodSink::applyAudioSampleRate(int sampleRate) m_audioFifo.setSize(sampleRate); - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(m_channel, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(m_channel, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue *messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create(m_channel, sampleRate); - (*it)->push(msg); + messageQueue->push(msg); } } diff --git a/plugins/channelrx/demoddsd/dsddemod.cpp b/plugins/channelrx/demoddsd/dsddemod.cpp index 8e21022db..10061d958 100644 --- a/plugins/channelrx/demoddsd/dsddemod.cpp +++ b/plugins/channelrx/demoddsd/dsddemod.cpp @@ -308,19 +308,19 @@ bool DSDDemod::deserialize(const QByteArray& data) void DSDDemod::sendSampleRateToDemodAnalyzer() { - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(this, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(this, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue *messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create( this, getAudioSampleRate() ); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channelrx/demoddsd/dsddemodsink.cpp b/plugins/channelrx/demoddsd/dsddemodsink.cpp index 6ba7cdf30..0be93437f 100644 --- a/plugins/channelrx/demoddsd/dsddemodsink.cpp +++ b/plugins/channelrx/demoddsd/dsddemodsink.cpp @@ -328,16 +328,16 @@ void DSDDemodSink::applyAudioSampleRate(int sampleRate) m_dsdDecoder.setUpsampling(upsampling); m_audioSampleRate = sampleRate; - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(m_channel, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(m_channel, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue *messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create(m_channel, sampleRate); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channelrx/demodnfm/nfmdemod.cpp b/plugins/channelrx/demodnfm/nfmdemod.cpp index 40f0d2903..5ea986a2b 100644 --- a/plugins/channelrx/demodnfm/nfmdemod.cpp +++ b/plugins/channelrx/demodnfm/nfmdemod.cpp @@ -293,19 +293,19 @@ bool NFMDemod::deserialize(const QByteArray& data) void NFMDemod::sendSampleRateToDemodAnalyzer() { - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(this, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(this, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue *messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create( this, getAudioSampleRate() ); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channelrx/demodnfm/nfmdemodsink.cpp b/plugins/channelrx/demodnfm/nfmdemodsink.cpp index 88639f467..4dc07c01f 100644 --- a/plugins/channelrx/demodnfm/nfmdemodsink.cpp +++ b/plugins/channelrx/demodnfm/nfmdemodsink.cpp @@ -409,16 +409,16 @@ void NFMDemodSink::applyAudioSampleRate(unsigned int sampleRate) m_interpolatorDistanceRemain = m_interpolatorDistance; m_audioSampleRate = sampleRate; - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(m_channel, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(m_channel, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue *messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create(m_channel, sampleRate); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channelrx/demodpacket/packetdemod.cpp b/plugins/channelrx/demodpacket/packetdemod.cpp index 0bae4b0be..74ccf6cc7 100644 --- a/plugins/channelrx/demodpacket/packetdemod.cpp +++ b/plugins/channelrx/demodpacket/packetdemod.cpp @@ -335,19 +335,19 @@ void PacketDemod::applySettings(const PacketDemodSettings& settings, bool force) void PacketDemod::sendSampleRateToDemodAnalyzer() { - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(this, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(this, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue *messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create( this, PacketDemodSettings::PACKETDEMOD_CHANNEL_SAMPLE_RATE ); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channelrx/demodpager/pagerdemod.cpp b/plugins/channelrx/demodpager/pagerdemod.cpp index 61ea2e8a9..aebb36d39 100644 --- a/plugins/channelrx/demodpager/pagerdemod.cpp +++ b/plugins/channelrx/demodpager/pagerdemod.cpp @@ -333,19 +333,19 @@ bool PagerDemod::deserialize(const QByteArray& data) void PagerDemod::sendSampleRateToDemodAnalyzer() { - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(this, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(this, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue *messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create( this, PagerDemodSettings::m_channelSampleRate ); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channelrx/demodssb/ssbdemod.cpp b/plugins/channelrx/demodssb/ssbdemod.cpp index 0a5f52d51..6f2f34586 100644 --- a/plugins/channelrx/demodssb/ssbdemod.cpp +++ b/plugins/channelrx/demodssb/ssbdemod.cpp @@ -303,19 +303,23 @@ bool SSBDemod::deserialize(const QByteArray& data) void SSBDemod::sendSampleRateToDemodAnalyzer() { - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(this, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(this, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe: pipes) { - MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create( - this, - getAudioSampleRate() - ); - (*it)->push(msg); + MessageQueue *messageQueue = qobject_cast(pipe->m_element); + + if (messageQueue) + { + MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create( + this, + getAudioSampleRate() + ); + messageQueue->push(msg); + } } } } diff --git a/plugins/channelrx/demodssb/ssbdemodsink.cpp b/plugins/channelrx/demodssb/ssbdemodsink.cpp index dc03063f4..c715baa0c 100644 --- a/plugins/channelrx/demodssb/ssbdemodsink.cpp +++ b/plugins/channelrx/demodssb/ssbdemodsink.cpp @@ -309,16 +309,21 @@ void SSBDemodSink::applyAudioSampleRate(int sampleRate) m_audioFifo.setSize(sampleRate); m_audioSampleRate = sampleRate; - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(m_channel, "reportdemod"); - if (messageQueues) + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(m_channel, "reportdemod", pipes); + + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { - MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create(m_channel, sampleRate); - (*it)->push(msg); + MessageQueue* messageQueue = qobject_cast(pipe->m_element); + + if (messageQueue) + { + MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create(m_channel, sampleRate); + messageQueue->push(msg); + } } } } diff --git a/plugins/channelrx/demodwfm/wfmdemod.cpp b/plugins/channelrx/demodwfm/wfmdemod.cpp index 6814e6f42..dbc1286a1 100644 --- a/plugins/channelrx/demodwfm/wfmdemod.cpp +++ b/plugins/channelrx/demodwfm/wfmdemod.cpp @@ -269,19 +269,20 @@ bool WFMDemod::deserialize(const QByteArray& data) void WFMDemod::sendSampleRateToDemodAnalyzer() { - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(this, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(this, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe: pipes) { + MessageQueue* messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create( this, getAudioSampleRate() ); - (*it)->push(msg); + messageQueue->push(msg); + } } } diff --git a/plugins/channelrx/demodwfm/wfmdemodsink.cpp b/plugins/channelrx/demodwfm/wfmdemodsink.cpp index 7b086e9e5..1e8bfa3e8 100644 --- a/plugins/channelrx/demodwfm/wfmdemodsink.cpp +++ b/plugins/channelrx/demodwfm/wfmdemodsink.cpp @@ -180,16 +180,16 @@ void WFMDemodSink::applyAudioSampleRate(int sampleRate) m_interpolatorDistance = (Real) m_channelSampleRate / (Real) sampleRate; m_audioSampleRate = sampleRate; - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(m_channel, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(m_channel, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue* messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create(m_channel, sampleRate); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channeltx/modais/aismod.cpp b/plugins/channeltx/modais/aismod.cpp index 70b9bdb8b..d96e42f4e 100644 --- a/plugins/channeltx/modais/aismod.cpp +++ b/plugins/channeltx/modais/aismod.cpp @@ -488,19 +488,19 @@ bool AISMod::deserialize(const QByteArray& data) void AISMod::sendSampleRateToDemodAnalyzer() { - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(this, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(this, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue* messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create( this, AISModSettings::AISMOD_SAMPLE_RATE ); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channeltx/modais/aismodsource.cpp b/plugins/channeltx/modais/aismodsource.cpp index 1cc908a08..033142bae 100644 --- a/plugins/channeltx/modais/aismodsource.cpp +++ b/plugins/channeltx/modais/aismodsource.cpp @@ -364,16 +364,16 @@ void AISModSource::applyChannelSettings(int channelSampleRate, int channelFreque m_channelSampleRate = channelSampleRate; m_channelFrequencyOffset = channelFrequencyOffset; - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(m_channel, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(m_channel, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue* messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create(m_channel, m_channelSampleRate); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channeltx/modam/ammod.cpp b/plugins/channeltx/modam/ammod.cpp index d51c0b21d..f6f2717a3 100644 --- a/plugins/channeltx/modam/ammod.cpp +++ b/plugins/channeltx/modam/ammod.cpp @@ -357,19 +357,19 @@ bool AMMod::deserialize(const QByteArray& data) void AMMod::sendSampleRateToDemodAnalyzer() { - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(this, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(this, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue* messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create( this, getAudioSampleRate() ); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channeltx/modam/ammodsource.cpp b/plugins/channeltx/modam/ammodsource.cpp index d5d29720f..481dc489f 100644 --- a/plugins/channeltx/modam/ammodsource.cpp +++ b/plugins/channeltx/modam/ammodsource.cpp @@ -321,16 +321,16 @@ void AMModSource::applyAudioSampleRate(int sampleRate) m_cwKeyer.setSampleRate(sampleRate); m_cwKeyer.reset(); - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(m_channel, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(m_channel, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue* messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create(m_channel, sampleRate); - (*it)->push(msg); + messageQueue->push(msg); } } diff --git a/plugins/channeltx/modnfm/nfmmod.cpp b/plugins/channeltx/modnfm/nfmmod.cpp index 4e282df62..2036f1ca2 100644 --- a/plugins/channeltx/modnfm/nfmmod.cpp +++ b/plugins/channeltx/modnfm/nfmmod.cpp @@ -404,19 +404,19 @@ bool NFMMod::deserialize(const QByteArray& data) void NFMMod::sendSampleRateToDemodAnalyzer() { - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(this, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(this, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue* messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create( this, getAudioSampleRate() ); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channeltx/modnfm/nfmmodsource.cpp b/plugins/channeltx/modnfm/nfmmodsource.cpp index 88ba75580..7c1a21eac 100644 --- a/plugins/channeltx/modnfm/nfmmodsource.cpp +++ b/plugins/channeltx/modnfm/nfmmodsource.cpp @@ -359,16 +359,16 @@ void NFMModSource::applyAudioSampleRate(int sampleRate) m_audioSampleRate = sampleRate; applyFeedbackAudioSampleRate(m_feedbackAudioSampleRate); - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(m_channel, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(m_channel, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue* messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create(m_channel, sampleRate); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channeltx/modpacket/packetmod.cpp b/plugins/channeltx/modpacket/packetmod.cpp index e3a3f5681..0122f18b7 100644 --- a/plugins/channeltx/modpacket/packetmod.cpp +++ b/plugins/channeltx/modpacket/packetmod.cpp @@ -438,19 +438,19 @@ bool PacketMod::deserialize(const QByteArray& data) void PacketMod::sendSampleRateToDemodAnalyzer() { - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(this, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(this, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue* messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create( this, getSourceChannelSampleRate() ); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channeltx/modpacket/packetmodsource.cpp b/plugins/channeltx/modpacket/packetmodsource.cpp index 426d98cc4..6258d4b4c 100644 --- a/plugins/channeltx/modpacket/packetmodsource.cpp +++ b/plugins/channeltx/modpacket/packetmodsource.cpp @@ -417,16 +417,16 @@ void PacketModSource::applyChannelSettings(int channelSampleRate, int channelFre // Precalculate FM sensensity to save doing it in the loop m_phaseSensitivity = 2.0f * M_PI * m_settings.m_fmDeviation / (double)m_channelSampleRate; - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(m_channel, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(m_channel, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue* messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create(m_channel, m_channelSampleRate); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channeltx/modssb/ssbmod.cpp b/plugins/channeltx/modssb/ssbmod.cpp index 1596acbd1..0f6efb080 100644 --- a/plugins/channeltx/modssb/ssbmod.cpp +++ b/plugins/channeltx/modssb/ssbmod.cpp @@ -381,19 +381,19 @@ bool SSBMod::deserialize(const QByteArray& data) void SSBMod::sendSampleRateToDemodAnalyzer() { - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(this, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(this, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue* messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create( this, getAudioSampleRate() ); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channeltx/modssb/ssbmodsource.cpp b/plugins/channeltx/modssb/ssbmodsource.cpp index a0b150454..b70155d8e 100644 --- a/plugins/channeltx/modssb/ssbmodsource.cpp +++ b/plugins/channeltx/modssb/ssbmodsource.cpp @@ -620,16 +620,16 @@ void SSBModSource::applyAudioSampleRate(int sampleRate) applyFeedbackAudioSampleRate(m_feedbackAudioSampleRate); - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(m_channel, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(m_channel, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue* messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create(m_channel, sampleRate); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channeltx/modwfm/wfmmod.cpp b/plugins/channeltx/modwfm/wfmmod.cpp index 2f897e7d8..93d5b630f 100644 --- a/plugins/channeltx/modwfm/wfmmod.cpp +++ b/plugins/channeltx/modwfm/wfmmod.cpp @@ -343,19 +343,19 @@ bool WFMMod::deserialize(const QByteArray& data) void WFMMod::sendSampleRateToDemodAnalyzer() { - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(this, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(this, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue* messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create( this, getAudioSampleRate() ); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/channeltx/modwfm/wfmmodsource.cpp b/plugins/channeltx/modwfm/wfmmodsource.cpp index c39b9c13d..8e4d8e0b7 100644 --- a/plugins/channeltx/modwfm/wfmmodsource.cpp +++ b/plugins/channeltx/modwfm/wfmmodsource.cpp @@ -371,16 +371,16 @@ void WFMModSource::applyAudioSampleRate(int sampleRate) m_audioSampleRate = sampleRate; applyFeedbackAudioSampleRate(m_feedbackAudioSampleRate); - QList *messageQueues = MainCore::instance()->getMessagePipes().getMessageQueues(m_channel, "reportdemod"); + QList pipes; + MainCore::instance()->getMessagePipes2().getMessagePipes(m_channel, "reportdemod", pipes); - if (messageQueues) + if (pipes.size() > 0) { - QList::iterator it = messageQueues->begin(); - - for (; it != messageQueues->end(); ++it) + for (const auto& pipe : pipes) { + MessageQueue* messageQueue = qobject_cast(pipe->m_element); MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create(m_channel, sampleRate); - (*it)->push(msg); + messageQueue->push(msg); } } } diff --git a/plugins/feature/demodanalyzer/demodanalyzer.cpp b/plugins/feature/demodanalyzer/demodanalyzer.cpp index 0cf03e52b..565d3ee96 100644 --- a/plugins/feature/demodanalyzer/demodanalyzer.cpp +++ b/plugins/feature/demodanalyzer/demodanalyzer.cpp @@ -157,12 +157,13 @@ bool DemodAnalyzer::handleMessage(const Message& cmd) } else if (MsgSelectChannel::match(cmd)) { - qDebug() << "DemodAnalyzer::handleMessage: MsgSelectChannel"; MsgSelectChannel& cfg = (MsgSelectChannel&) cmd; ChannelAPI *selectedChannel = cfg.getChannel(); + qDebug("DemodAnalyzer::handleMessage: MsgSelectChannel: %p %s", + selectedChannel, qPrintable(selectedChannel->objectName())); setChannel(selectedChannel); MainCore::MsgChannelDemodQuery *msg = MainCore::MsgChannelDemodQuery::create(); - selectedChannel->getChannelMessageQueue()->push(msg); + selectedChannel->getInputMessageQueue()->push(msg); return true; } @@ -343,8 +344,16 @@ void DemodAnalyzer::setChannel(ChannelAPI *selectedChannel) m_worker->getInputMessageQueue()->push(msg); } - MessageQueue *messageQueue = mainCore->getMessagePipes().unregisterChannelToFeature(m_selectedChannel, this, "reportdemod"); - disconnect(messageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleChannelMessageQueue(MessageQueue*))); + ObjectPipe *messagePipe = mainCore->getMessagePipes2().unregisterProducerToConsumer(m_selectedChannel, this, "reportdemod"); + + if (messagePipe) + { + MessageQueue *messageQueue = qobject_cast(messagePipe->m_element); + + if (messageQueue) { + disconnect(messageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleChannelMessageQueue(MessageQueue*))); + } + } } m_dataPipe = mainCore->getDataPipes().registerProducerToConsumer(selectedChannel, this, "demod"); @@ -362,15 +371,23 @@ void DemodAnalyzer::setChannel(ChannelAPI *selectedChannel) } } - MessageQueue *messageQueue = mainCore->getMessagePipes().registerChannelToFeature(selectedChannel, this, "reportdemod"); + ObjectPipe *messagePipe = mainCore->getMessagePipes2().registerProducerToConsumer(selectedChannel, this, "reportdemod"); - QObject::connect( - messageQueue, - &MessageQueue::messageEnqueued, - this, - [=](){ this->handleChannelMessageQueue(messageQueue); }, - Qt::QueuedConnection - ); + if (messagePipe) + { + MessageQueue *messageQueue = qobject_cast(messagePipe->m_element); + + if (messageQueue) + { + QObject::connect( + messageQueue, + &MessageQueue::messageEnqueued, + this, + [=](){ this->handleChannelMessageQueue(messageQueue); }, + Qt::QueuedConnection + ); + } + } m_selectedChannel = selectedChannel; } diff --git a/sdrbase/channel/channelapi.h b/sdrbase/channel/channelapi.h index 79464bba4..d86f60a37 100644 --- a/sdrbase/channel/channelapi.h +++ b/sdrbase/channel/channelapi.h @@ -68,7 +68,6 @@ public: virtual void setMessageQueueToGUI(MessageQueue *queue) { m_guiMessageQueue = queue; } MessageQueue *getMessageQueueToGUI() { return m_guiMessageQueue; } MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } - MessageQueue *getChannelMessageQueue() { return &m_channelMessageQueue; } //!< Get the queue for plugin communication /** * API adapter for the channel settings GET requests diff --git a/sdrbase/dsp/datafifo.cpp b/sdrbase/dsp/datafifo.cpp index 5bdf802d1..329b62e2b 100644 --- a/sdrbase/dsp/datafifo.cpp +++ b/sdrbase/dsp/datafifo.cpp @@ -44,6 +44,7 @@ DataFifo::DataFifo(QObject* parent) : m_currentDataType(DataTypeI16), m_mutex(QMutex::Recursive) { + setObjectName("DataFifo"); m_suppressed = -1; m_size = 0; m_fill = 0; @@ -57,6 +58,7 @@ DataFifo::DataFifo(int size, QObject* parent) : m_currentDataType(DataTypeI16), m_mutex(QMutex::Recursive) { + setObjectName("DataFifo"); m_suppressed = -1; create(size); } @@ -67,6 +69,7 @@ DataFifo::DataFifo(const DataFifo& other) : m_currentDataType(DataTypeI16), m_mutex(QMutex::Recursive) { + setObjectName("DataFifo"); m_suppressed = -1; m_size = m_data.size(); m_fill = 0; diff --git a/sdrbase/pipes/objectpipesregistrations.cpp b/sdrbase/pipes/objectpipesregistrations.cpp index 87084ff44..c885f26a9 100644 --- a/sdrbase/pipes/objectpipesregistrations.cpp +++ b/sdrbase/pipes/objectpipesregistrations.cpp @@ -29,7 +29,6 @@ ObjectPipesRegistrations::~ObjectPipesRegistrations() ObjectPipe *ObjectPipesRegistrations::registerProducerToConsumer(const QObject *producer, const QObject *consumer, const QString& type) { - qDebug("ObjectPipesRegistrations::registerProducerToConsumer: %p %p %s", producer, consumer, qPrintable("type")); int typeId; QMutexLocker mlock(&m_mutex); @@ -52,6 +51,8 @@ ObjectPipe *ObjectPipesRegistrations::registerProducerToConsumer(const QObject * } QObject *element = m_objectPipeElementsStore->createElement(); + qDebug("ObjectPipesRegistrations::registerProducerToConsumer: %p %p %s %s", + producer, consumer, qPrintable(element->objectName()), qPrintable(type)); m_pipes.push_back(new ObjectPipe()); m_pipes.back()->m_pipeId = ++m_pipeId; m_pipes.back()->m_typeId = typeId; @@ -73,7 +74,6 @@ ObjectPipe *ObjectPipesRegistrations::registerProducerToConsumer(const QObject * ObjectPipe *ObjectPipesRegistrations::unregisterProducerToConsumer(const QObject *producer, const QObject *consumer, const QString& type) { - qDebug("ObjectPipesRegistrations::unregisterProducerToConsumer: %p %p %s", producer, consumer, qPrintable(type)); ObjectPipe *pipe = nullptr; if (m_typeIds.contains(type)) @@ -108,6 +108,17 @@ ObjectPipe *ObjectPipesRegistrations::unregisterProducerToConsumer(const QObject } } + if (pipe) + { + qDebug("ObjectPipesRegistrations::unregisterProducerToConsumer: %p %p %s %s", + producer, consumer, qPrintable(pipe->m_element->objectName()), qPrintable(type)); + } + else + { + qDebug("ObjectPipesRegistrations::unregisterProducerToConsumer: %p %p %s nullptr", + producer, consumer, qPrintable(type)); + } + return pipe; } diff --git a/sdrbase/util/messagequeue.cpp b/sdrbase/util/messagequeue.cpp index 28e22404f..e9fcccf9a 100644 --- a/sdrbase/util/messagequeue.cpp +++ b/sdrbase/util/messagequeue.cpp @@ -26,6 +26,7 @@ MessageQueue::MessageQueue(QObject* parent) : m_lock(QMutex::Recursive), m_queue() { + setObjectName("MessageQueue"); } MessageQueue::~MessageQueue()