diff options
Diffstat (limited to 'host/lib')
| -rw-r--r-- | host/lib/usrp/usrp2/usrp2_impl.cpp | 10 | 
1 files changed, 5 insertions, 5 deletions
| diff --git a/host/lib/usrp/usrp2/usrp2_impl.cpp b/host/lib/usrp/usrp2/usrp2_impl.cpp index d780a6c6b..59fd9849c 100644 --- a/host/lib/usrp/usrp2/usrp2_impl.cpp +++ b/host/lib/usrp/usrp2/usrp2_impl.cpp @@ -20,6 +20,7 @@  #include <boost/format.hpp>  #include <boost/math/special_functions.hpp>  #include <functional> +#include <cmath>  using namespace uhd;  using namespace uhd::usrp; @@ -916,22 +917,21 @@ double usrp2_impl::set_tx_dsp_freq(const std::string& mb, const double freq_)      const double tick_rate = _tree->access<double>("/mboards/" + mb + "/tick_rate").get();      // calculate the DAC shift (multiples of rate) -    const int sign         = boost::math::sign(new_freq); -    const int zone         = std::min(boost::math::iround(new_freq / tick_rate), 2); -    const double dac_shift = sign * zone * tick_rate; +    const int zone         = std::max(std::min(std::lround(new_freq / tick_rate), 2), -2); +    const double dac_shift = zone * tick_rate;      new_freq -= dac_shift; // update FPGA DSP target freq      UHD_LOG_TRACE("USRP2",          "DSP Tuning: Requested " + std::to_string(freq_ / 1e6)              + " MHz, Using "                "Nyquist zone " -            + std::to_string(sign * zone) +            + std::to_string(zone)              + ", leftover DSP tuning: " + std::to_string(new_freq / 1e6) + " MHz.");      // set the DAC shift (modulation mode)      if (zone == 0) {          _mbc[mb].codec->set_tx_mod_mode(0); // no shift      } else { -        _mbc[mb].codec->set_tx_mod_mode(sign * 4 / zone); // DAC interp = 4 +        _mbc[mb].codec->set_tx_mod_mode(4 / zone); // DAC interp = 4      }      return _mbc[mb].tx_dsp->set_freq(new_freq) + dac_shift; // actual freq | 
