diff --git a/plugins/channel/am/amdemod.cpp b/plugins/channel/am/amdemod.cpp index 6d4bdad4b..600a931fd 100644 --- a/plugins/channel/am/amdemod.cpp +++ b/plugins/channel/am/amdemod.cpp @@ -48,6 +48,7 @@ AMDemod::AMDemod() : m_movingAverage.resize(16, 0); m_volumeAGC.resize(4096, 0.003, 0); + m_magsq = 0.0; DSPEngine::instance()->addAudioSink(&m_audioFifo); } @@ -80,8 +81,9 @@ void AMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector Real magsq = ci.real() * ci.real() + ci.imag() * ci.imag(); m_movingAverage.feed(magsq); + m_magsq = m_movingAverage.average(); - if (m_movingAverage.average() >= m_squelchLevel) + if (m_magsq >= m_squelchLevel) { m_squelchState = m_running.m_audioSampleRate / 20; } diff --git a/plugins/channel/am/amdemod.h b/plugins/channel/am/amdemod.h index 9ca0f3d22..2f35b9755 100644 --- a/plugins/channel/am/amdemod.h +++ b/plugins/channel/am/amdemod.h @@ -41,6 +41,8 @@ public: virtual void stop(); virtual bool handleMessage(const Message& cmd); + Real getMagSq() const { return m_magsq; } + private: class MsgConfigureAMDemod : public Message { MESSAGE_CLASS_DECLARATION @@ -113,6 +115,7 @@ private: Real m_squelchLevel; int m_squelchState; + Real m_magsq; MovingAverage m_movingAverage; SimpleAGC m_volumeAGC; diff --git a/plugins/channel/am/amdemodgui.cpp b/plugins/channel/am/amdemodgui.cpp index 0fa46f754..de09d6c6d 100644 --- a/plugins/channel/am/amdemodgui.cpp +++ b/plugins/channel/am/amdemodgui.cpp @@ -8,8 +8,10 @@ #include "gui/glspectrum.h" #include "plugin/pluginapi.h" #include "util/simpleserializer.h" +#include "util/db.h" #include "gui/basicchannelsettingswidget.h" #include "dsp/dspengine.h" +#include "mainwindow.h" #include "amdemod.h" @@ -132,7 +134,7 @@ void AMDemodGUI::viewChanged() applySettings(); } -void AMDemodGUI::on_deltaMinus_clicked(bool minus) +void AMDemodGUI::on_deltaMinus_toggled(bool minus) { int deltaFrequency = m_channelMarker.getCenterFrequency(); bool minusDelta = (deltaFrequency < 0); @@ -201,7 +203,8 @@ AMDemodGUI::AMDemodGUI(PluginAPI* pluginAPI, QWidget* parent) : m_pluginAPI(pluginAPI), m_channelMarker(this), m_basicSettingsShown(false), - m_doApplySettings(true) + m_doApplySettings(true), + m_channelPowerDbAvg(20,0) { ui->setupUi(this); setAttribute(Qt::WA_DeleteOnClose, true); @@ -212,6 +215,7 @@ AMDemodGUI::AMDemodGUI(PluginAPI* pluginAPI, QWidget* parent) : m_channelizer = new Channelizer(m_amDemod); m_threadedChannelizer = new ThreadedSampleSink(m_channelizer, this); DSPEngine::instance()->addThreadedSink(m_threadedChannelizer); + connect(&m_pluginAPI->getMainWindow()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::ReverseGold)); @@ -277,3 +281,10 @@ void AMDemodGUI::enterEvent(QEvent*) blockApplySettings(false); } +void AMDemodGUI::tick() +{ + Real powDb = CalcDb::dbPower(m_amDemod->getMagSq()); + m_channelPowerDbAvg.feed(powDb); + ui->channelPower->setText(QString::number(m_channelPowerDbAvg.average(), 'f', 1)); +} + diff --git a/plugins/channel/am/amdemodgui.h b/plugins/channel/am/amdemodgui.h index 34565247a..727799fd8 100644 --- a/plugins/channel/am/amdemodgui.h +++ b/plugins/channel/am/amdemodgui.h @@ -4,6 +4,7 @@ #include "gui/rollupwidget.h" #include "plugin/plugingui.h" #include "dsp/channelmarker.h" +#include "dsp/movingaverage.h" class PluginAPI; @@ -36,13 +37,14 @@ public: private slots: void viewChanged(); void on_deltaFrequency_changed(quint64 value); - void on_deltaMinus_clicked(bool minus); + void on_deltaMinus_toggled(bool minus); void on_rfBW_valueChanged(int value); void on_afBW_valueChanged(int value); void on_volume_valueChanged(int value); void on_squelch_valueChanged(int value); void onWidgetRolled(QWidget* widget, bool rollDown); void onMenuDoubleClicked(); + void tick(); private: Ui::AMDemodGUI* ui; @@ -54,6 +56,7 @@ private: ThreadedSampleSink* m_threadedChannelizer; Channelizer* m_channelizer; AMDemod* m_amDemod; + MovingAverage m_channelPowerDbAvg; static const int m_rfBW[]; diff --git a/plugins/channel/am/amdemodgui.ui b/plugins/channel/am/amdemodgui.ui index 280576f06..f9d3ba971 100644 --- a/plugins/channel/am/amdemodgui.ui +++ b/plugins/channel/am/amdemodgui.ui @@ -7,7 +7,7 @@ 0 0 302 - 138 + 390 @@ -21,14 +21,17 @@ 35 35 - 242 - 96 + 106 + 349 Settings - + + + 3 + 2 @@ -41,212 +44,255 @@ 2 - - 3 - - - - - 100 - - - 20 - - - Qt::Horizontal - - + + + + + + ... + + + + :/plus.png + :/minus.png + + + + true + + + + + + + + 0 + 0 + + + + + 32 + 16 + + + + + Monospace + 12 + + + + SizeVerCursor + + + Qt::StrongFocus + + + Demod shift frequency from center in Hz + + + + + + + Hz + + + + + + + Channel power + + + Qt::RightToLeft + + + 0.0 + + + + + + + dB + + + + - - - - 8 - - - 1 - - - 4 - - - Qt::Horizontal - - + + + + + + RF BW + + + + + + + 8 + + + 1 + + + 4 + + + Qt::Horizontal + + + + + + + + 50 + 0 + + + + 12.5kHz + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + - - - - Qt::RightToLeft - - - Minus - - + + + + + + AF BW + + + + + + + 1 + + + 20 + + + 1 + + + 3 + + + Qt::Horizontal + + + + + + + + 50 + 0 + + + + 3 kHz + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + - - - - Squelch - - + + + + + + Vol + + + + + + + 100 + + + 20 + + + Qt::Horizontal + + + + + + + + 50 + 0 + + + + 2.0 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + - - - - AF Bandwidth - - - - - - - -100 - - - 0 - - - -40 - - - Qt::Horizontal - - - - - - - - 50 - 0 - - - - 12.5kHz - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - RF Bandwidth - - - - - - - - 50 - 0 - - - - 3 kHz - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 1 - - - 20 - - - 1 - - - 3 - - - Qt::Horizontal - - - - - - - - 50 - 0 - - - - -40dB - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Volume - - - - - - - - 50 - 0 - - - - 2.0 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - 32 - 16 - - - - - Monospace - 12 - - - - SizeVerCursor - - - Qt::StrongFocus - - - Demod shift frequency from center in Hz - - - - - - - Hz - - + + + + + + Sq + + + + + + + -100 + + + 0 + + + -40 + + + Qt::Horizontal + + + + + + + + 50 + 0 + + + + -40dB + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + @@ -265,6 +311,8 @@ 1 - + + + diff --git a/plugins/channel/chanalyzer/chanalyzergui.ui b/plugins/channel/chanalyzer/chanalyzergui.ui index 2cfabe460..ee31147e9 100644 --- a/plugins/channel/chanalyzer/chanalyzergui.ui +++ b/plugins/channel/chanalyzer/chanalyzergui.ui @@ -312,7 +312,6 @@ Demod shift frequency from center in Hz - hSpacer1 @@ -410,6 +409,9 @@ + + Channel power + Qt::LeftToRight @@ -530,9 +532,15 @@ - GLScope + RollupWidget QWidget -
gui/glscope.h
+
gui/rollupwidget.h
+ 1 +
+ + ValueDial + QWidget +
gui/valuedial.h
1
@@ -548,15 +556,9 @@ 1 - RollupWidget + GLScope QWidget -
gui/rollupwidget.h
- 1 -
- - ValueDial - QWidget -
gui/valuedial.h
+
gui/glscope.h
1
diff --git a/plugins/channel/ssb/ssbdemodgui.ui b/plugins/channel/ssb/ssbdemodgui.ui index 8bd343e19..1a4736d1a 100644 --- a/plugins/channel/ssb/ssbdemodgui.ui +++ b/plugins/channel/ssb/ssbdemodgui.ui @@ -7,7 +7,7 @@ 0 0 302 - 537 + 544 @@ -229,22 +229,6 @@
- - - - - 50 - 0 - - - - 0.3k - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - @@ -264,6 +248,22 @@ + + + + + 50 + 0 + + + + 0.3k + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + +
@@ -353,10 +353,7 @@ - - glSpectrum - glSpectrum - + diff --git a/plugins/channel/wfm/wfmdemodgui.ui b/plugins/channel/wfm/wfmdemodgui.ui index 8aafa4336..921b85ec8 100644 --- a/plugins/channel/wfm/wfmdemodgui.ui +++ b/plugins/channel/wfm/wfmdemodgui.ui @@ -99,6 +99,9 @@ + + Channel power + Qt::RightToLeft