From b2e2c0a10601a751108235a13c2bc8261b2a65d0 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 2 Apr 2017 03:24:11 +0200 Subject: [PATCH] BladeRF input: continuous sample rate setting --- .../bladerfinput/bladerfinput.cpp | 4 +- .../bladerfinput/bladerfinputgui.cpp | 27 +-- .../bladerfinput/bladerfinputgui.h | 2 +- .../bladerfinput/bladerfinputgui.ui | 203 +++++++++--------- .../bladerfinput/bladerfinputplugin.cpp | 2 +- .../bladerfinput/bladerfinputsettings.cpp | 6 +- .../bladerfinput/bladerfinputsettings.h | 2 +- plugins/samplesource/rtlsdr/rtlsdrgui.ui | 10 +- 8 files changed, 128 insertions(+), 128 deletions(-) diff --git a/plugins/samplesource/bladerfinput/bladerfinput.cpp b/plugins/samplesource/bladerfinput/bladerfinput.cpp index e68bd5dec..30ea89027 100644 --- a/plugins/samplesource/bladerfinput/bladerfinput.cpp +++ b/plugins/samplesource/bladerfinput/bladerfinput.cpp @@ -531,8 +531,8 @@ bool BladerfInput::applySettings(const BladeRFInputSettings& settings, bool forc qDebug() << "BladerfInput::applySettings: center freq: " << m_settings.m_centerFrequency << " Hz" << " device center freq: " << deviceCenterFrequency << " Hz" - << " device sample rate: " << m_settings.m_devSampleRate << "Hz" - << " Actual sample rate: " << m_settings.m_devSampleRate/(1<centerFrequency->setColorMapper(ColorMapper(ColorMapper::ReverseGold)); ui->centerFrequency->setValueRange(7, BLADERF_FREQUENCY_MIN_XB200/1000, BLADERF_FREQUENCY_MAX/1000); - ui->samplerate->clear(); - for (int i = 0; i < BladerfSampleRates::getNbRates(); i++) - { - ui->samplerate->addItem(QString::number(BladerfSampleRates::getRate(i)/1000)); - } + ui->sampleRate->setColorMapper(ColorMapper(ColorMapper::ReverseGreenYellow)); + // BladeRF can go as low as 80 kS/s but because of buffering in practice experience is not good below 330 kS/s + ui->sampleRate->setValueRange(8, 330000U, BLADERF_SAMPLERATE_REC_MAX); ui->bandwidth->clear(); for (int i = 0; i < BladerfBandwidths::getNbBandwidths(); i++) @@ -169,19 +167,17 @@ void BladerfInputGui::updateSampleRateAndFrequency() { m_deviceAPI->getSpectrum()->setSampleRate(m_sampleRate); m_deviceAPI->getSpectrum()->setCenterFrequency(m_deviceCenterFrequency); - ui->deviceRateLabel->setText(tr("%1k").arg((float)m_sampleRate / 1000)); + ui->deviceRateLabel->setText(tr("%1k").arg(QString::number(m_sampleRate / 1000.0f, 'g', 5))); } void BladerfInputGui::displaySettings() { ui->centerFrequency->setValue(m_settings.m_centerFrequency / 1000); + ui->sampleRate->setValue(m_settings.m_devSampleRate); ui->dcOffset->setChecked(m_settings.m_dcBlock); ui->iqImbalance->setChecked(m_settings.m_iqCorrection); - unsigned int sampleRateIndex = BladerfSampleRates::getRateIndex(m_settings.m_devSampleRate); - ui->samplerate->setCurrentIndex(sampleRateIndex); - unsigned int bandwidthIndex = BladerfBandwidths::getBandwidthIndex(m_settings.m_bandwidth); ui->bandwidth->setCurrentIndex(bandwidthIndex); @@ -212,6 +208,12 @@ void BladerfInputGui::on_centerFrequency_changed(quint64 value) sendSettings(); } +void BladerfInputGui::on_sampleRate_changed(quint64 value) +{ + m_settings.m_devSampleRate = value; + sendSettings(); +} + void BladerfInputGui::on_dcOffset_toggled(bool checked) { m_settings.m_dcBlock = checked; @@ -224,13 +226,6 @@ void BladerfInputGui::on_iqImbalance_toggled(bool checked) sendSettings(); } -void BladerfInputGui::on_samplerate_currentIndexChanged(int index) -{ - int newrate = BladerfSampleRates::getRate(index); - m_settings.m_devSampleRate = newrate; - sendSettings(); -} - void BladerfInputGui::on_bandwidth_currentIndexChanged(int index) { int newbw = BladerfBandwidths::getBandwidth(index); diff --git a/plugins/samplesource/bladerfinput/bladerfinputgui.h b/plugins/samplesource/bladerfinput/bladerfinputgui.h index 1e6cc8939..be9cc634e 100644 --- a/plugins/samplesource/bladerfinput/bladerfinputgui.h +++ b/plugins/samplesource/bladerfinput/bladerfinputgui.h @@ -69,9 +69,9 @@ private: private slots: void handleDSPMessages(); void on_centerFrequency_changed(quint64 value); + void on_sampleRate_changed(quint64 value); void on_dcOffset_toggled(bool checked); void on_iqImbalance_toggled(bool checked); - void on_samplerate_currentIndexChanged(int index); void on_bandwidth_currentIndexChanged(int index); void on_decim_currentIndexChanged(int index); void on_lna_currentIndexChanged(int index); diff --git a/plugins/samplesource/bladerfinput/bladerfinputgui.ui b/plugins/samplesource/bladerfinput/bladerfinputgui.ui index 13db9183f..a0befa701 100644 --- a/plugins/samplesource/bladerfinput/bladerfinputgui.ui +++ b/plugins/samplesource/bladerfinput/bladerfinputgui.ui @@ -6,20 +6,20 @@ 0 0 - 259 - 210 + 310 + 265 - + 0 0 - 0 - 210 + 310 + 250 @@ -35,7 +35,16 @@ 3 - + + 2 + + + 2 + + + 2 + + 2 @@ -222,7 +231,7 @@ XB200 board mode - + None @@ -283,11 +292,14 @@ - - - 3 + + + 2 - + + 2 + + @@ -300,74 +312,37 @@ - - - - - 70 - 16777215 - - - - Sample rate in kS/s - - - - - - - kS/s - - - - - - - - 70 - 16777215 - - - - IF bandwidth in kHz - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - + + - + 0 0 - - BW + + + 32 + 16 + + + + + Monospace + 12 + - - + + - kHz + S/s - - + + Qt::Horizontal @@ -379,21 +354,14 @@ - - - - - - 3 - - + Dec - + @@ -439,14 +407,47 @@ - + + + + + + 3 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + BW + + + + Fp - + Relative position of device center frequency @@ -468,7 +469,7 @@ - + @@ -479,22 +480,12 @@ LNA + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + - - - - Qt::Horizontal - - - - 40 - 20 - - - - - + @@ -519,15 +510,35 @@ - + dB - - + + + + kHz + + + + + + + + 70 + 16777215 + + + + IF bandwidth in kHz + + + + + Qt::Horizontal diff --git a/plugins/samplesource/bladerfinput/bladerfinputplugin.cpp b/plugins/samplesource/bladerfinput/bladerfinputplugin.cpp index 3cdaa5c7a..4a30cf393 100644 --- a/plugins/samplesource/bladerfinput/bladerfinputplugin.cpp +++ b/plugins/samplesource/bladerfinput/bladerfinputplugin.cpp @@ -27,7 +27,7 @@ const PluginDescriptor BlderfInputPlugin::m_pluginDescriptor = { QString("BladerRF Input"), - QString("3.0.0"), + QString("3.3.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/bladerfinput/bladerfinputsettings.cpp b/plugins/samplesource/bladerfinput/bladerfinputsettings.cpp index 72e3a9374..5976dd6f8 100644 --- a/plugins/samplesource/bladerfinput/bladerfinputsettings.cpp +++ b/plugins/samplesource/bladerfinput/bladerfinputsettings.cpp @@ -28,7 +28,7 @@ BladeRFInputSettings::BladeRFInputSettings() void BladeRFInputSettings::resetToDefaults() { m_centerFrequency = 435000*1000; - m_devSampleRate = 3072000; + m_devSampleRate = 3072000; m_lnaGain = 0; m_vga1 = 20; m_vga2 = 9; @@ -46,7 +46,7 @@ QByteArray BladeRFInputSettings::serialize() const { SimpleSerializer s(1); - s.writeS32(1, m_devSampleRate); + s.writeS32(1, m_devSampleRate); s.writeS32(2, m_lnaGain); s.writeS32(3, m_vga1); s.writeS32(4, m_vga2); @@ -76,7 +76,7 @@ bool BladeRFInputSettings::deserialize(const QByteArray& data) { int intval; - d.readS32(1, &m_devSampleRate); + d.readS32(1, &m_devSampleRate, 3072000); d.readS32(2, &m_lnaGain); d.readS32(3, &m_vga1); d.readS32(4, &m_vga2); diff --git a/plugins/samplesource/bladerfinput/bladerfinputsettings.h b/plugins/samplesource/bladerfinput/bladerfinputsettings.h index 6d738de90..7d18fa987 100644 --- a/plugins/samplesource/bladerfinput/bladerfinputsettings.h +++ b/plugins/samplesource/bladerfinput/bladerfinputsettings.h @@ -28,7 +28,7 @@ struct BladeRFInputSettings { } fcPos_t; quint64 m_centerFrequency; - qint32 m_devSampleRate; + qint32 m_devSampleRate; qint32 m_lnaGain; qint32 m_vga1; qint32 m_vga2; diff --git a/plugins/samplesource/rtlsdr/rtlsdrgui.ui b/plugins/samplesource/rtlsdr/rtlsdrgui.ui index d4d0bcd1d..be7d0546a 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrgui.ui +++ b/plugins/samplesource/rtlsdr/rtlsdrgui.ui @@ -306,17 +306,11 @@ - - 6 - - 6 - - - 6 + 2 - 6 + 2