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 @@
gui/valuedial.h
1 + + LevelMeterSignalDB + QWidget +
gui/levelmeter.h
+ 1 +