From 772a150136a30d70e4efde64a73010d29fb2637c Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 26 Nov 2018 08:54:06 +0100 Subject: [PATCH] RTLSDR: implemented offset tuning --- plugins/samplesource/rtlsdr/rtlsdrgui.cpp | 7 +++++++ plugins/samplesource/rtlsdr/rtlsdrgui.h | 1 + plugins/samplesource/rtlsdr/rtlsdrgui.ui | 10 +++++++++ plugins/samplesource/rtlsdr/rtlsdrinput.cpp | 21 ++++++++++++++----- .../samplesource/rtlsdr/rtlsdrsettings.cpp | 3 +++ plugins/samplesource/rtlsdr/rtlsdrsettings.h | 1 + 6 files changed, 38 insertions(+), 5 deletions(-) diff --git a/plugins/samplesource/rtlsdr/rtlsdrgui.cpp b/plugins/samplesource/rtlsdr/rtlsdrgui.cpp index 381a2b053..92cd317f7 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrgui.cpp +++ b/plugins/samplesource/rtlsdr/rtlsdrgui.cpp @@ -261,6 +261,7 @@ void RTLSDRGui::displaySettings() ui->checkBox->setChecked(m_settings.m_noModMode); ui->agc->setChecked(m_settings.m_agc); ui->lowSampleRate->setChecked(m_settings.m_lowSampleRate); + ui->offsetTuning->setChecked(m_settings.m_offsetTuning); } void RTLSDRGui::sendSettings() @@ -441,6 +442,12 @@ void RTLSDRGui::on_sampleRate_changed(quint64 value) sendSettings(); } +void RTLSDRGui::on_offsetTuning_toggled(bool checked) +{ + m_settings.m_offsetTuning = checked; + sendSettings(); +} + void RTLSDRGui::on_rfBW_changed(quint64 value) { m_settings.m_rfBandwidth = value * 1000; diff --git a/plugins/samplesource/rtlsdr/rtlsdrgui.h b/plugins/samplesource/rtlsdr/rtlsdrgui.h index f2c838618..69e010f68 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrgui.h +++ b/plugins/samplesource/rtlsdr/rtlsdrgui.h @@ -78,6 +78,7 @@ private slots: void handleInputMessages(); void on_centerFrequency_changed(quint64 value); void on_sampleRate_changed(quint64 value); + void on_offsetTuning_toggled(bool checked); void on_rfBW_changed(quint64 value); void on_lowSampleRate_toggled(bool checked); void on_dcOffset_toggled(bool checked); diff --git a/plugins/samplesource/rtlsdr/rtlsdrgui.ui b/plugins/samplesource/rtlsdr/rtlsdrgui.ui index 79b0dd127..0549f25e6 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrgui.ui +++ b/plugins/samplesource/rtlsdr/rtlsdrgui.ui @@ -493,6 +493,16 @@ + + + + Offset tuning + + + Ofs + + + diff --git a/plugins/samplesource/rtlsdr/rtlsdrinput.cpp b/plugins/samplesource/rtlsdr/rtlsdrinput.cpp index f78765cca..394096e59 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrinput.cpp +++ b/plugins/samplesource/rtlsdr/rtlsdrinput.cpp @@ -507,17 +507,28 @@ bool RTLSDRInput::applySettings(const RTLSDRSettings& settings, bool force) if (m_dev != 0) { - if (rtlsdr_set_tuner_bandwidth( m_dev, m_settings.m_rfBandwidth) != 0) - { + if (rtlsdr_set_tuner_bandwidth( m_dev, m_settings.m_rfBandwidth) != 0) { qCritical("RTLSDRInput::applySettings: could not set RF bandwidth to %u", m_settings.m_rfBandwidth); - } - else - { + } else { qDebug() << "RTLSDRInput::applySettings: set RF bandwidth to " << m_settings.m_rfBandwidth; } } } + if ((m_settings.m_offsetTuning != settings.m_offsetTuning) || force) + { + m_settings.m_offsetTuning = settings.m_offsetTuning; + + if (m_dev != 0) + { + if (rtlsdr_set_offset_tuning(m_dev, m_settings.m_offsetTuning ? 0 : 1) != 0) { + qCritical("RTLSDRInput::applySettings: could not set offset tuning to %s", m_settings.m_offsetTuning ? "on" : "off"); + } else { + qDebug("RTLSDRInput::applySettings: offset tuning set to %s", m_settings.m_offsetTuning ? "on" : "off"); + } + } + } + if (forwardChange) { int sampleRate = m_settings.m_devSampleRate/(1<