From a465812132c54edcea628b03202af66b7ba80fdc Mon Sep 17 00:00:00 2001
From: f4exb <f4exb06@gmail.com>
Date: Thu, 10 May 2018 14:51:05 +0200
Subject: [PATCH] Airspy input: rework of center frequency setting

---
 plugins/samplesource/airspy/airspyinput.cpp | 41 +++++----------------
 1 file changed, 9 insertions(+), 32 deletions(-)

diff --git a/plugins/samplesource/airspy/airspyinput.cpp b/plugins/samplesource/airspy/airspyinput.cpp
index 9fd0381c1..72e062830 100644
--- a/plugins/samplesource/airspy/airspyinput.cpp
+++ b/plugins/samplesource/airspy/airspyinput.cpp
@@ -407,45 +407,22 @@ bool AirspyInput::applySettings(const AirspySettings& settings, bool force)
         || (m_settings.m_transverterMode != settings.m_transverterMode)
         || (m_settings.m_transverterDeltaFrequency != settings.m_transverterDeltaFrequency) || force)
 	{
+        qint64 deviceCenterFrequency = DeviceSampleSource::calculateDeviceCenterFrequency(
+                settings.m_centerFrequency,
+                settings.m_transverterDeltaFrequency,
+                settings.m_log2Decim,
+                (DeviceSampleSource::fcPos_t) settings.m_fcPos,
+                m_sampleRates[m_settings.m_devSampleRateIndex],
+                settings.m_transverterMode);
+
         m_settings.m_centerFrequency = settings.m_centerFrequency;
         m_settings.m_log2Decim = settings.m_log2Decim;
         m_settings.m_transverterMode = settings.m_transverterMode;
         m_settings.m_transverterDeltaFrequency = settings.m_transverterDeltaFrequency;
         m_settings.m_LOppmTenths = settings.m_LOppmTenths;
 
-        qint64 deviceCenterFrequency = m_settings.m_centerFrequency;
-        deviceCenterFrequency -= m_settings.m_transverterMode ? m_settings.m_transverterDeltaFrequency : 0;
-        deviceCenterFrequency = deviceCenterFrequency < 0 ? 0 : deviceCenterFrequency;
-        qint64 f_img = deviceCenterFrequency;
-        quint32 devSampleRate = m_sampleRates[m_settings.m_devSampleRateIndex];
-
-		if ((m_settings.m_log2Decim == 0) || (settings.m_fcPos == AirspySettings::FC_POS_CENTER))
-		{
-			f_img = deviceCenterFrequency;
-		}
-		else
-		{
-			if (settings.m_fcPos == AirspySettings::FC_POS_INFRA)
-			{
-				deviceCenterFrequency += (devSampleRate / 4);
-				f_img = deviceCenterFrequency + devSampleRate/2;
-			}
-			else if (settings.m_fcPos == AirspySettings::FC_POS_SUPRA)
-			{
-				deviceCenterFrequency -= (devSampleRate / 4);
-				f_img = deviceCenterFrequency - devSampleRate/2;
-			}
-		}
-
-		if (m_dev != 0)
-		{
+		if (m_dev != 0) {
 			setDeviceCenterFrequency(deviceCenterFrequency);
-
-			qDebug() << "AirspyInput::applySettings: center freq: " << m_settings.m_centerFrequency << " Hz"
-					<< " device center freq: " << deviceCenterFrequency << " Hz"
-					<< " device sample rate: " << devSampleRate << "Hz"
-					<< " Actual sample rate: " << devSampleRate/(1<<m_settings.m_log2Decim) << "Hz"
-					<< " img: " << f_img << "Hz";
 		}
 
 		forwardChange = true;