diff --git a/devices/plutosdr/deviceplutosdrbox.cpp b/devices/plutosdr/deviceplutosdrbox.cpp index 085924ee2..48222b81e 100644 --- a/devices/plutosdr/deviceplutosdrbox.cpp +++ b/devices/plutosdr/deviceplutosdrbox.cpp @@ -469,7 +469,7 @@ void DevicePlutoSDRBox::setSampleRate(uint32_t sampleRate) m_devSampleRate = sampleRate; } -void DevicePlutoSDRBox::setFIR(uint32_t log2IntDec, uint32_t bw, int gain) +void DevicePlutoSDRBox::setFIR(uint32_t sampleRate, uint32_t log2IntDec, uint32_t bw, int gain) { SampleRates sampleRates; std::ostringstream ostr; @@ -487,7 +487,8 @@ void DevicePlutoSDRBox::setFIR(uint32_t log2IntDec, uint32_t bw, int gain) setFilter(ostr.str()); ostr.str(""); // reset string stream - setFIREnable(true); // re-enable + setFIREnable(true); // re-enable + setSampleRate(sampleRate); // set to new sample rate if (!getRxSampleRates(sampleRates)) { return; @@ -518,6 +519,8 @@ void DevicePlutoSDRBox::setFIR(uint32_t log2IntDec, uint32_t bw, int gain) m_lpfFIRlog2Decim = log2IntDec; m_lpfFIRBW = bw; m_lpfFIRGain = gain; + + // enable and set sample rate will be done by the caller } void DevicePlutoSDRBox::setFIREnable(bool enable) diff --git a/devices/plutosdr/deviceplutosdrbox.h b/devices/plutosdr/deviceplutosdrbox.h index 1a67c4b0f..8990ceb46 100644 --- a/devices/plutosdr/deviceplutosdrbox.h +++ b/devices/plutosdr/deviceplutosdrbox.h @@ -88,7 +88,7 @@ public: bool getRxSampleRates(SampleRates& sampleRates); bool getTxSampleRates(SampleRates& sampleRates); void setSampleRate(uint32_t sampleRate); - void setFIR(uint32_t intdec, uint32_t bw, int gain); + void setFIR(uint32_t sampleRate, uint32_t intdec, uint32_t bw, int gain); void setFIREnable(bool enable); void setLOPPMTenths(int ppmTenths); bool getRSSI(std::string& rssiStr, unsigned int chan); diff --git a/plugins/samplesource/plutosdrinput/plutosdrinput.cpp b/plugins/samplesource/plutosdrinput/plutosdrinput.cpp index 9fe52c6c6..28b30983e 100644 --- a/plugins/samplesource/plutosdrinput/plutosdrinput.cpp +++ b/plugins/samplesource/plutosdrinput/plutosdrinput.cpp @@ -307,7 +307,7 @@ bool PlutoSDRInput::applySettings(const PlutoSDRInputSettings& settings, bool fo } } - // TODO: apply settings (all cases) + // apply settings if ((m_settings.m_dcBlock != settings.m_dcBlock) || (m_settings.m_iqCorrection != settings.m_iqCorrection) || force) @@ -322,9 +322,9 @@ bool PlutoSDRInput::applySettings(const PlutoSDRInputSettings& settings, bool fo (settings.m_lpfFIRBW != m_settings.m_lpfFIRBW) || (settings.m_lpfFIRGain != m_settings.m_lpfFIRGain) || force) { - plutoBox->setSampleRate(settings.m_devSampleRate); // set end point frequency first - //plutoBox->setFIR(settings.m_lpfFIRlog2Decim, settings.m_lpfFIRBW, settings.m_lpfFIRGain); // don't bother with the FIR at this point - //plutoBox->setFIREnable(settings.m_lpfFIREnable); // eventually enable/disable FIR + plutoBox->setFIR(settings.m_devSampleRate, settings.m_lpfFIRlog2Decim, settings.m_lpfFIRBW, settings.m_lpfFIRGain); // don't bother with the FIR at this point + plutoBox->setFIREnable(settings.m_lpfFIREnable); // eventually enable/disable FIR + plutoBox->setSampleRate(settings.m_devSampleRate); // and set end point sample rate plutoBox->getRxSampleRates(m_deviceSampleRates); // pick up possible new rates qDebug() << "PlutoSDRInput::applySettings: BBPLL(Hz): " << m_deviceSampleRates.m_bbRateHz