From 17976cf05849e2b8462698d0f090e097867645a3 Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 10 May 2018 11:48:06 +0200 Subject: [PATCH] PlutoSDR and RTL-SDR input: rework of center frequency setting --- .../plutosdrinput/plutosdrinput.cpp | 49 +++----------- plugins/samplesource/rtlsdr/rtlsdrinput.cpp | 67 +++++++------------ 2 files changed, 34 insertions(+), 82 deletions(-) diff --git a/plugins/samplesource/plutosdrinput/plutosdrinput.cpp b/plugins/samplesource/plutosdrinput/plutosdrinput.cpp index 9cb8827a8..740c86706 100644 --- a/plugins/samplesource/plutosdrinput/plutosdrinput.cpp +++ b/plugins/samplesource/plutosdrinput/plutosdrinput.cpp @@ -447,42 +447,21 @@ bool PlutoSDRInput::applySettings(const PlutoSDRInputSettings& settings, bool fo if ((m_settings.m_centerFrequency != settings.m_centerFrequency) || (m_settings.m_fcPos != settings.m_fcPos) || (m_settings.m_log2Decim != settings.m_log2Decim) + || (m_settings.m_devSampleRate != settings.m_devSampleRate) || (m_settings.m_transverterMode != settings.m_transverterMode) || (m_settings.m_transverterDeltaFrequency != settings.m_transverterDeltaFrequency) || force) { - qint64 deviceCenterFrequency = settings.m_centerFrequency; - deviceCenterFrequency -= settings.m_transverterMode ? settings.m_transverterDeltaFrequency : 0; - qint64 f_img = deviceCenterFrequency; - quint32 devSampleRate = settings.m_devSampleRate; + qint64 deviceCenterFrequency = DeviceSampleSource::calculateDeviceCenterFrequency( + settings.m_centerFrequency, + settings.m_transverterDeltaFrequency, + settings.m_log2Decim, + (DeviceSampleSource::fcPos_t) settings.m_fcPos, + settings.m_devSampleRate, + settings.m_transverterMode); - if ((settings.m_log2Decim == 0) || (settings.m_fcPos == PlutoSDRInputSettings::FC_POS_CENTER)) - { - f_img = deviceCenterFrequency; - } - else - { - if (settings.m_fcPos == PlutoSDRInputSettings::FC_POS_INFRA) - { - deviceCenterFrequency += (devSampleRate / 4); - f_img = deviceCenterFrequency + devSampleRate/2; - } - else if (settings.m_fcPos == PlutoSDRInputSettings::FC_POS_SUPRA) - { - deviceCenterFrequency -= (devSampleRate / 4); - f_img = deviceCenterFrequency - devSampleRate/2; - } - } - - deviceCenterFrequency = deviceCenterFrequency < 0 ? 0 : deviceCenterFrequency; - - if (force || (m_settings.m_centerFrequency != settings.m_centerFrequency) - || (m_settings.m_transverterMode != settings.m_transverterMode) - || (m_settings.m_transverterDeltaFrequency != settings.m_transverterDeltaFrequency)) - { - params.push_back(QString(tr("out_altvoltage0_RX_LO_frequency=%1").arg(deviceCenterFrequency)).toStdString()); - paramsToSet = true; - forwardChangeOwnDSP = true; - } + params.push_back(QString(tr("out_altvoltage0_RX_LO_frequency=%1").arg(deviceCenterFrequency)).toStdString()); + paramsToSet = true; + forwardChangeOwnDSP = true; if ((m_settings.m_fcPos != settings.m_fcPos) || force) { @@ -492,12 +471,6 @@ bool PlutoSDRInput::applySettings(const PlutoSDRInputSettings& settings, bool fo qDebug() << "PlutoSDRInput::applySettings: set fcPos to " << settings.m_fcPos; } } - - qDebug() << "PlutoSDRInput::applySettings: center freq: " << settings.m_centerFrequency << " Hz" - << " device center freq: " << deviceCenterFrequency << " Hz" - << " device sample rate: " << devSampleRate << "S/s" - << " Actual sample rate: " << devSampleRate/(1<setFcPos((int) m_settings.m_fcPos); } + + qDebug() << "RTLSDRInput::applySettings: set fc pos (enum) to " << (int) m_settings.m_fcPos; } if (m_dev != 0) { - if (rtlsdr_set_center_freq( m_dev, deviceCenterFrequency ) != 0) - { - qDebug("rtlsdr_set_center_freq(%lld) failed", deviceCenterFrequency); - } - else - { - qDebug() << "RTLSDRInput::applySettings: center freq: " << m_settings.m_centerFrequency << " Hz" - << " device center freq: " << deviceCenterFrequency << " Hz" - << " device sample rate: " << devSampleRate << "S/s" - << " Actual sample rate: " << devSampleRate/(1<setFcPos((int) m_settings.m_fcPos); - } - - qDebug() << "RTLSDRInput: set fc pos (enum) to " << (int) m_settings.m_fcPos; - } - if ((m_settings.m_noModMode != settings.m_noModMode) || force) { m_settings.m_noModMode = settings.m_noModMode; - qDebug() << "RTLSDRInput: set noModMode to " << m_settings.m_noModMode; + qDebug() << "RTLSDRInput::applySettings: set noModMode to " << m_settings.m_noModMode; // Direct Modes: 0: off, 1: I, 2: Q, 3: NoMod. if (m_settings.m_noModMode) {