diff options
author | Martin Braun <martin.braun@ettus.com> | 2018-05-04 14:11:23 -0700 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2018-05-08 10:43:25 -0700 |
commit | 9a14a07a97e7f0b1eed02ea25d070b42217b8b63 (patch) | |
tree | 41d3218ed32bc841b81c6860de29d0bfd084da86 /host/lib | |
parent | c2667187ba833092a0dcee6f5d5140187a7551d5 (diff) | |
download | uhd-9a14a07a97e7f0b1eed02ea25d070b42217b8b63.tar.gz uhd-9a14a07a97e7f0b1eed02ea25d070b42217b8b63.tar.bz2 uhd-9a14a07a97e7f0b1eed02ea25d070b42217b8b63.zip |
basicrx: Refactor driver
- Removal of some Boostisms
- Proper use of lambdas
- Replace magic constants with constexpr's
No functional changes.
Diffstat (limited to 'host/lib')
-rw-r--r-- | host/lib/usrp/dboard/db_basic_and_lf.cpp | 96 |
1 files changed, 54 insertions, 42 deletions
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 <uhd/usrp/dboard_base.hpp> #include <uhd/usrp/dboard_manager.hpp> #include <boost/assign/list_of.hpp> -#include <boost/bind.hpp> #include <boost/format.hpp> 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<std::string, double> 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<std::string, double> subdev_bandwidth_scalar{ + {"A", 1.0}, + {"B", 1.0}, + {"AB", 2.0}, + {"BA", 2.0} + }; + + const uhd::dict<std::string, std::string> 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<std::string, std::string> 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<std::string>("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<int>("gains"); //phony property so this dir exists this->get_rx_subtree()->create<double>("freq/value") - .set_publisher(&always_zero_freq); + .set_publisher([](){ return 0.0; }); this->get_rx_subtree()->create<meta_range_t>("freq/range") .set(freq_range_t(-_max_freq, +_max_freq)); this->get_rx_subtree()->create<std::string>("antenna/value") .set(""); - this->get_rx_subtree()->create<std::vector<std::string> >("antenna/options") - .set(list_of("")); + this->get_rx_subtree()->create<std::vector<std::string>>("antenna/options") + .set({""}); this->get_rx_subtree()->create<int>("sensors"); //phony property so this dir exists this->get_rx_subtree()->create<std::string>("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<bool>("use_lo_offset") .set(false); this->get_rx_subtree()->create<double>("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<meta_range_t>("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<std::string>("name").set( std::string(str(boost::format("BasicTX (%s)") % get_subdev_name() ))); } - else{ + else { this->get_tx_subtree()->create<std::string>("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<int>("gains"); //phony property so this dir exists this->get_tx_subtree()->create<double>("freq/value") - .set_publisher(&always_zero_freq); + .set_publisher([](){ return 0.0; }); this->get_tx_subtree()->create<meta_range_t>("freq/range") .set(freq_range_t(-_max_freq, +_max_freq)); this->get_tx_subtree()->create<std::string>("antenna/value") .set(""); - this->get_tx_subtree()->create<std::vector<std::string> >("antenna/options") - .set(list_of("")); + this->get_tx_subtree()->create<std::vector<std::string>>("antenna/options") + .set({""}); this->get_tx_subtree()->create<int>("sensors"); //phony property so this dir exists this->get_tx_subtree()->create<std::string>("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<bool>("use_lo_offset") .set(false); this->get_tx_subtree()->create<double>("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<meta_range_t>("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); |