diff --git a/plugins/channelrx/demodatv/atvdemodgui.ui b/plugins/channelrx/demodatv/atvdemodgui.ui
index 17ac80b09..0f4b2d106 100644
--- a/plugins/channelrx/demodatv/atvdemodgui.ui
+++ b/plugins/channelrx/demodatv/atvdemodgui.ui
@@ -265,7 +265,7 @@
- Channel power
+ Channel power (dB)
-100.0 dB
diff --git a/plugins/channelrx/demoddatv/datvdemod.cpp b/plugins/channelrx/demoddatv/datvdemod.cpp
index 38590273d..fb52bb273 100644
--- a/plugins/channelrx/demoddatv/datvdemod.cpp
+++ b/plugins/channelrx/demoddatv/datvdemod.cpp
@@ -787,6 +787,7 @@ void DATVDemod::feed(const SampleVector::const_iterator& begin, const SampleVect
//Complex objC;
fftfilt::cmplx *objRF;
int intRFOut;
+ double magSq;
//********** Bis repetita : Let's rock and roll buddy ! **********
@@ -849,6 +850,8 @@ void DATVDemod::feed(const SampleVector::const_iterator& begin, const SampleVect
{
objIQ.re = objRF->real();
objIQ.im = objRF->imag();
+ magSq = objIQ.re*objIQ.re + objIQ.im*objIQ.im;
+ m_objMagSqAverage(magSq);
objRF ++;
diff --git a/plugins/channelrx/demoddatv/datvdemod.h b/plugins/channelrx/demoddatv/datvdemod.h
index 815407ef3..6718894f7 100644
--- a/plugins/channelrx/demoddatv/datvdemod.h
+++ b/plugins/channelrx/demoddatv/datvdemod.h
@@ -61,6 +61,7 @@ class DownChannelizer;
#include "dsp/agc.h"
#include "audio/audiofifo.h"
#include "util/message.h"
+#include "util/movingaverage.h"
#include
#include "datvideostream.h"
@@ -236,6 +237,7 @@ public:
void CleanUpDATVFramework(bool blnRelease);
int GetSampleRate();
void InitDATVFramework();
+ double getMagSq() const { return m_objMagSqAverage; } //!< Beware this is scaled to 2^30
static const QString m_channelIdURI;
static const QString m_channelId;
@@ -458,6 +460,7 @@ private:
//QElapsedTimer m_objTimer;
DATVConfig m_objRunning;
+ MovingAverageUtil m_objMagSqAverage;
QMutex m_objSettingsMutex;
diff --git a/plugins/channelrx/demoddatv/datvdemodgui.cpp b/plugins/channelrx/demoddatv/datvdemodgui.cpp
index 9b31b27d1..123ed4ad5 100644
--- a/plugins/channelrx/demoddatv/datvdemodgui.cpp
+++ b/plugins/channelrx/demoddatv/datvdemodgui.cpp
@@ -503,6 +503,13 @@ void DATVDemodGUI::enterEvent(QEvent*)
void DATVDemodGUI::tick()
{
+ if (m_objDATVDemod)
+ {
+ m_objMagSqAverage(m_objDATVDemod->getMagSq());
+ double magSqDB = CalcDb::dbPower(m_objMagSqAverage / (SDR_RX_SCALED*SDR_RX_SCALED));
+ ui->channePowerText->setText(tr("%1 dB").arg(magSqDB, 0, 'f', 1));
+ }
+
if((m_intLastDecodedData-m_intPreviousDecodedData)>=0)
{
m_intLastSpeed = 8*(m_intLastDecodedData-m_intPreviousDecodedData);
diff --git a/plugins/channelrx/demoddatv/datvdemodgui.h b/plugins/channelrx/demoddatv/datvdemodgui.h
index da26eca9e..d16db6c2e 100644
--- a/plugins/channelrx/demoddatv/datvdemodgui.h
+++ b/plugins/channelrx/demoddatv/datvdemodgui.h
@@ -120,6 +120,8 @@ private:
bool m_blnDoApplySettings;
bool m_blnButtonPlayClicked;
+ MovingAverageUtil m_objMagSqAverage;
+
explicit DATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* objParent = 0);
virtual ~DATVDemodGUI();
diff --git a/plugins/channelrx/demoddatv/datvdemodgui.ui b/plugins/channelrx/demoddatv/datvdemodgui.ui
index 61503bfe8..3393e12e9 100644
--- a/plugins/channelrx/demoddatv/datvdemodgui.ui
+++ b/plugins/channelrx/demoddatv/datvdemodgui.ui
@@ -165,6 +165,19 @@
+ -
+
+
+ Channel power (dB)
+
+
+ -100.0 dB
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+