diff --git a/plugins/channel/am/amdemod.cpp b/plugins/channel/am/amdemod.cpp index 3446beec1..8c8af3c27 100644 --- a/plugins/channel/am/amdemod.cpp +++ b/plugins/channel/am/amdemod.cpp @@ -58,9 +58,9 @@ AMDemod::~AMDemod() DSPEngine::instance()->removeAudioSink(&m_audioFifo); } -void AMDemod::configure(MessageQueue* messageQueue, Real rfBandwidth, Real afBandwidth, Real volume, Real squelch) +void AMDemod::configure(MessageQueue* messageQueue, Real rfBandwidth, Real afBandwidth, Real volume, Real squelch, bool audioMute) { - Message* cmd = MsgConfigureAMDemod::create(rfBandwidth, afBandwidth, volume, squelch); + Message* cmd = MsgConfigureAMDemod::create(rfBandwidth, afBandwidth, volume, squelch, audioMute); messageQueue->push(cmd); } @@ -103,7 +103,7 @@ void AMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector qint16 sample; - if (m_squelchCount >= m_running.m_audioSampleRate / 20) + if ((m_squelchCount >= m_running.m_audioSampleRate / 20) && !m_running.m_audioMute) { Real demod = sqrt(magsq); @@ -208,6 +208,7 @@ bool AMDemod::handleMessage(const Message& cmd) m_config.m_afBandwidth = cfg.getAFBandwidth(); m_config.m_volume = cfg.getVolume(); m_config.m_squelch = cfg.getSquelch(); + m_config.m_audioMute = cfg.getAudioMute(); apply(); @@ -215,7 +216,8 @@ bool AMDemod::handleMessage(const Message& cmd) << " m_rfBandwidth: " << m_config.m_rfBandwidth << " m_afBandwidth: " << m_config.m_afBandwidth << " m_volume: " << m_config.m_volume - << " m_squelch: " << m_config.m_squelch; + << " m_squelch: " << m_config.m_squelch + << " m_audioMute: " << m_config.m_audioMute; return true; } @@ -265,4 +267,5 @@ void AMDemod::apply() m_running.m_squelch = m_config.m_squelch; m_running.m_volume = m_config.m_volume; m_running.m_audioSampleRate = m_config.m_audioSampleRate; + m_running.m_audioMute = m_config.m_audioMute; } diff --git a/plugins/channel/am/amdemod.h b/plugins/channel/am/amdemod.h index d343abcb5..5e5f37b4c 100644 --- a/plugins/channel/am/amdemod.h +++ b/plugins/channel/am/amdemod.h @@ -34,7 +34,7 @@ public: AMDemod(); ~AMDemod(); - void configure(MessageQueue* messageQueue, Real rfBandwidth, Real afBandwidth, Real volume, Real squelch); + void configure(MessageQueue* messageQueue, Real rfBandwidth, Real afBandwidth, Real volume, Real squelch, bool audioMute); virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); @@ -52,10 +52,11 @@ private: Real getAFBandwidth() const { return m_afBandwidth; } Real getVolume() const { return m_volume; } Real getSquelch() const { return m_squelch; } + bool getAudioMute() const { return m_audioMute; } - static MsgConfigureAMDemod* create(Real rfBandwidth, Real afBandwidth, Real volume, Real squelch) + static MsgConfigureAMDemod* create(Real rfBandwidth, Real afBandwidth, Real volume, Real squelch, bool audioMute) { - return new MsgConfigureAMDemod(rfBandwidth, afBandwidth, volume, squelch); + return new MsgConfigureAMDemod(rfBandwidth, afBandwidth, volume, squelch, audioMute); } private: @@ -63,13 +64,15 @@ private: Real m_afBandwidth; Real m_volume; Real m_squelch; + bool m_audioMute; - MsgConfigureAMDemod(Real rfBandwidth, Real afBandwidth, Real volume, Real squelch) : + MsgConfigureAMDemod(Real rfBandwidth, Real afBandwidth, Real volume, Real squelch, bool audioMute) : Message(), m_rfBandwidth(rfBandwidth), m_afBandwidth(afBandwidth), m_volume(volume), - m_squelch(squelch) + m_squelch(squelch), + m_audioMute(audioMute) { } }; @@ -92,6 +95,7 @@ private: Real m_squelch; Real m_volume; quint32 m_audioSampleRate; + bool m_audioMute; Config() : m_inputSampleRate(-1), @@ -100,7 +104,8 @@ private: m_afBandwidth(-1), m_squelch(0), m_volume(0), - m_audioSampleRate(0) + m_audioSampleRate(0), + m_audioMute(false) { } }; diff --git a/plugins/channel/am/amdemodgui.cpp b/plugins/channel/am/amdemodgui.cpp index de09d6c6d..8279844b2 100644 --- a/plugins/channel/am/amdemodgui.cpp +++ b/plugins/channel/am/amdemodgui.cpp @@ -179,6 +179,10 @@ void AMDemodGUI::on_squelch_valueChanged(int value) applySettings(); } +void AMDemodGUI::on_audioMute_toggled(bool checked) +{ + applySettings(); +} void AMDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) { @@ -263,7 +267,8 @@ void AMDemodGUI::applySettings() m_rfBW[ui->rfBW->value()], ui->afBW->value() * 1000.0, ui->volume->value() / 10.0, - ui->squelch->value()); + ui->squelch->value(), + ui->audioMute->isChecked()); } } diff --git a/plugins/channel/am/amdemodgui.h b/plugins/channel/am/amdemodgui.h index 727799fd8..12477a389 100644 --- a/plugins/channel/am/amdemodgui.h +++ b/plugins/channel/am/amdemodgui.h @@ -42,6 +42,7 @@ private slots: void on_afBW_valueChanged(int value); void on_volume_valueChanged(int value); void on_squelch_valueChanged(int value); + void on_audioMute_toggled(bool checked); void onWidgetRolled(QWidget* widget, bool rollDown); void onMenuDoubleClicked(); void tick(); diff --git a/plugins/channel/am/amdemodgui.ui b/plugins/channel/am/amdemodgui.ui index 3f49d10e3..536ff29c0 100644 --- a/plugins/channel/am/amdemodgui.ui +++ b/plugins/channel/am/amdemodgui.ui @@ -139,6 +139,24 @@ + + + + Mute/Unmute audio + + + ... + + + + :/sound_on.png + :/sound_off.png:/sound_on.png + + + true + + +