diff --git a/plugins/channelrx/demodam/amdemodgui.cpp b/plugins/channelrx/demodam/amdemodgui.cpp
index 637117790..ff39731d4 100644
--- a/plugins/channelrx/demodam/amdemodgui.cpp
+++ b/plugins/channelrx/demodam/amdemodgui.cpp
@@ -218,7 +218,8 @@ AMDemodGUI::AMDemodGUI(PluginAPI* pluginAPI, DeviceSourceAPI *deviceAPI, QWidget
m_channelMarker(this),
m_basicSettingsShown(false),
m_doApplySettings(true),
- m_squelchOpen(false)
+ m_squelchOpen(false),
+ m_powerMeterTickCount(0)
{
ui->setupUi(this);
setAttribute(Qt::WA_DeleteOnClose, true);
@@ -231,10 +232,10 @@ AMDemodGUI::AMDemodGUI(PluginAPI* pluginAPI, DeviceSourceAPI *deviceAPI, QWidget
//m_pluginAPI->addThreadedSink(m_threadedChannelizer);
m_deviceAPI->addThreadedSink(m_threadedChannelizer);
- connect(&m_pluginAPI->getMainWindow()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick()));
+ connect(&m_pluginAPI->getMainWindow()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); // 50 ms
ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::ReverseGold));
-// ui->channelPowerMeter->setColorTheme(LevelMeterSignalDB::ColorGreenYellow);
+ ui->channelPowerMeter->setColorTheme(LevelMeterSignalDB::ColorGreenYellow);
//m_channelMarker = new ChannelMarker(this);
m_channelMarker.setColor(Qt::yellow);
@@ -304,13 +305,27 @@ void AMDemodGUI::enterEvent(QEvent*)
void AMDemodGUI::tick()
{
- Real magsqAvg, magsqPeak;
- int nbMagsqSamples;
- m_amDemod->getMagSqLevels(magsqAvg, magsqPeak, nbMagsqSamples);
- Real powDbAvg = CalcDb::dbPower(magsqAvg);
- Real powDbPeak = CalcDb::dbPower(magsqPeak);
-// ui->channelPowerMeter->levelChanged(powDbAvg, powDbPeak, nbMagsqSamples);
- ui->channelPower->setText(QString::number(powDbAvg, 'f', 1));
+ if (m_powerMeterTickCount < 4) // 200 ms
+ {
+ m_powerMeterTickCount++;
+ }
+ else
+ {
+ Real magsqAvg, magsqPeak;
+ int nbMagsqSamples;
+ m_amDemod->getMagSqLevels(magsqAvg, magsqPeak, nbMagsqSamples);
+ Real powDbAvg = CalcDb::dbPower(magsqAvg);
+ Real powDbPeak = CalcDb::dbPower(magsqPeak);
+
+ ui->channelPowerMeter->levelChanged(
+ (100.0f + powDbAvg) / 100.0f,
+ (100.0f + powDbPeak) / 100.0f,
+ nbMagsqSamples);
+
+ ui->channelPower->setText(QString::number(powDbAvg, 'f', 1));
+
+ m_powerMeterTickCount = 0;
+ }
bool squelchOpen = m_amDemod->getSquelchOpen();
diff --git a/plugins/channelrx/demodam/amdemodgui.h b/plugins/channelrx/demodam/amdemodgui.h
index 1fdba60ef..13934c5d9 100644
--- a/plugins/channelrx/demodam/amdemodgui.h
+++ b/plugins/channelrx/demodam/amdemodgui.h
@@ -61,6 +61,7 @@ private:
DownChannelizer* m_channelizer;
AMDemod* m_amDemod;
bool m_squelchOpen;
+ int m_powerMeterTickCount;
explicit AMDemodGUI(PluginAPI* pluginAPI, DeviceSourceAPI *deviceAPI, QWidget* parent = NULL);
virtual ~AMDemodGUI();
diff --git a/plugins/channelrx/demodam/amdemodgui.ui b/plugins/channelrx/demodam/amdemodgui.ui
index 2012a93ea..2ce7a430d 100644
--- a/plugins/channelrx/demodam/amdemodgui.ui
+++ b/plugins/channelrx/demodam/amdemodgui.ui
@@ -6,8 +6,8 @@
0
0
- 257
- 131
+ 303
+ 170
@@ -27,10 +27,16 @@
10
10
- 235
- 111
+ 280
+ 131
+
+
+ 280
+ 0
+
+
Settings
@@ -139,26 +145,56 @@
- -
-
-
- Mute/Unmute audio
-
-
- ...
-
-
-
- :/sound_on.png
- :/sound_off.png:/sound_on.png
-
-
- true
-
-
-
+ -
+
+
+ Mute/Unmute audio
+
+
+ ...
+
+
+
+ :/sound_on.png
+ :/sound_off.png:/sound_on.png
+
+
+ true
+
+
+
+
+
+ -
+
+
-
+
+
+ dB
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 30
+
+
+
+ Level meter (dB) light: average, dark: peak, tip: peak hold
+
+
+
-
@@ -321,6 +357,12 @@
1
+
+ LevelMeterSignalDB
+ QWidget
+
+ 1
+