Change RX bandwidth getters, setters, and enum constants to properly
encode the analog RX band pass filter settings from the AT86RF215
manual. The driver initializes the radio with the IF shifted by 1.25x
by hard coding RF09_RXBWC.IFS=1 and RF24_RXBWC.IFS=1. However, the
analog BPF bandwidths are fixed regardless of this setting. Previously
the driver assumed that BPF bandwidths should be multiplied by a 1.25x
factor. This resulted in setting narrower filtering than desired and
caused the IF image to alias into the sampling bandwidth.
Recompute bandwidth option midpoints for rounding up or down requested
RX bandwidth values to the nearest supported value.
Change sample rate getters and setters to use precise values for
fractional sample rates 4e6/3 and 2e6/3 rather than rounding to the
nearest 1 kHz.
Add SoapySDR::Stream::getDigitalFilter function and use it to correctly
report RX bandwidth < 160 kHz.
Replace fabs (math.h) with std::fabs (cmath) in SoapySDR API for
precision.
Fix constants in the TX/RX bandwidth getters and setters that were off
by 2 orders of magnitude.
Fix numeric literal types used in comparisons and return values to match
the function signatures.
was using the smi address pins to determine which channel can write the complex_fifo.
The read side of the complex fifo is connected to the DREQ pin of the SMI interface on the raspberry.
The address pins on the smi interface are at logic 1 when no transfer is in progress.
This caused a deadlock condition: the SMI address pin is at 1, so the fifo cannot be filled, so the DREQ cannot be asserted and the SMI cannot start reading data.