aboutsummaryrefslogtreecommitdiffstats
path: root/host
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2018-05-04 14:11:23 -0700
committerMartin Braun <martin.braun@ettus.com>2018-05-08 10:43:25 -0700
commit9a14a07a97e7f0b1eed02ea25d070b42217b8b63 (patch)
tree41d3218ed32bc841b81c6860de29d0bfd084da86 /host
parentc2667187ba833092a0dcee6f5d5140187a7551d5 (diff)
downloaduhd-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')
-rw-r--r--host/lib/usrp/dboard/db_basic_and_lf.cpp96
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);