diff --git a/devices/plutosdr/deviceplutosdrbox.cpp b/devices/plutosdr/deviceplutosdrbox.cpp index 5b18c6b8f..b19fff4d2 100644 --- a/devices/plutosdr/deviceplutosdrbox.cpp +++ b/devices/plutosdr/deviceplutosdrbox.cpp @@ -430,13 +430,33 @@ bool DevicePlutoSDRBox::parseSampleRates(const std::string& rateStr, SampleRates void DevicePlutoSDRBox::setSampleRate(uint32_t sampleRate) { - char buff[100]; - std::vector params; - snprintf(buff, sizeof(buff), "in_voltage_sampling_frequency=%d", sampleRate); - params.push_back(std::string(buff)); - snprintf(buff, sizeof(buff), "out_voltage_sampling_frequency=%d", sampleRate); - params.push_back(std::string(buff)); - set_params(DEVICE_PHY, params); +// char buff[100]; +// std::vector params; +// snprintf(buff, sizeof(buff), "in_voltage_sampling_frequency=%d", sampleRate); +// params.push_back(std::string(buff)); +// snprintf(buff, sizeof(buff), "out_voltage_sampling_frequency=%d", sampleRate); +// params.push_back(std::string(buff)); +// set_params(DEVICE_PHY, params); + + int ret = iio_channel_attr_write_longlong(m_chnRx0, "sampling_frequency", sampleRate); + + if (ret < 0) { + qWarning("DevicePlutoSDRBox::setSampleRate: cannot set Rx sample rate to %u: %d", sampleRate, ret); + } else { + qDebug("DevicePlutoSDRBox::setSampleRate: Rx sample rate set to %u: %d", sampleRate, ret); + } + + if (m_chnTx0) // Tx is opened at the same time + { + ret = iio_channel_attr_write_longlong(m_chnTx0, "sampling_frequency", sampleRate); + + if (ret < 0) { + qWarning("DevicePlutoSDRBox::setSampleRate: cannot set Tx sample rate to %u: %d", sampleRate, ret); + } else { + qDebug("DevicePlutoSDRBox::setSampleRate: Tx sample rate set to %u: %d", sampleRate, ret); + } + } + m_devSampleRate = sampleRate; }