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<