From 9a14a07a97e7f0b1eed02ea25d070b42217b8b63 Mon Sep 17 00:00:00 2001 From: Martin Braun Date: Fri, 4 May 2018 14:11:23 -0700 Subject: basicrx: Refactor driver - Removal of some Boostisms - Proper use of lambdas - Replace magic constants with constexpr's No functional changes. --- host/lib/usrp/dboard/db_basic_and_lf.cpp | 96 ++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 42 deletions(-) (limited to 'host/lib/usrp/dboard/db_basic_and_lf.cpp') diff --git a/host/lib/usrp/dboard/db_basic_and_lf.cpp b/host/lib/usrp/dboard/db_basic_and_lf.cpp index d5ae38fde..24051406e 100644 --- a/host/lib/usrp/dboard/db_basic_and_lf.cpp +++ b/host/lib/usrp/dboard/db_basic_and_lf.cpp @@ -13,25 +13,40 @@ #include #include #include -#include #include using namespace uhd; using namespace uhd::usrp; -using namespace boost::assign; - -//! provider function for the always zero freq -static double always_zero_freq(void){return 0.0;} /*********************************************************************** * Constants **********************************************************************/ -static const uhd::dict subdev_bandwidth_scalar = map_list_of - ("A", 1.0) - ("B", 1.0) - ("AB", 2.0) - ("BA", 2.0) -; +namespace { + constexpr uint32_t BASIC_TX_PID = 0x0000; + constexpr uint32_t BASIC_RX_PID = 0x0001; + constexpr uint32_t LF_TX_PID = 0x000E; + constexpr uint32_t LF_RX_PID = 0x000F; + + constexpr double BASIC_MAX_BANDWIDTH = 250e6; // Hz + constexpr double LF_MAX_BANDWIDTH = 32e6; // Hz + + + const std::map subdev_bandwidth_scalar{ + {"A", 1.0}, + {"B", 1.0}, + {"AB", 2.0}, + {"BA", 2.0} + }; + + const uhd::dict sd_name_to_conn = + boost::assign::map_list_of + ("AB", "IQ") + ("BA", "QI") + ("A", "I") + ("B", "Q") + ; +} + /*********************************************************************** * The basic and lf boards: @@ -55,37 +70,30 @@ private: double _max_freq; }; -static const uhd::dict sd_name_to_conn = map_list_of - ("AB", "IQ") - ("BA", "QI") - ("A", "I") - ("B", "Q") -; - /*********************************************************************** * Register the basic and LF dboards **********************************************************************/ static dboard_base::sptr make_basic_rx(dboard_base::ctor_args_t args){ - return dboard_base::sptr(new basic_rx(args, 250e6)); + return dboard_base::sptr(new basic_rx(args, BASIC_MAX_BANDWIDTH)); } static dboard_base::sptr make_basic_tx(dboard_base::ctor_args_t args){ - return dboard_base::sptr(new basic_tx(args, 250e6)); + return dboard_base::sptr(new basic_tx(args, BASIC_MAX_BANDWIDTH)); } static dboard_base::sptr make_lf_rx(dboard_base::ctor_args_t args){ - return dboard_base::sptr(new basic_rx(args, 32e6)); + return dboard_base::sptr(new basic_rx(args, LF_MAX_BANDWIDTH)); } static dboard_base::sptr make_lf_tx(dboard_base::ctor_args_t args){ - return dboard_base::sptr(new basic_tx(args, 32e6)); + return dboard_base::sptr(new basic_tx(args, LF_MAX_BANDWIDTH)); } UHD_STATIC_BLOCK(reg_basic_and_lf_dboards){ - dboard_manager::register_dboard(0x0000, &make_basic_tx, "Basic TX", sd_name_to_conn.keys()); - dboard_manager::register_dboard(0x0001, &make_basic_rx, "Basic RX", sd_name_to_conn.keys()); - dboard_manager::register_dboard(0x000e, &make_lf_tx, "LF TX", sd_name_to_conn.keys()); - dboard_manager::register_dboard(0x000f, &make_lf_rx, "LF RX", sd_name_to_conn.keys()); + dboard_manager::register_dboard(BASIC_TX_PID, &make_basic_tx, "Basic TX", sd_name_to_conn.keys()); + dboard_manager::register_dboard(BASIC_RX_PID, &make_basic_rx, "Basic RX", sd_name_to_conn.keys()); + dboard_manager::register_dboard(LF_TX_PID, &make_lf_tx, "LF TX", sd_name_to_conn.keys()); + dboard_manager::register_dboard(LF_RX_PID, &make_lf_rx, "LF RX", sd_name_to_conn.keys()); } /*********************************************************************** @@ -94,11 +102,11 @@ UHD_STATIC_BLOCK(reg_basic_and_lf_dboards){ basic_rx::basic_rx(ctor_args_t args, double max_freq) : rx_dboard_base(args){ _max_freq = max_freq; //this->get_iface()->set_clock_enabled(dboard_iface::UNIT_RX, true); - + //////////////////////////////////////////////////////////////////// // Register properties //////////////////////////////////////////////////////////////////// - if(get_rx_id() == 0x0001){ + if (get_rx_id() == BASIC_RX_PID) { this->get_rx_subtree()->create("name").set( std::string(str(boost::format("BasicRX (%s)") % get_subdev_name() ))); @@ -111,13 +119,13 @@ basic_rx::basic_rx(ctor_args_t args, double max_freq) : rx_dboard_base(args){ this->get_rx_subtree()->create("gains"); //phony property so this dir exists this->get_rx_subtree()->create("freq/value") - .set_publisher(&always_zero_freq); + .set_publisher([](){ return 0.0; }); this->get_rx_subtree()->create("freq/range") .set(freq_range_t(-_max_freq, +_max_freq)); this->get_rx_subtree()->create("antenna/value") .set(""); - this->get_rx_subtree()->create >("antenna/options") - .set(list_of("")); + this->get_rx_subtree()->create>("antenna/options") + .set({""}); this->get_rx_subtree()->create("sensors"); //phony property so this dir exists this->get_rx_subtree()->create("connection") .set(sd_name_to_conn[get_subdev_name()]); @@ -126,10 +134,12 @@ basic_rx::basic_rx(ctor_args_t args, double max_freq) : rx_dboard_base(args){ this->get_rx_subtree()->create("use_lo_offset") .set(false); this->get_rx_subtree()->create("bandwidth/value") - .set(subdev_bandwidth_scalar[get_subdev_name()]*_max_freq); + .set(subdev_bandwidth_scalar.at(get_subdev_name())*_max_freq); this->get_rx_subtree()->create("bandwidth/range") - .set(freq_range_t(subdev_bandwidth_scalar[get_subdev_name()]*_max_freq, subdev_bandwidth_scalar[get_subdev_name()]*_max_freq)); - + .set(freq_range_t( + subdev_bandwidth_scalar.at(get_subdev_name())*_max_freq, + subdev_bandwidth_scalar.at(get_subdev_name())*_max_freq)); + //disable RX dboard clock by default this->get_iface()->set_clock_enabled(dboard_iface::UNIT_RX, false); @@ -153,12 +163,12 @@ basic_tx::basic_tx(ctor_args_t args, double max_freq) : tx_dboard_base(args){ //////////////////////////////////////////////////////////////////// // Register properties //////////////////////////////////////////////////////////////////// - if(get_tx_id() == 0x0000){ + if (get_tx_id() == BASIC_TX_PID) { this->get_tx_subtree()->create("name").set( std::string(str(boost::format("BasicTX (%s)") % get_subdev_name() ))); } - else{ + else { this->get_tx_subtree()->create("name").set( std::string(str(boost::format("LFTX (%s)") % get_subdev_name() ))); @@ -166,13 +176,13 @@ basic_tx::basic_tx(ctor_args_t args, double max_freq) : tx_dboard_base(args){ this->get_tx_subtree()->create("gains"); //phony property so this dir exists this->get_tx_subtree()->create("freq/value") - .set_publisher(&always_zero_freq); + .set_publisher([](){ return 0.0; }); this->get_tx_subtree()->create("freq/range") .set(freq_range_t(-_max_freq, +_max_freq)); this->get_tx_subtree()->create("antenna/value") .set(""); - this->get_tx_subtree()->create >("antenna/options") - .set(list_of("")); + this->get_tx_subtree()->create>("antenna/options") + .set({""}); this->get_tx_subtree()->create("sensors"); //phony property so this dir exists this->get_tx_subtree()->create("connection") .set(sd_name_to_conn[get_subdev_name()]); @@ -181,10 +191,12 @@ basic_tx::basic_tx(ctor_args_t args, double max_freq) : tx_dboard_base(args){ this->get_tx_subtree()->create("use_lo_offset") .set(false); this->get_tx_subtree()->create("bandwidth/value") - .set(subdev_bandwidth_scalar[get_subdev_name()]*_max_freq); + .set(subdev_bandwidth_scalar.at(get_subdev_name())*_max_freq); this->get_tx_subtree()->create("bandwidth/range") - .set(freq_range_t(subdev_bandwidth_scalar[get_subdev_name()]*_max_freq, subdev_bandwidth_scalar[get_subdev_name()]*_max_freq)); - + .set(freq_range_t( + subdev_bandwidth_scalar.at(get_subdev_name())*_max_freq, + subdev_bandwidth_scalar.at(get_subdev_name())*_max_freq)); + //disable TX dboard clock by default this->get_iface()->set_clock_enabled(dboard_iface::UNIT_TX, false); -- cgit v1.2.3