diff options
author | Josh Blum <josh@joshknows.com> | 2010-10-25 19:22:51 -0700 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2010-10-25 19:22:51 -0700 |
commit | 0168bff835371140c0d75cc381e3228f8093fe70 (patch) | |
tree | e3e40ef76ed24db2ce5bcd7337227c4ddc736879 /host/lib | |
parent | 01f670e81c615a16fb5a931d3842f92b56cc6c09 (diff) | |
download | uhd-0168bff835371140c0d75cc381e3228f8093fe70.tar.gz uhd-0168bff835371140c0d75cc381e3228f8093fe70.tar.bz2 uhd-0168bff835371140c0d75cc381e3228f8093fe70.zip |
usrp: rework lo offset logic to use bandwidth, add test case
Diffstat (limited to 'host/lib')
-rw-r--r-- | host/lib/usrp/tune_helper.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/host/lib/usrp/tune_helper.cpp b/host/lib/usrp/tune_helper.cpp index a6b615926..fa40a8a26 100644 --- a/host/lib/usrp/tune_helper.cpp +++ b/host/lib/usrp/tune_helper.cpp @@ -19,6 +19,7 @@ #include <uhd/usrp/subdev_props.hpp> #include <uhd/usrp/dsp_props.hpp> #include <uhd/usrp/dboard_iface.hpp> //unit_t +#include <uhd/utils/algorithm.hpp> #include <boost/math/special_functions/sign.hpp> #include <cmath> @@ -43,9 +44,11 @@ static tune_result_t tune_xx_subdev_and_dsp( //------------------------------------------------------------------ double lo_offset = 0.0; if (subdev[SUBDEV_PROP_USE_LO_OFFSET].as<bool>()){ - //if the local oscillator will be in the passband, use an offset - //TODO make this nicer, use bandwidth property to clip bounds - lo_offset = 2.0*dsp[DSP_PROP_HOST_RATE].as<double>(); + //If the local oscillator will be in the passband, use an offset. + //But constrain the LO offset by the width of the filter bandwidth. + double rate = dsp[DSP_PROP_HOST_RATE].as<double>(); + double bw = subdev[SUBDEV_PROP_BANDWIDTH].as<double>(); + if (bw > rate) lo_offset = std::min((bw - rate)/2, rate/2); } //------------------------------------------------------------------ |