diff --git a/sdrbase/dsp/devicesamplesource.cpp b/sdrbase/dsp/devicesamplesource.cpp
index 4295d2f3b..bc2e8a963 100644
--- a/sdrbase/dsp/devicesamplesource.cpp
+++ b/sdrbase/dsp/devicesamplesource.cpp
@@ -15,6 +15,7 @@
// along with this program. If not, see . //
///////////////////////////////////////////////////////////////////////////////////
+#include
#include
DeviceSampleSource::DeviceSampleSource() :
@@ -39,3 +40,45 @@ void DeviceSampleSource::handleInputMessages()
}
}
}
+
+qint64 DeviceSampleSource::calculateDeviceCenterFrequency(
+ quint64 centerFrequency,
+ qint64 transverterDeltaFrequency,
+ int log2Decim,
+ fcPos_t fcPos,
+ quint32 devSampleRate,
+ bool transverterMode)
+{
+ qint64 deviceCenterFrequency = centerFrequency;
+ deviceCenterFrequency -= transverterMode ? transverterDeltaFrequency : 0;
+ deviceCenterFrequency = deviceCenterFrequency < 0 ? 0 : deviceCenterFrequency;
+ qint64 f_img = deviceCenterFrequency;
+
+ if ((log2Decim == 0) || (fcPos == FC_POS_CENTER))
+ {
+ f_img = deviceCenterFrequency;
+ }
+ else
+ {
+ if (fcPos == FC_POS_INFRA)
+ {
+ deviceCenterFrequency += (devSampleRate / 4);
+ f_img = deviceCenterFrequency + devSampleRate/2;
+ }
+ else if (fcPos == FC_POS_SUPRA)
+ {
+ deviceCenterFrequency -= (devSampleRate / 4);
+ f_img = deviceCenterFrequency - devSampleRate/2;
+ }
+ }
+
+ qDebug() << "DeviceSampleSource::calculateDeviceCenterFrequency:"
+ << " desired center freq: " << centerFrequency << " Hz"
+ << " device center freq: " << deviceCenterFrequency << " Hz"
+ << " device sample rate: " << devSampleRate << "S/s"
+ << " Actual sample rate: " << devSampleRate/(1<