From 6d8c9f60d20c0c31905a17eeaf0eb3cd2906dbd9 Mon Sep 17 00:00:00 2001 From: vsonnier Date: Sat, 9 Mar 2019 17:56:49 +0100 Subject: [PATCH] Maybe fixing #716: Nullify readStream timeout parameter effect which some modules effectively use (LimeSDR...) but we don't care --- src/sdr/SoapySDRThread.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/sdr/SoapySDRThread.cpp b/src/sdr/SoapySDRThread.cpp index 334cae8..9941e54 100644 --- a/src/sdr/SoapySDRThread.cpp +++ b/src/sdr/SoapySDRThread.cpp @@ -200,8 +200,15 @@ void SDRThread::assureBufferMinSize(SDRThreadIQData * dataOut, size_t minSize) { // a 'this.numElems' sized batch of samples (SDRThreadIQData) and push it into iqDataOutQueue. //this batch of samples is built to represent 1 frame / TARGET_DISPLAY_FPS. int SDRThread::readStream(SDRThreadIQDataQueuePtr iqDataOutQueue) { - int flags = 0; - long long timeNs = 0; + + int flags(0); + + long long timeNs(0); + + // Supply a huge timeout value to neutralize the readStream 'timeout' effect + // we are not interested in, but some modules may effectively use. + //TODO: use something roughly (1 / TARGET_DISPLAY_FPS) seconds * (factor) instead.? + long long timeoutUs = (1 << 32); int n_read = 0; int nElems = numElems.load(); @@ -249,7 +256,7 @@ int SDRThread::readStream(SDRThreadIQDataQueuePtr iqDataOutQueue) { //Whatever the number of remaining samples needed to reach nElems, we always try to read a mtElems-size chunk, //from which SoapySDR effectively returns n_stream_read. - int n_stream_read = device->readStream(stream, buffs, mtElems, flags, timeNs); + int n_stream_read = device->readStream(stream, buffs, mtElems, flags, timeNs, timeoutUs); readStreamCode = n_stream_read;