From 3960df4c2a9a7ab7ea20b35d38fb3371ccf72186 Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 5 Jan 2017 11:54:15 +0100 Subject: [PATCH] WFM demod: use same RF filter values as the modulator --- plugins/channelrx/demodwfm/wfmdemodgui.cpp | 30 +++++---- plugins/channelrx/demodwfm/wfmdemodgui.h | 3 +- plugins/channelrx/demodwfm/wfmdemodgui.ui | 73 +++++++--------------- 3 files changed, 43 insertions(+), 63 deletions(-) diff --git a/plugins/channelrx/demodwfm/wfmdemodgui.cpp b/plugins/channelrx/demodwfm/wfmdemodgui.cpp index 80c7cb6db..ae837934f 100644 --- a/plugins/channelrx/demodwfm/wfmdemodgui.cpp +++ b/plugins/channelrx/demodwfm/wfmdemodgui.cpp @@ -20,8 +20,9 @@ const QString WFMDemodGUI::m_channelID = "de.maintech.sdrangelove.channel.wfm"; const int WFMDemodGUI::m_rfBW[] = { - 48000, 80000, 100000, 120000, 140000, 160000, 180000, 200000, 220000, 250000 + 12500, 25000, 40000, 60000, 75000, 80000, 100000, 125000, 140000, 160000, 180000, 200000, 220000, 250000 }; +const int WFMDemodGUI::m_nbRfBW = 14; int requiredBW(int rfBW) { @@ -69,7 +70,7 @@ void WFMDemodGUI::resetToDefaults() { blockApplySettings(true); - ui->rfBW->setValue(4); + ui->rfBW->setCurrentIndex(6); ui->afBW->setValue(3); ui->volume->setValue(20); ui->squelch->setValue(-40); @@ -83,7 +84,7 @@ QByteArray WFMDemodGUI::serialize() const { SimpleSerializer s(1); s.writeS32(1, m_channelMarker.getCenterFrequency()); - s.writeS32(2, ui->rfBW->value()); + s.writeS32(2, ui->rfBW->currentIndex()); s.writeS32(3, ui->afBW->value()); s.writeS32(4, ui->volume->value()); s.writeS32(5, ui->squelch->value()); @@ -113,9 +114,8 @@ bool WFMDemodGUI::deserialize(const QByteArray& data) d.readS32(1, &tmp, 0); m_channelMarker.setCenterFrequency(tmp); - d.readS32(2, &tmp, 4); - ui->rfBW->setValue(tmp); - ui->rfBWText->setText(QString("%1 kHz").arg(m_rfBW[tmp] / 1000.0)); + d.readS32(2, &tmp, 6); + ui->rfBW->setCurrentIndex(tmp); m_channelMarker.setBandwidth(m_rfBW[tmp]); d.readS32(3, &tmp, 3); @@ -178,10 +178,9 @@ void WFMDemodGUI::on_deltaFrequency_changed(quint64 value) } } -void WFMDemodGUI::on_rfBW_valueChanged(int value) +void WFMDemodGUI::on_rfBW_currentIndexChanged(int index) { - ui->rfBWText->setText(QString("%1 kHz").arg(m_rfBW[value] / 1000.0)); - m_channelMarker.setBandwidth(m_rfBW[value]); + m_channelMarker.setBandwidth(m_rfBW[index]); applySettings(); } @@ -232,6 +231,15 @@ WFMDemodGUI::WFMDemodGUI(PluginAPI* pluginAPI, DeviceSourceAPI *deviceAPI, QWidg ui->deltaFrequency->setValueRange(7, 0U, 9999999U); setAttribute(Qt::WA_DeleteOnClose, true); + + blockApplySettings(true); + ui->rfBW->clear(); + for (int i = 0; i < m_nbRfBW; i++) { + ui->rfBW->addItem(QString("%1").arg(m_rfBW[i] / 1000.0, 0, 'f', 2)); + } + ui->rfBW->setCurrentIndex(6); + blockApplySettings(false); + connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(menuDoubleClickEvent()), this, SLOT(onMenuDoubleClicked())); @@ -280,14 +288,14 @@ void WFMDemodGUI::applySettings() setTitleColor(m_channelMarker.getColor()); m_channelizer->configure(m_channelizer->getInputMessageQueue(), - requiredBW(m_rfBW[ui->rfBW->value()]), // TODO: this is where requested sample rate is specified + requiredBW(m_rfBW[ui->rfBW->currentIndex()]), // TODO: this is where requested sample rate is specified m_channelMarker.getCenterFrequency()); ui->deltaFrequency->setValue(abs(m_channelMarker.getCenterFrequency())); ui->deltaMinus->setChecked(m_channelMarker.getCenterFrequency() < 0); m_wfmDemod->configure(m_wfmDemod->getInputMessageQueue(), - m_rfBW[ui->rfBW->value()], + m_rfBW[ui->rfBW->currentIndex()], ui->afBW->value() * 1000.0, ui->volume->value() / 10.0, ui->squelch->value()); diff --git a/plugins/channelrx/demodwfm/wfmdemodgui.h b/plugins/channelrx/demodwfm/wfmdemodgui.h index 9a921dc28..97dcba670 100644 --- a/plugins/channelrx/demodwfm/wfmdemodgui.h +++ b/plugins/channelrx/demodwfm/wfmdemodgui.h @@ -41,7 +41,7 @@ private slots: void viewChanged(); void on_deltaFrequency_changed(quint64 value); void on_deltaMinus_toggled(bool minus); - void on_rfBW_valueChanged(int value); + void on_rfBW_currentIndexChanged(int index); void on_afBW_valueChanged(int value); void on_volume_valueChanged(int value); void on_squelch_valueChanged(int value); @@ -63,6 +63,7 @@ private: MovingAverage m_channelPowerDbAvg; static const int m_rfBW[]; + static const int m_nbRfBW; explicit WFMDemodGUI(PluginAPI* pluginAPI, DeviceSourceAPI *deviceAPI, QWidget* parent = NULL); virtual ~WFMDemodGUI(); diff --git a/plugins/channelrx/demodwfm/wfmdemodgui.ui b/plugins/channelrx/demodwfm/wfmdemodgui.ui index d567a9bf8..c618dd9d9 100644 --- a/plugins/channelrx/demodwfm/wfmdemodgui.ui +++ b/plugins/channelrx/demodwfm/wfmdemodgui.ui @@ -6,8 +6,8 @@ 0 0 - 263 - 143 + 288 + 147 @@ -24,7 +24,7 @@ 10 10 - 235 + 261 121 @@ -140,58 +140,29 @@ - - - - - - RF BW - - - - - - - Demodulator (RF) bandwidth - - - 9 - - - 1 - - - 4 - - - Qt::Horizontal - - - - - - - - 50 - 0 - - - - 140kHz - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - + - AF BW + RFBW + + + + + + + + 70 + 16777215 + + + + + + + + AFBW