mirror of
https://github.com/EttusResearch/uhd.git
synced 2026-10-25 17:36:10 +00:00
host: Add static_assert to prevent meta_range_t(0,0)
meta_range_t(0,0) actually calls the iterator-based constructor for meta_range_t, which is almost certainly not the intended constructor for that call syntax. Therefore, we add a static_assert to prevent such usage, and fix all failing instances.
This commit is contained in:
parent
14ea574bb7
commit
f47df4d1a8
@ -9,6 +9,7 @@
|
||||
|
||||
#include <uhd/config.hpp>
|
||||
#include <string>
|
||||
#include <type_traits>
|
||||
#include <vector>
|
||||
|
||||
namespace uhd {
|
||||
@ -76,6 +77,14 @@ struct UHD_API meta_range_t : std::vector<range_t>
|
||||
meta_range_t(InputIterator first, InputIterator last)
|
||||
: std::vector<range_t>(first, last)
|
||||
{ /* NOP */
|
||||
// This is to avoid people accidentally doing silly things like:
|
||||
// meta_range_t(0, 0)
|
||||
// which probably was supposed to call meta_range_t(double, double, double)
|
||||
// but actually calls this constructor.
|
||||
static_assert(
|
||||
!std::is_integral<typename std::decay<InputIterator>::type>::value,
|
||||
"You can't pass integers to meta_range_t's constructor!"
|
||||
);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
||||
@ -767,7 +767,7 @@ void radio_control_impl::set_tx_dc_offset(const std::complex<double>&, size_t)
|
||||
|
||||
uhd::meta_range_t radio_control_impl::get_tx_dc_offset_range(size_t) const
|
||||
{
|
||||
return uhd::meta_range_t(0, 0);
|
||||
return uhd::meta_range_t(0.0, 0.0);
|
||||
}
|
||||
|
||||
void radio_control_impl::set_tx_iq_balance(const std::complex<double>&, size_t)
|
||||
@ -792,7 +792,7 @@ void radio_control_impl::set_rx_dc_offset(const std::complex<double>&, size_t)
|
||||
|
||||
uhd::meta_range_t radio_control_impl::get_rx_dc_offset_range(size_t) const
|
||||
{
|
||||
return uhd::meta_range_t(0, 0);
|
||||
return uhd::meta_range_t(0.0, 0.0);
|
||||
}
|
||||
|
||||
void radio_control_impl::set_rx_iq_balance(const bool enb, size_t)
|
||||
|
||||
@ -1847,7 +1847,7 @@ public:
|
||||
} else {
|
||||
UHD_LOGGER_WARNING("MULTI_USRP")
|
||||
<< "This device does not support querying the RX DC offset range.";
|
||||
return meta_range_t(0, 0);
|
||||
return meta_range_t(0.0, 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2340,7 +2340,7 @@ public:
|
||||
} else {
|
||||
UHD_LOGGER_WARNING("MULTI_USRP")
|
||||
<< "This device does not support querying the TX DC offset range.";
|
||||
return meta_range_t(0, 0);
|
||||
return meta_range_t(0.0, 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1209,7 +1209,7 @@ public:
|
||||
rx_chain.radio->get_rx_frequency_range(rx_chain.block_chan);
|
||||
freq_range_t dsp_range =
|
||||
(rx_chain.ddc) ? rx_chain.ddc->get_frequency_range(rx_chain.block_chan)
|
||||
: meta_range_t(0, 0);
|
||||
: meta_range_t(0.0, 0.0);
|
||||
// Create lambdas to feed to tune_xx_subdev_and_dsp()
|
||||
// Note: If there is no DDC present, register empty lambdas for the DSP functions
|
||||
auto set_rf_freq = [rx_chain](double freq) {
|
||||
@ -1840,7 +1840,7 @@ public:
|
||||
tx_chain.radio->get_tx_frequency_range(tx_chain.block_chan);
|
||||
freq_range_t dsp_range =
|
||||
(tx_chain.duc) ? tx_chain.duc->get_frequency_range(tx_chain.block_chan)
|
||||
: meta_range_t(0, 0);
|
||||
: meta_range_t(0.0, 0.0);
|
||||
// Create lambdas to feed to tune_xx_subdev_and_dsp()
|
||||
// Note: If there is no DDC present, register empty lambdas for the DSP functions
|
||||
auto set_rf_freq = [tx_chain](double freq) {
|
||||
|
||||
@ -821,7 +821,7 @@ public:
|
||||
} else {
|
||||
RFNOC_LOG_WARNING(
|
||||
"This device does not support querying the TX DC offset range.");
|
||||
return meta_range_t(0, 0);
|
||||
return meta_range_t(0.0, 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -864,7 +864,7 @@ public:
|
||||
} else {
|
||||
RFNOC_LOG_WARNING(
|
||||
"This device does not support querying the rx DC offset range.");
|
||||
return meta_range_t(0, 0);
|
||||
return meta_range_t(0.0, 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -129,7 +129,7 @@ uhd::meta_range_t ad937x_ctrl::get_rf_freq_range(void)
|
||||
uhd::meta_range_t ad937x_ctrl::get_bw_filter_range(void)
|
||||
{
|
||||
// TODO: fix
|
||||
return uhd::meta_range_t(0, 1);
|
||||
return uhd::meta_range_t(0.0, 1.0);
|
||||
}
|
||||
|
||||
std::vector<double> ad937x_ctrl::get_clock_rates(void)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user