From 47f214fdf0062b95ebc573cf5eff14403f691520 Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 17 May 2018 09:09:57 +0200 Subject: [PATCH] ChannelAnalyzerNG: implemented FLL --- .../channelrx/chanalyzerng/chanalyzerng.cpp | 23 +++++++++++++++---- plugins/channelrx/chanalyzerng/chanalyzerng.h | 17 +++++++++++++- .../chanalyzerng/chanalyzernggui.cpp | 7 +++--- .../channelrx/chanalyzerng/chanalyzernggui.h | 1 - .../channelrx/chanalyzerng/chanalyzernggui.ui | 5 ++++ 5 files changed, 43 insertions(+), 10 deletions(-) diff --git a/plugins/channelrx/chanalyzerng/chanalyzerng.cpp b/plugins/channelrx/chanalyzerng/chanalyzerng.cpp index 546985628..5d7c0c60d 100644 --- a/plugins/channelrx/chanalyzerng/chanalyzerng.cpp +++ b/plugins/channelrx/chanalyzerng/chanalyzerng.cpp @@ -51,6 +51,7 @@ ChannelAnalyzerNG::ChannelAnalyzerNG(DeviceSourceAPI *deviceAPI) : DSBFilter = new fftfilt(m_config.m_Bandwidth / m_config.m_inputSampleRate, 2*ssbFftLen); //m_pll.computeCoefficients(0.05f, 0.707f, 1000.0f); // bandwidth, damping factor, loop gain m_pll.computeCoefficients(0.002f, 0.5f, 10.0f); // bandwidth, damping factor, loop gain + m_fll.computeCoefficients(0.004f); // ~100Hz @ 48 kHz apply(true); @@ -77,9 +78,10 @@ void ChannelAnalyzerNG::configure(MessageQueue* messageQueue, int spanLog2, bool ssb, bool pll, + bool fll, unsigned int pllPskOrder) { - Message* cmd = MsgConfigureChannelAnalyzer::create(channelSampleRate, Bandwidth, LowCutoff, spanLog2, ssb, pll, pllPskOrder); + Message* cmd = MsgConfigureChannelAnalyzer::create(channelSampleRate, Bandwidth, LowCutoff, spanLog2, ssb, pll, fll, pllPskOrder); messageQueue->push(cmd); } @@ -170,6 +172,7 @@ bool ChannelAnalyzerNG::handleMessage(const Message& cmd) m_config.m_spanLog2 = cfg.getSpanLog2(); m_config.m_ssb = cfg.getSSB(); m_config.m_pll = cfg.getPLL(); + m_config.m_fll = cfg.getFLL(); m_config.m_pllPskOrder = cfg.getPLLPSKOrder(); qDebug() << "ChannelAnalyzerNG::handleMessage: MsgConfigureChannelAnalyzer:" @@ -179,6 +182,7 @@ bool ChannelAnalyzerNG::handleMessage(const Message& cmd) << " m_spanLog2: " << m_config.m_spanLog2 << " m_ssb: " << m_config.m_ssb << " m_pll: " << m_config.m_pll + << " m_fll: " << m_config.m_fll << " m_pllPskOrder: " << m_config.m_pllPskOrder; apply(); @@ -254,7 +258,9 @@ void ChannelAnalyzerNG::apply(bool force) if ((m_running.m_channelSampleRate != m_config.m_channelSampleRate) || (m_running.m_spanLog2 != m_config.m_spanLog2) || force) { - m_pll.setSampleRate(m_running.m_channelSampleRate / (1<setupUi(this); setAttribute(Qt::WA_DeleteOnClose, true); @@ -592,6 +590,7 @@ void ChannelAnalyzerNGGUI::applySettings() m_spanLog2, ui->ssb->isChecked(), ui->pll->isChecked(), + ui->pllPskOrder->currentIndex() == 5, 1<pllPskOrder->currentIndex()); } } diff --git a/plugins/channelrx/chanalyzerng/chanalyzernggui.h b/plugins/channelrx/chanalyzerng/chanalyzernggui.h index 499ded960..8b58f92a2 100644 --- a/plugins/channelrx/chanalyzerng/chanalyzernggui.h +++ b/plugins/channelrx/chanalyzerng/chanalyzernggui.h @@ -66,7 +66,6 @@ private: bool m_doApplySettings; int m_rate; //!< sample rate after final in-channel decimation (spanlog2) int m_spanLog2; - bool m_usePll; MovingAverageUtil m_channelPowerDbAvg; ChannelAnalyzerNG* m_channelAnalyzer; diff --git a/plugins/channelrx/chanalyzerng/chanalyzernggui.ui b/plugins/channelrx/chanalyzerng/chanalyzernggui.ui index d9e5beffa..f9c740101 100644 --- a/plugins/channelrx/chanalyzerng/chanalyzernggui.ui +++ b/plugins/channelrx/chanalyzerng/chanalyzernggui.ui @@ -233,6 +233,11 @@ 16 + + + F + +