From 4574063639a3aa5389005f646577d5644f72d5d3 Mon Sep 17 00:00:00 2001 From: Martin Braun Date: Wed, 9 Jun 2021 14:54:23 +0200 Subject: multi_usrp: Factor out make_overall_tune_range() and fix limits This function had an issue where it might return negative frequency values. A quick fix was to limit it to positive frequencies. Since this function was duplicated between multi_usrp and multi_usrp_rfnoc, this patch also moves it to a common location to not have to fix it twice. --- host/lib/include/uhdlib/usrp/multi_usrp_utils.hpp | 37 +++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 host/lib/include/uhdlib/usrp/multi_usrp_utils.hpp (limited to 'host/lib/include/uhdlib/usrp') diff --git a/host/lib/include/uhdlib/usrp/multi_usrp_utils.hpp b/host/lib/include/uhdlib/usrp/multi_usrp_utils.hpp new file mode 100644 index 000000000..40c360339 --- /dev/null +++ b/host/lib/include/uhdlib/usrp/multi_usrp_utils.hpp @@ -0,0 +1,37 @@ +// +// Copyright 2021 Ettus Research, a National Instruments Brand +// +// SPDX-License-Identifier: GPL-3.0-or-later +// + +#pragma once + +#include + +namespace uhd { + +/*! Create a total tune range for multi_usrp objects + * + * Digital tuning can be used to shift the baseband below / past the tunable + * limits of the actual RF front-end. The baseband filter, located on the + * daughterboard, however, limits the useful instantaneous bandwidth. We + * allow the user to tune to the edge of the filter, where the roll-off + * begins. This prevents the user from tuning past the point where less + * than half of the spectrum would be useful. + * Also, we make sure that frequencies don't become negative. + */ +static meta_range_t make_overall_tune_range( + const meta_range_t& fe_range, const meta_range_t& dsp_range, const double bw) +{ + meta_range_t range; + for (const range_t& sub_range : fe_range) { + range.push_back(range_t( + std::max(0.0, sub_range.start() + std::max(dsp_range.start(), -bw / 2)), + sub_range.stop() + std::min(dsp_range.stop(), bw / 2), + dsp_range.step())); + } + return range; +} + + +} // namespace uhd -- cgit v1.2.3