Commit Graph

19 Commits

Author SHA1 Message Date
Clayton Smith e5bee0820f Replace BOOST_FOREACH with range-based for loops
Range-based for loops are available since C++11. Using them reduces
gr-osmosdr's dependence on Boost. Here I've done the replacement using a
global search-and-replace.

Signed-off-by: Eric Wild <>
2020-11-01 00:04:27 +01:00
Clayton Smith 52fcb0935f A lot of Boost functionality is available in C++11. Since GNU Radio is moving away from Boost, it probably makes sense to do so in gr-osmosdr as well.
This change removes all usage of boost::mutex,
boost::mutex::scoped_lock, boost::unique_lock, and
boost::condition_variable. It also removes usage of boost::shared_ptr
and boost::weak_ptr outside of block definitions (which must continue to
use Boost until GNU Radio 3.9).

Signed-off-by: Eric Wild <>
2020-08-02 23:52:25 +02:00
Anton Blanchard 49f9b2df2a I'm using an Airspy HF+ Discovery with the Soapy driver. Whenever I turn AGC off it stops receiving samples.
On closer inspection, switching AGC off results in samples stalling for
an extended period (hundreds of milliseconds). As such, we hit the
timeout in SoapyAirspyHF::readStream() and return SOAPY_SDR_TIMEOUT

Things go wrong at this point. It takes a long time before readStream()
is called again, presumably because we returned 0 from work(). By this
time our buffers have overflown, readStream() returns SOAPY_SDR_OVERFLOW
(-2) and work() returns 0. We loop forever, continually overflowing

Fix this by looping in soapy_source_c::work() when ->readStream returns
SOAPY_SDR_OVERFLOW so that we consume the buffers straight away.

Signed-off-by: Anton Blanchard <anton at>

Signed-off-by: Eric Wild <>
2020-08-02 23:50:59 +02:00
Josh Blum cf9549485a soapy - correct constant for frequency correction
This is a typo, some modules use the "CORR" string
in the setFrequency(dir, chan, name, value) API
to perform fine frequency adjustments.
Updated modules will use setFrequencyCorrection(),
this is support for backwards compatible implementations.
2017-04-21 11:29:30 -07:00
Josh Blum 117f648859 soapy: support set/getFrequencyCorrection() API
backwards compatible changes with #ifdef
set/get_freq_corr() call directly into the SoapySDR
equivalent when supported by the API version.
2017-04-18 16:29:02 -07:00
Josh Blum b361fa5a77 soapy: support newer getSampleRateRange() API call
Switch to the newer API call which can provide a list of ranges.
There are feature detection ifdefs provided by the library
so that code will always correctly compile.
2017-04-18 16:29:02 -07:00
Josh Blum a9e536f45b soapy - check for freq corr before invoking
set_freq_corr() is often a NOP for devices.
checking avoids crashes for some applications (ex GQRX)
2017-04-18 16:29:02 -07:00
Josh Blum 2a2236cc9e soapy: support step size in gain ranges
* This change is backwards compatible and checks for API support for step size.
* Created to house common gain range functions
* Moved factory mutex declaration to common source files as well
2017-02-02 11:33:34 -08:00
Josh Blum ae686c462d soapy: support newer getBandwidthRange() API call
Switch to the newer API call which can provide a list of ranges.
There are feature detection ifdefs provided by the library
so that code will always correctly compile.
2016-06-22 18:13:11 -07:00
Josh Blum 860e9a1a72 soapy: provide default gain range step
The soapysdr range type does not provide a step size,
however apps like the osmocom siggen use this size for a slider,
and a value of zero will cause a divide by zero error.

Although many ranges are not actually linear,
the idea to provide some default step to avoid crashes.
A future addition to the API may include providing a step.
2016-06-07 13:52:52 -07:00
Josh Blum e3b6560b04 soapy: support automatic bandwidth param
When the special 0.0 bandwidth setting is used, set the filter bandwidth to rate * 0.75.
Passing automatic 0.0 bandwidth for some devices was problematic.
2016-06-07 13:45:25 -07:00
Josh Blum b3d915f591 soapy: do not throw when IQ bal mode is set to off
The automatic IQ balance mode is not supported,
but we should not throw when it is set to disabled.
Setting to disabled is techinically allowable,
and currently throwing is disruptive for users.
2015-12-06 15:19:26 -08:00
Josh Blum 61184a19e7 soapy: make use of per component freq api 2015-02-24 20:36:36 -08:00
Josh Blum 53ed8918f3 soapy: ordering of elements for bb/if gain 2015-02-17 19:57:27 -08:00
Josh Blum a960600a1e soapy: start/stop hooks should use de/activate return code 2015-02-16 23:15:26 -08:00
Josh Blum cd0d9350c6 soapy: fix set_dc_offset_mode implementation 2015-02-16 21:25:38 -08:00
Josh Blum 535a505069 soapy: fixes from last commit w/ field test 2015-02-16 21:04:05 -08:00
Josh Blum 6d6a483cfb soapy: filled in the source and sink implementation 2015-02-15 19:20:01 -08:00
Josh Blum 3afcb7e04f soapy: began work on soapy sdr support 2015-02-15 17:57:12 -08:00