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<