From e9faec07c58cdf57d308dfcbfcdeebe5e480d162 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 12 Dec 2016 23:15:41 +0100 Subject: [PATCH] NFM Demod: revised squelch to take channel power short (16 samples) average --- plugins/channelrx/demodnfm/nfmdemod.cpp | 6 +++--- plugins/channelrx/demodnfm/nfmdemod.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/channelrx/demodnfm/nfmdemod.cpp b/plugins/channelrx/demodnfm/nfmdemod.cpp index fe84b83ff..2f0326078 100644 --- a/plugins/channelrx/demodnfm/nfmdemod.cpp +++ b/plugins/channelrx/demodnfm/nfmdemod.cpp @@ -68,7 +68,7 @@ NFMDemod::NFMDemod() : m_agcLevel = 1.0; m_AGC.resize(m_squelchGate, m_agcLevel); -// m_movingAverage.resize(16, 0); + m_movingAverage.resize(16, 0); m_ctcssDetector.setCoefficients(3000, 6000.0); // 0.5s / 2 Hz resolution m_afSquelch.setCoefficients(24, 600, 48000.0, 200, 0); // 4000 Hz span, 250us, 100ms attack @@ -154,7 +154,7 @@ void NFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto double magsqRaw = m_AGC.getMagSq(); Real magsq = magsqRaw / (1<<30); -// m_movingAverage.feed(magsq); + m_movingAverage.feed(magsq); m_magsqSum += magsq; if (magsq > m_magsqPeak) @@ -172,7 +172,7 @@ void NFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto // AF processing - if (magsq > m_squelchLevel) + if (m_movingAverage.average() > m_squelchLevel) { if (m_squelchCount < m_squelchGate) { diff --git a/plugins/channelrx/demodnfm/nfmdemod.h b/plugins/channelrx/demodnfm/nfmdemod.h index dee9dd4a9..35b888b97 100644 --- a/plugins/channelrx/demodnfm/nfmdemod.h +++ b/plugins/channelrx/demodnfm/nfmdemod.h @@ -207,7 +207,7 @@ private: //Complex m_m1Sample; //Complex m_m2Sample; MagAGC m_AGC; -// MovingAverage m_movingAverage; + MovingAverage m_movingAverage; AFSquelch m_afSquelch; Real m_agcLevel; // AGC will aim to this level Real m_agcFloor; // AGC will not go below this level