mirror of https://github.com/f4exb/sdrangel.git
Series of shifted decimators matching shifted interpolators. Applied to HackRF input
This commit is contained in:
parent
6db002bbe3
commit
e2ac286458
|
@ -446,6 +446,7 @@ bool AirspyInput::applySettings(const AirspySettings& settings, bool force)
|
||||||
settings.m_log2Decim,
|
settings.m_log2Decim,
|
||||||
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
||||||
m_sampleRates[settings.m_devSampleRateIndex],
|
m_sampleRates[settings.m_devSampleRateIndex],
|
||||||
|
DeviceSampleSource::FrequencyShiftScheme::FSHIFT_STD,
|
||||||
settings.m_transverterMode);
|
settings.m_transverterMode);
|
||||||
|
|
||||||
if (m_dev != 0) {
|
if (m_dev != 0) {
|
||||||
|
|
|
@ -542,7 +542,9 @@ bool Bladerf1Input::applySettings(const BladeRF1InputSettings& settings, bool fo
|
||||||
0,
|
0,
|
||||||
settings.m_log2Decim,
|
settings.m_log2Decim,
|
||||||
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
||||||
settings.m_devSampleRate);
|
settings.m_devSampleRate,
|
||||||
|
DeviceSampleSource::FrequencyShiftScheme::FSHIFT_STD,
|
||||||
|
false);
|
||||||
|
|
||||||
forwardChange = true;
|
forwardChange = true;
|
||||||
|
|
||||||
|
|
|
@ -676,7 +676,9 @@ bool BladeRF2Input::handleMessage(const Message& message)
|
||||||
0,
|
0,
|
||||||
settings.m_log2Decim,
|
settings.m_log2Decim,
|
||||||
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
||||||
settings.m_devSampleRate);
|
settings.m_devSampleRate,
|
||||||
|
DeviceSampleSource::FrequencyShiftScheme::FSHIFT_STD,
|
||||||
|
false);
|
||||||
|
|
||||||
if (setDeviceCenterFrequency(dev, requestedChannel, deviceCenterFrequency, settings.m_LOppmTenths))
|
if (setDeviceCenterFrequency(dev, requestedChannel, deviceCenterFrequency, settings.m_LOppmTenths))
|
||||||
{
|
{
|
||||||
|
@ -888,7 +890,9 @@ bool BladeRF2Input::applySettings(const BladeRF2InputSettings& settings, bool fo
|
||||||
0,
|
0,
|
||||||
settings.m_log2Decim,
|
settings.m_log2Decim,
|
||||||
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
||||||
settings.m_devSampleRate);
|
settings.m_devSampleRate,
|
||||||
|
DeviceSampleSource::FrequencyShiftScheme::FSHIFT_STD,
|
||||||
|
false);
|
||||||
|
|
||||||
forwardChangeOwnDSP = true;
|
forwardChangeOwnDSP = true;
|
||||||
forwardChangeRxBuddies = true;
|
forwardChangeRxBuddies = true;
|
||||||
|
|
|
@ -349,6 +349,7 @@ void FCDProInput::applySettings(const FCDProSettings& settings, bool force)
|
||||||
settings.m_log2Decim,
|
settings.m_log2Decim,
|
||||||
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
||||||
fcd_traits<Pro>::sampleRate,
|
fcd_traits<Pro>::sampleRate,
|
||||||
|
DeviceSampleSource::FrequencyShiftScheme::FSHIFT_STD,
|
||||||
settings.m_transverterMode);
|
settings.m_transverterMode);
|
||||||
|
|
||||||
if (m_dev != 0)
|
if (m_dev != 0)
|
||||||
|
|
|
@ -351,6 +351,7 @@ void FCDProPlusInput::applySettings(const FCDProPlusSettings& settings, bool for
|
||||||
settings.m_log2Decim,
|
settings.m_log2Decim,
|
||||||
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
||||||
fcd_traits<ProPlus>::sampleRate,
|
fcd_traits<ProPlus>::sampleRate,
|
||||||
|
DeviceSampleSource::FrequencyShiftScheme::FSHIFT_STD,
|
||||||
settings.m_transverterMode);
|
settings.m_transverterMode);
|
||||||
|
|
||||||
if (m_dev != 0) {
|
if (m_dev != 0) {
|
||||||
|
|
|
@ -319,7 +319,8 @@ bool HackRFInput::handleMessage(const Message& message)
|
||||||
0,
|
0,
|
||||||
m_settings.m_log2Decim,
|
m_settings.m_log2Decim,
|
||||||
(DeviceSampleSource::fcPos_t) m_settings.m_fcPos,
|
(DeviceSampleSource::fcPos_t) m_settings.m_fcPos,
|
||||||
m_settings.m_devSampleRate);
|
m_settings.m_devSampleRate,
|
||||||
|
DeviceSampleSource::FSHIFT_TXSYNC);
|
||||||
qDebug("HackRFInput::handleMessage: MsgSynchronizeFrequency: centerFrequency: %lld Hz", centerFrequency);
|
qDebug("HackRFInput::handleMessage: MsgSynchronizeFrequency: centerFrequency: %lld Hz", centerFrequency);
|
||||||
HackRFInputSettings settings = m_settings;
|
HackRFInputSettings settings = m_settings;
|
||||||
settings.m_centerFrequency = centerFrequency;
|
settings.m_centerFrequency = centerFrequency;
|
||||||
|
@ -441,7 +442,9 @@ bool HackRFInput::applySettings(const HackRFInputSettings& settings, bool force)
|
||||||
0,
|
0,
|
||||||
settings.m_log2Decim,
|
settings.m_log2Decim,
|
||||||
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
||||||
settings.m_devSampleRate);
|
settings.m_devSampleRate,
|
||||||
|
DeviceSampleSource::FrequencyShiftScheme::FSHIFT_TXSYNC,
|
||||||
|
false);
|
||||||
setDeviceCenterFrequency(deviceCenterFrequency, settings.m_LOppmTenths);
|
setDeviceCenterFrequency(deviceCenterFrequency, settings.m_LOppmTenths);
|
||||||
|
|
||||||
if (m_deviceAPI->getSinkBuddies().size() > 0) // forward to buddy if necessary
|
if (m_deviceAPI->getSinkBuddies().size() > 0) // forward to buddy if necessary
|
||||||
|
|
|
@ -139,19 +139,19 @@ void HackRFInputThread::callback(const qint8* buf, qint32 len)
|
||||||
m_decimators.decimate2_inf(&it, buf, len);
|
m_decimators.decimate2_inf(&it, buf, len);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
m_decimators.decimate4_inf(&it, buf, len);
|
m_decimators.decimate4_inf_txsync(&it, buf, len);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
m_decimators.decimate8_inf(&it, buf, len);
|
m_decimators.decimate8_inf_txsync(&it, buf, len);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
m_decimators.decimate16_inf(&it, buf, len);
|
m_decimators.decimate16_inf_txsync(&it, buf, len);
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
m_decimators.decimate32_inf(&it, buf, len);
|
m_decimators.decimate32_inf_txsync(&it, buf, len);
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
m_decimators.decimate64_inf(&it, buf, len);
|
m_decimators.decimate64_inf_txsync(&it, buf, len);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -165,19 +165,19 @@ void HackRFInputThread::callback(const qint8* buf, qint32 len)
|
||||||
m_decimators.decimate2_sup(&it, buf, len);
|
m_decimators.decimate2_sup(&it, buf, len);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
m_decimators.decimate4_sup(&it, buf, len);
|
m_decimators.decimate4_sup_txsync(&it, buf, len);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
m_decimators.decimate8_sup(&it, buf, len);
|
m_decimators.decimate8_sup_txsync(&it, buf, len);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
m_decimators.decimate16_sup(&it, buf, len);
|
m_decimators.decimate16_sup_txsync(&it, buf, len);
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
m_decimators.decimate32_sup(&it, buf, len);
|
m_decimators.decimate32_sup_txsync(&it, buf, len);
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
m_decimators.decimate64_sup(&it, buf, len);
|
m_decimators.decimate64_sup_txsync(&it, buf, len);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -546,6 +546,7 @@ bool PlutoSDRInput::applySettings(const PlutoSDRInputSettings& settings, bool fo
|
||||||
settings.m_log2Decim,
|
settings.m_log2Decim,
|
||||||
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
||||||
settings.m_devSampleRate,
|
settings.m_devSampleRate,
|
||||||
|
DeviceSampleSource::FrequencyShiftScheme::FSHIFT_STD,
|
||||||
settings.m_transverterMode);
|
settings.m_transverterMode);
|
||||||
|
|
||||||
params.push_back(QString(tr("out_altvoltage0_RX_LO_frequency=%1").arg(deviceCenterFrequency)).toStdString());
|
params.push_back(QString(tr("out_altvoltage0_RX_LO_frequency=%1").arg(deviceCenterFrequency)).toStdString());
|
||||||
|
|
|
@ -489,6 +489,7 @@ bool RTLSDRInput::applySettings(const RTLSDRSettings& settings, bool force)
|
||||||
settings.m_log2Decim,
|
settings.m_log2Decim,
|
||||||
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
||||||
settings.m_devSampleRate,
|
settings.m_devSampleRate,
|
||||||
|
DeviceSampleSource::FrequencyShiftScheme::FSHIFT_STD,
|
||||||
settings.m_transverterMode);
|
settings.m_transverterMode);
|
||||||
|
|
||||||
forwardChange = true;
|
forwardChange = true;
|
||||||
|
|
|
@ -555,7 +555,9 @@ bool SDRPlayInput::applySettings(const SDRPlaySettings& settings, bool forwardCh
|
||||||
0,
|
0,
|
||||||
settings.m_log2Decim,
|
settings.m_log2Decim,
|
||||||
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
||||||
SDRPlaySampleRates::getRate(settings.m_devSampleRateIndex));
|
SDRPlaySampleRates::getRate(settings.m_devSampleRateIndex),
|
||||||
|
DeviceSampleSource::FrequencyShiftScheme::FSHIFT_STD,
|
||||||
|
false);
|
||||||
|
|
||||||
forwardChange = true;
|
forwardChange = true;
|
||||||
|
|
||||||
|
|
|
@ -1018,7 +1018,9 @@ bool SoapySDRInput::applySettings(const SoapySDRInputSettings& settings, bool fo
|
||||||
0,
|
0,
|
||||||
settings.m_log2Decim,
|
settings.m_log2Decim,
|
||||||
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
||||||
settings.m_devSampleRate);
|
settings.m_devSampleRate,
|
||||||
|
DeviceSampleSource::FrequencyShiftScheme::FSHIFT_STD,
|
||||||
|
false);
|
||||||
|
|
||||||
forwardChangeOwnDSP = true;
|
forwardChangeOwnDSP = true;
|
||||||
forwardChangeToBuddies = true;
|
forwardChangeToBuddies = true;
|
||||||
|
|
|
@ -295,7 +295,9 @@ bool TestSourceInput::applySettings(const TestSourceSettings& settings, bool for
|
||||||
0, // no transverter mode
|
0, // no transverter mode
|
||||||
settings.m_log2Decim,
|
settings.m_log2Decim,
|
||||||
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
||||||
settings.m_sampleRate);
|
settings.m_sampleRate,
|
||||||
|
DeviceSampleSource::FrequencyShiftScheme::FSHIFT_STD,
|
||||||
|
false);
|
||||||
|
|
||||||
int frequencyShift = settings.m_frequencyShift;
|
int frequencyShift = settings.m_frequencyShift;
|
||||||
quint32 devSampleRate = settings.m_sampleRate;
|
quint32 devSampleRate = settings.m_sampleRate;
|
||||||
|
@ -305,7 +307,8 @@ bool TestSourceInput::applySettings(const TestSourceSettings& settings, bool for
|
||||||
frequencyShift += DeviceSampleSource::calculateFrequencyShift(
|
frequencyShift += DeviceSampleSource::calculateFrequencyShift(
|
||||||
settings.m_log2Decim,
|
settings.m_log2Decim,
|
||||||
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
||||||
settings.m_sampleRate);
|
settings.m_sampleRate,
|
||||||
|
DeviceSampleSource::FSHIFT_STD);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_testSourceThread != 0)
|
if (m_testSourceThread != 0)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -47,6 +47,7 @@ qint64 DeviceSampleSource::calculateDeviceCenterFrequency(
|
||||||
int log2Decim,
|
int log2Decim,
|
||||||
fcPos_t fcPos,
|
fcPos_t fcPos,
|
||||||
quint32 devSampleRate,
|
quint32 devSampleRate,
|
||||||
|
FrequencyShiftScheme frequencyShiftScheme,
|
||||||
bool transverterMode)
|
bool transverterMode)
|
||||||
{
|
{
|
||||||
qint64 deviceCenterFrequency = centerFrequency;
|
qint64 deviceCenterFrequency = centerFrequency;
|
||||||
|
@ -54,10 +55,11 @@ qint64 DeviceSampleSource::calculateDeviceCenterFrequency(
|
||||||
deviceCenterFrequency = deviceCenterFrequency < 0 ? 0 : deviceCenterFrequency;
|
deviceCenterFrequency = deviceCenterFrequency < 0 ? 0 : deviceCenterFrequency;
|
||||||
qint64 f_img = deviceCenterFrequency;
|
qint64 f_img = deviceCenterFrequency;
|
||||||
|
|
||||||
deviceCenterFrequency -= calculateFrequencyShift(log2Decim, fcPos, devSampleRate);
|
deviceCenterFrequency -= calculateFrequencyShift(log2Decim, fcPos, devSampleRate, frequencyShiftScheme);
|
||||||
f_img -= 2*calculateFrequencyShift(log2Decim, fcPos, devSampleRate);
|
f_img -= 2*calculateFrequencyShift(log2Decim, fcPos, devSampleRate, frequencyShiftScheme);
|
||||||
|
|
||||||
qDebug() << "DeviceSampleSource::calculateDeviceCenterFrequency:"
|
qDebug() << "DeviceSampleSource::calculateDeviceCenterFrequency:"
|
||||||
|
<< " frequencyShiftScheme: " << frequencyShiftScheme
|
||||||
<< " desired center freq: " << centerFrequency << " Hz"
|
<< " desired center freq: " << centerFrequency << " Hz"
|
||||||
<< " device center freq: " << deviceCenterFrequency << " Hz"
|
<< " device center freq: " << deviceCenterFrequency << " Hz"
|
||||||
<< " device sample rate: " << devSampleRate << "S/s"
|
<< " device sample rate: " << devSampleRate << "S/s"
|
||||||
|
@ -74,14 +76,16 @@ qint64 DeviceSampleSource::calculateCenterFrequency(
|
||||||
int log2Decim,
|
int log2Decim,
|
||||||
fcPos_t fcPos,
|
fcPos_t fcPos,
|
||||||
quint32 devSampleRate,
|
quint32 devSampleRate,
|
||||||
|
FrequencyShiftScheme frequencyShiftScheme,
|
||||||
bool transverterMode)
|
bool transverterMode)
|
||||||
{
|
{
|
||||||
qint64 centerFrequency = deviceCenterFrequency;
|
qint64 centerFrequency = deviceCenterFrequency;
|
||||||
centerFrequency += calculateFrequencyShift(log2Decim, fcPos, devSampleRate);
|
centerFrequency += calculateFrequencyShift(log2Decim, fcPos, devSampleRate, frequencyShiftScheme);
|
||||||
centerFrequency += transverterMode ? transverterDeltaFrequency : 0;
|
centerFrequency += transverterMode ? transverterDeltaFrequency : 0;
|
||||||
centerFrequency = centerFrequency < 0 ? 0 : centerFrequency;
|
centerFrequency = centerFrequency < 0 ? 0 : centerFrequency;
|
||||||
|
|
||||||
qDebug() << "DeviceSampleSource::calculateCenterFrequency:"
|
qDebug() << "DeviceSampleSource::calculateCenterFrequency:"
|
||||||
|
<< " frequencyShiftScheme: " << frequencyShiftScheme
|
||||||
<< " desired center freq: " << centerFrequency << " Hz"
|
<< " desired center freq: " << centerFrequency << " Hz"
|
||||||
<< " device center freq: " << deviceCenterFrequency << " Hz"
|
<< " device center freq: " << deviceCenterFrequency << " Hz"
|
||||||
<< " device sample rate: " << devSampleRate << "S/s"
|
<< " device sample rate: " << devSampleRate << "S/s"
|
||||||
|
@ -109,8 +113,11 @@ qint64 DeviceSampleSource::calculateCenterFrequency(
|
||||||
qint32 DeviceSampleSource::calculateFrequencyShift(
|
qint32 DeviceSampleSource::calculateFrequencyShift(
|
||||||
int log2Decim,
|
int log2Decim,
|
||||||
fcPos_t fcPos,
|
fcPos_t fcPos,
|
||||||
quint32 devSampleRate)
|
quint32 devSampleRate,
|
||||||
|
FrequencyShiftScheme frequencyShiftScheme)
|
||||||
{
|
{
|
||||||
|
if (frequencyShiftScheme == FSHIFT_STD)
|
||||||
|
{
|
||||||
if (log2Decim == 0) { // no shift at all
|
if (log2Decim == 0) { // no shift at all
|
||||||
return 0;
|
return 0;
|
||||||
} else if (log2Decim < 3) {
|
} else if (log2Decim < 3) {
|
||||||
|
@ -130,4 +137,36 @@ qint32 DeviceSampleSource::calculateFrequencyShift(
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else if (frequencyShiftScheme == FSHIFT_TXSYNC)
|
||||||
|
{
|
||||||
|
if (fcPos == FC_POS_CENTER) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int sign = fcPos == FC_POS_INFRA ? -1 : 1;
|
||||||
|
int halfSampleRate = devSampleRate / 2; // fractions are relative to sideband thus based on half the sample rate
|
||||||
|
|
||||||
|
if (log2Decim == 0) {
|
||||||
|
return 0;
|
||||||
|
} else if (log2Decim == 1) {
|
||||||
|
return sign * (halfSampleRate / 2); // inf or sup: 1/2
|
||||||
|
} else if (log2Decim == 2) {
|
||||||
|
return sign * ((halfSampleRate * 3) / 4); // inf, inf or sup, sup: 1/2 + 1/4
|
||||||
|
} else if (log2Decim == 3) {
|
||||||
|
return sign * ((halfSampleRate * 5) / 8); // inf, inf, sup or sup, sup, inf: 1/2 + 1/4 - 1/8 = 5/8
|
||||||
|
} else if (log2Decim == 4) {
|
||||||
|
return sign * ((halfSampleRate * 11) / 16); // inf, inf, sup, inf or sup, sup, inf, sup: 1/2 + 1/4 - 1/8 + 1/16 = 11/16
|
||||||
|
} else if (log2Decim == 5) {
|
||||||
|
return sign * ((halfSampleRate * 21) / 32); // inf, inf, sup, inf, sup or sup, sup, inf, sup, inf: 1/2 + 1/4 - 1/8 + 1/16 - 1/32 = 21/32
|
||||||
|
} else if (log2Decim == 6) {
|
||||||
|
return sign * ((halfSampleRate * 21) / 64); // inf, sup, inf, sup, inf, sup or sup, inf, sup, inf, sup, inf: 1/2 - 1/4 + 1/8 -1/16 + 1/32 - 1/64 = 21/64
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,11 @@ public:
|
||||||
FC_POS_CENTER
|
FC_POS_CENTER
|
||||||
} fcPos_t;
|
} fcPos_t;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
FSHIFT_STD = 0, // Standard Rx independent
|
||||||
|
FSHIFT_TXSYNC // Follows same scheme as Tx
|
||||||
|
} FrequencyShiftScheme;
|
||||||
|
|
||||||
DeviceSampleSource();
|
DeviceSampleSource();
|
||||||
virtual ~DeviceSampleSource();
|
virtual ~DeviceSampleSource();
|
||||||
virtual void destroy() = 0;
|
virtual void destroy() = 0;
|
||||||
|
@ -121,7 +126,9 @@ public:
|
||||||
int log2Decim,
|
int log2Decim,
|
||||||
fcPos_t fcPos,
|
fcPos_t fcPos,
|
||||||
quint32 devSampleRate,
|
quint32 devSampleRate,
|
||||||
bool transverterMode = false);
|
FrequencyShiftScheme frequencyShiftScheme,
|
||||||
|
bool transverterMode = false
|
||||||
|
);
|
||||||
|
|
||||||
static qint64 calculateCenterFrequency(
|
static qint64 calculateCenterFrequency(
|
||||||
quint64 deviceCenterFrequency,
|
quint64 deviceCenterFrequency,
|
||||||
|
@ -129,12 +136,16 @@ public:
|
||||||
int log2Decim,
|
int log2Decim,
|
||||||
fcPos_t fcPos,
|
fcPos_t fcPos,
|
||||||
quint32 devSampleRate,
|
quint32 devSampleRate,
|
||||||
bool transverterMode = false);
|
FrequencyShiftScheme frequencyShiftScheme,
|
||||||
|
bool transverterMode = false
|
||||||
|
);
|
||||||
|
|
||||||
static qint32 calculateFrequencyShift(
|
static qint32 calculateFrequencyShift(
|
||||||
int log2Decim,
|
int log2Decim,
|
||||||
fcPos_t fcPos,
|
fcPos_t fcPos,
|
||||||
quint32 devSampleRate);
|
quint32 devSampleRate,
|
||||||
|
FrequencyShiftScheme frequencyShiftScheme
|
||||||
|
);
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
void handleInputMessages();
|
void handleInputMessages();
|
||||||
|
|
Loading…
Reference in New Issue