From 7365b2decefe86fe1faf538f5640e60d43796658 Mon Sep 17 00:00:00 2001 From: Edouard Griffiths Date: Tue, 26 Jun 2018 20:03:56 +0200 Subject: [PATCH] Channel Analyzer: corrected suqared magnitude (power) display in dB --- plugins/channelrx/chanalyzer/chanalyzer.cpp | 1 + plugins/channelrx/chanalyzer/chanalyzer.h | 3 +++ plugins/channelrx/chanalyzer/chanalyzergui.cpp | 6 +++--- plugins/channelrx/chanalyzer/chanalyzergui.h | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/plugins/channelrx/chanalyzer/chanalyzer.cpp b/plugins/channelrx/chanalyzer/chanalyzer.cpp index ac3a059ae..3299e5ab5 100644 --- a/plugins/channelrx/chanalyzer/chanalyzer.cpp +++ b/plugins/channelrx/chanalyzer/chanalyzer.cpp @@ -156,6 +156,7 @@ void ChannelAnalyzer::processOneSample(Complex& c, fftfilt::cmplx *sideband) Real re = m_sum.real() / SDR_RX_SCALEF; Real im = m_sum.imag() / SDR_RX_SCALEF; m_magsq = re*re + im*im; + m_channelPowerAvg(m_magsq); std::complex mix; if (m_settings.m_pll) diff --git a/plugins/channelrx/chanalyzer/chanalyzer.h b/plugins/channelrx/chanalyzer/chanalyzer.h index fb7db116f..6a56ab486 100644 --- a/plugins/channelrx/chanalyzer/chanalyzer.h +++ b/plugins/channelrx/chanalyzer/chanalyzer.h @@ -30,6 +30,7 @@ #include "dsp/freqlockcomplex.h" #include "audio/audiofifo.h" #include "util/message.h" +#include "util/movingaverage.h" #include "chanalyzersettings.h" @@ -188,6 +189,7 @@ public: int getInputSampleRate() const { return m_inputSampleRate; } int getChannelSampleRate() const { return m_settings.m_downSample ? m_settings.m_downSampleRate : m_inputSampleRate; } double getMagSq() const { return m_magsq; } + double getMagSqAvg() const { return (double) m_channelPowerAvg; } bool isPllLocked() const { return m_settings.m_pll && m_pll.locked(); } Real getPllFrequency() const { return m_pll.getFreq(); } Real getPllDeltaPhase() const { return m_pll.getDeltaPhi(); } @@ -236,6 +238,7 @@ private: BasebandSampleSink* m_sampleSink; SampleVector m_sampleBuffer; + MovingAverageUtil m_channelPowerAvg; QMutex m_settingsMutex; // void apply(bool force = false); diff --git a/plugins/channelrx/chanalyzer/chanalyzergui.cpp b/plugins/channelrx/chanalyzer/chanalyzergui.cpp index 81a5c84aa..bcb9564da 100644 --- a/plugins/channelrx/chanalyzer/chanalyzergui.cpp +++ b/plugins/channelrx/chanalyzer/chanalyzergui.cpp @@ -226,9 +226,9 @@ void ChannelAnalyzerGUI::channelMarkerHighlightedByCursor() void ChannelAnalyzerGUI::tick() { - double powDb = CalcDb::dbPower(m_channelAnalyzer->getMagSq()); - m_channelPowerDbAvg(powDb); - ui->channelPower->setText(tr("%1 dB").arg((Real) m_channelPowerDbAvg, 0, 'f', 1)); + m_channelPowerAvg(m_channelAnalyzer->getMagSqAvg()); + double powDb = CalcDb::dbPower((double) m_channelPowerAvg); + ui->channelPower->setText(tr("%1 dB").arg(powDb, 0, 'f', 1)); if (m_channelAnalyzer->isPllLocked()) { ui->pll->setStyleSheet("QToolButton { background-color : green; }"); diff --git a/plugins/channelrx/chanalyzer/chanalyzergui.h b/plugins/channelrx/chanalyzer/chanalyzergui.h index 5210b2171..48c55695a 100644 --- a/plugins/channelrx/chanalyzer/chanalyzergui.h +++ b/plugins/channelrx/chanalyzer/chanalyzergui.h @@ -68,7 +68,7 @@ private: ChannelAnalyzerSettings m_settings; bool m_doApplySettings; int m_rate; //!< sample rate after final in-channel decimation (spanlog2) - MovingAverageUtil m_channelPowerDbAvg; + MovingAverageUtil m_channelPowerAvg; ChannelAnalyzer* m_channelAnalyzer; SpectrumScopeNGComboVis* m_spectrumScopeComboVis;