aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/dboard_manager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'host/lib/usrp/dboard_manager.cpp')
-rw-r--r--host/lib/usrp/dboard_manager.cpp505
1 files changed, 275 insertions, 230 deletions
diff --git a/host/lib/usrp/dboard_manager.cpp b/host/lib/usrp/dboard_manager.cpp
index a4acf2aaf..dc7ca6ac9 100644
--- a/host/lib/usrp/dboard_manager.cpp
+++ b/host/lib/usrp/dboard_manager.cpp
@@ -5,13 +5,12 @@
//
#include "dboard_ctor_args.hpp"
+#include <uhd/exception.hpp>
+#include <uhd/types/dict.hpp>
#include <uhd/usrp/dboard_manager.hpp>
#include <uhd/utils/log.hpp>
-#include <uhd/utils/log.hpp>
#include <uhd/utils/safe_call.hpp>
#include <uhd/utils/static.hpp>
-#include <uhd/exception.hpp>
-#include <uhd/types/dict.hpp>
#include <boost/format.hpp>
#include <functional>
#include <tuple>
@@ -22,34 +21,45 @@ using namespace uhd::usrp;
/***********************************************************************
* dboard key class to use for look-up
**********************************************************************/
-class dboard_key_t{
+class dboard_key_t
+{
public:
- dboard_key_t(const dboard_id_t &id = dboard_id_t::none(), bool restricted = false):
- _rx_id(id), _tx_id(id), _xcvr(false), _restricted(restricted) {}
+ dboard_key_t(const dboard_id_t& id = dboard_id_t::none(), bool restricted = false)
+ : _rx_id(id), _tx_id(id), _xcvr(false), _restricted(restricted)
+ {
+ }
- dboard_key_t(const dboard_id_t &rx_id, const dboard_id_t &tx_id, bool restricted = false):
- _rx_id(rx_id), _tx_id(tx_id), _xcvr(true), _restricted(restricted) {}
+ dboard_key_t(
+ const dboard_id_t& rx_id, const dboard_id_t& tx_id, bool restricted = false)
+ : _rx_id(rx_id), _tx_id(tx_id), _xcvr(true), _restricted(restricted)
+ {
+ }
- dboard_id_t xx_id(void) const{
+ dboard_id_t xx_id(void) const
+ {
UHD_ASSERT_THROW(not this->is_xcvr());
return this->_rx_id;
}
- dboard_id_t rx_id(void) const{
+ dboard_id_t rx_id(void) const
+ {
UHD_ASSERT_THROW(this->is_xcvr());
return this->_rx_id;
}
- dboard_id_t tx_id(void) const{
+ dboard_id_t tx_id(void) const
+ {
UHD_ASSERT_THROW(this->is_xcvr());
return this->_tx_id;
}
- bool is_xcvr(void) const{
+ bool is_xcvr(void) const
+ {
return this->_xcvr;
}
- bool is_restricted(void) const{
+ bool is_restricted(void) const
+ {
return this->_restricted;
}
@@ -59,7 +69,8 @@ private:
bool _restricted;
};
-bool operator==(const dboard_key_t &lhs, const dboard_key_t &rhs){
+bool operator==(const dboard_key_t& lhs, const dboard_key_t& rhs)
+{
if (lhs.is_xcvr() and rhs.is_xcvr())
return lhs.rx_id() == rhs.rx_id() and lhs.tx_id() == rhs.tx_id();
if (not lhs.is_xcvr() and not rhs.is_xcvr())
@@ -70,114 +81,132 @@ bool operator==(const dboard_key_t &lhs, const dboard_key_t &rhs){
/***********************************************************************
* storage and registering for dboards
**********************************************************************/
-//dboard registry tuple: dboard constructor, canonical name, subdev names, container constructor
-typedef std::tuple<dboard_manager::dboard_ctor_t, std::string, std::vector<std::string>, dboard_manager::dboard_ctor_t> args_t;
-
-//map a dboard id to a dboard constructor
+// dboard registry tuple: dboard constructor, canonical name, subdev names, container
+// constructor
+typedef std::tuple<dboard_manager::dboard_ctor_t,
+ std::string,
+ std::vector<std::string>,
+ dboard_manager::dboard_ctor_t>
+ args_t;
+
+// map a dboard id to a dboard constructor
typedef uhd::dict<dboard_key_t, args_t> id_to_args_map_t;
UHD_SINGLETON_FCN(id_to_args_map_t, get_id_to_args_map)
-static void register_dboard_key(
- const dboard_key_t &dboard_key,
+static void register_dboard_key(const dboard_key_t& dboard_key,
dboard_manager::dboard_ctor_t db_subdev_ctor,
- const std::string &name,
- const std::vector<std::string> &subdev_names,
- dboard_manager::dboard_ctor_t db_container_ctor
-){
+ const std::string& name,
+ const std::vector<std::string>& subdev_names,
+ dboard_manager::dboard_ctor_t db_container_ctor)
+{
// UHD_LOGGER_TRACE("DBMGR") << "registering: " << name;
- if (get_id_to_args_map().has_key(dboard_key)){
-
- if (dboard_key.is_xcvr()) throw uhd::key_error(str(boost::format(
- "The dboard id pair [%s, %s] is already registered to %s."
- ) % dboard_key.rx_id().to_string() % dboard_key.tx_id().to_string() % std::get<1>(get_id_to_args_map()[dboard_key])));
-
- else throw uhd::key_error(str(boost::format(
- "The dboard id %s is already registered to %s."
- ) % dboard_key.xx_id().to_string() % std::get<1>(get_id_to_args_map()[dboard_key])));
+ if (get_id_to_args_map().has_key(dboard_key)) {
+ if (dboard_key.is_xcvr())
+ throw uhd::key_error(str(
+ boost::format("The dboard id pair [%s, %s] is already registered to %s.")
+ % dboard_key.rx_id().to_string() % dboard_key.tx_id().to_string()
+ % std::get<1>(get_id_to_args_map()[dboard_key])));
+
+ else
+ throw uhd::key_error(
+ str(boost::format("The dboard id %s is already registered to %s.")
+ % dboard_key.xx_id().to_string()
+ % std::get<1>(get_id_to_args_map()[dboard_key])));
}
- get_id_to_args_map()[dboard_key] = args_t(db_subdev_ctor, name, subdev_names, db_container_ctor);
+ get_id_to_args_map()[dboard_key] =
+ args_t(db_subdev_ctor, name, subdev_names, db_container_ctor);
}
-void dboard_manager::register_dboard(
- const dboard_id_t &dboard_id,
+void dboard_manager::register_dboard(const dboard_id_t& dboard_id,
dboard_ctor_t db_subdev_ctor,
- const std::string &name,
- const std::vector<std::string> &subdev_names,
- dboard_ctor_t db_container_ctor
-){
- register_dboard_key(dboard_key_t(dboard_id), db_subdev_ctor, name, subdev_names, db_container_ctor);
+ const std::string& name,
+ const std::vector<std::string>& subdev_names,
+ dboard_ctor_t db_container_ctor)
+{
+ register_dboard_key(
+ dboard_key_t(dboard_id), db_subdev_ctor, name, subdev_names, db_container_ctor);
}
-void dboard_manager::register_dboard(
- const dboard_id_t &rx_dboard_id,
- const dboard_id_t &tx_dboard_id,
+void dboard_manager::register_dboard(const dboard_id_t& rx_dboard_id,
+ const dboard_id_t& tx_dboard_id,
dboard_ctor_t db_subdev_ctor,
- const std::string &name,
- const std::vector<std::string> &subdev_names,
- dboard_ctor_t db_container_ctor
-){
- register_dboard_key(dboard_key_t(rx_dboard_id, tx_dboard_id), db_subdev_ctor, name, subdev_names, db_container_ctor);
+ const std::string& name,
+ const std::vector<std::string>& subdev_names,
+ dboard_ctor_t db_container_ctor)
+{
+ register_dboard_key(dboard_key_t(rx_dboard_id, tx_dboard_id),
+ db_subdev_ctor,
+ name,
+ subdev_names,
+ db_container_ctor);
}
-void dboard_manager::register_dboard_restricted(
- const dboard_id_t &dboard_id,
+void dboard_manager::register_dboard_restricted(const dboard_id_t& dboard_id,
dboard_ctor_t db_subdev_ctor,
- const std::string &name,
- const std::vector<std::string> &subdev_names,
- dboard_ctor_t db_container_ctor
-){
- register_dboard_key(dboard_key_t(dboard_id, true), db_subdev_ctor, name, subdev_names, db_container_ctor);
+ const std::string& name,
+ const std::vector<std::string>& subdev_names,
+ dboard_ctor_t db_container_ctor)
+{
+ register_dboard_key(dboard_key_t(dboard_id, true),
+ db_subdev_ctor,
+ name,
+ subdev_names,
+ db_container_ctor);
}
-void dboard_manager::register_dboard_restricted(
- const dboard_id_t &rx_dboard_id,
- const dboard_id_t &tx_dboard_id,
+void dboard_manager::register_dboard_restricted(const dboard_id_t& rx_dboard_id,
+ const dboard_id_t& tx_dboard_id,
dboard_ctor_t db_subdev_ctor,
- const std::string &name,
- const std::vector<std::string> &subdev_names,
- dboard_ctor_t db_container_ctor
-){
- register_dboard_key(dboard_key_t(rx_dboard_id, tx_dboard_id, true), db_subdev_ctor, name, subdev_names, db_container_ctor);
+ const std::string& name,
+ const std::vector<std::string>& subdev_names,
+ dboard_ctor_t db_container_ctor)
+{
+ register_dboard_key(dboard_key_t(rx_dboard_id, tx_dboard_id, true),
+ db_subdev_ctor,
+ name,
+ subdev_names,
+ db_container_ctor);
}
-std::string dboard_id_t::to_cname(void) const{
+std::string dboard_id_t::to_cname(void) const
+{
std::string cname;
- for(const dboard_key_t &key: get_id_to_args_map().keys()){
- if (
- (not key.is_xcvr() and *this == key.xx_id()) or
- (key.is_xcvr() and (*this == key.rx_id() or *this == key.tx_id()))
- ){
- if (not cname.empty()) cname += ", ";
+ for (const dboard_key_t& key : get_id_to_args_map().keys()) {
+ if ((not key.is_xcvr() and *this == key.xx_id())
+ or (key.is_xcvr() and (*this == key.rx_id() or *this == key.tx_id()))) {
+ if (not cname.empty())
+ cname += ", ";
cname += std::get<1>(get_id_to_args_map()[key]);
}
}
- return (cname.empty())? "Unknown" : cname;
+ return (cname.empty()) ? "Unknown" : cname;
}
-std::string dboard_id_t::to_pp_string(void) const{
+std::string dboard_id_t::to_pp_string(void) const
+{
return str(boost::format("%s (%s)") % this->to_cname() % this->to_string());
}
/***********************************************************************
* dboard manager implementation class
**********************************************************************/
-class dboard_manager_impl : public dboard_manager{
-
+class dboard_manager_impl : public dboard_manager
+{
public:
- dboard_manager_impl(
- dboard_eeprom_t rx_eeprom,
+ dboard_manager_impl(dboard_eeprom_t rx_eeprom,
dboard_eeprom_t tx_eeprom,
dboard_iface::sptr iface,
property_tree::sptr subtree,
- bool defer_db_init
- );
+ bool defer_db_init);
virtual ~dboard_manager_impl(void);
- inline const std::vector<std::string>& get_rx_frontends() const {
+ inline const std::vector<std::string>& get_rx_frontends() const
+ {
return _rx_frontends;
}
- inline const std::vector<std::string>& get_tx_frontends() const {
+ inline const std::vector<std::string>& get_tx_frontends() const
+ {
return _tx_frontends;
}
@@ -185,15 +214,15 @@ public:
private:
void init(dboard_eeprom_t, dboard_eeprom_t, property_tree::sptr, bool);
- //list of rx and tx dboards in this dboard_manager
- //each dboard here is actually a subdevice proxy
- //the subdevice proxy is internal to the cpp file
+ // list of rx and tx dboards in this dboard_manager
+ // each dboard here is actually a subdevice proxy
+ // the subdevice proxy is internal to the cpp file
uhd::dict<std::string, dboard_base::sptr> _rx_dboards;
uhd::dict<std::string, dboard_base::sptr> _tx_dboards;
- std::vector<dboard_base::sptr> _rx_containers;
- std::vector<dboard_base::sptr> _tx_containers;
- std::vector<std::string> _rx_frontends;
- std::vector<std::string> _tx_frontends;
+ std::vector<dboard_base::sptr> _rx_containers;
+ std::vector<dboard_base::sptr> _tx_containers;
+ std::vector<std::string> _rx_frontends;
+ std::vector<std::string> _tx_frontends;
dboard_iface::sptr _iface;
void set_nice_dboard_if(void);
};
@@ -201,150 +230,154 @@ private:
/***********************************************************************
* make routine for dboard manager
**********************************************************************/
-dboard_manager::sptr dboard_manager::make(
- dboard_id_t rx_dboard_id,
+dboard_manager::sptr dboard_manager::make(dboard_id_t rx_dboard_id,
dboard_id_t tx_dboard_id,
dboard_id_t gdboard_id,
dboard_iface::sptr iface,
property_tree::sptr subtree,
- bool defer_db_init
-){
+ bool defer_db_init)
+{
dboard_eeprom_t rx_eeprom;
dboard_eeprom_t tx_eeprom;
rx_eeprom.id = rx_dboard_id;
tx_eeprom.id = (gdboard_id == dboard_id_t::none()) ? tx_dboard_id : gdboard_id;
return dboard_manager::sptr(
- new dboard_manager_impl(
- rx_eeprom,
- tx_eeprom,
- iface, subtree, defer_db_init
- )
- );
+ new dboard_manager_impl(rx_eeprom, tx_eeprom, iface, subtree, defer_db_init));
}
-dboard_manager::sptr dboard_manager::make(
- dboard_eeprom_t rx_eeprom,
+dboard_manager::sptr dboard_manager::make(dboard_eeprom_t rx_eeprom,
dboard_eeprom_t tx_eeprom,
dboard_eeprom_t gdb_eeprom,
dboard_iface::sptr iface,
property_tree::sptr subtree,
- bool defer_db_init
-){
- return dboard_manager::sptr(
- new dboard_manager_impl(
- rx_eeprom,
- (gdb_eeprom.id == dboard_id_t::none())? tx_eeprom : gdb_eeprom,
- iface, subtree, defer_db_init
- )
- );
+ bool defer_db_init)
+{
+ return dboard_manager::sptr(new dboard_manager_impl(rx_eeprom,
+ (gdb_eeprom.id == dboard_id_t::none()) ? tx_eeprom : gdb_eeprom,
+ iface,
+ subtree,
+ defer_db_init));
}
/***********************************************************************
* implementation class methods
**********************************************************************/
-dboard_manager_impl::dboard_manager_impl(
- dboard_eeprom_t rx_eeprom,
+dboard_manager_impl::dboard_manager_impl(dboard_eeprom_t rx_eeprom,
dboard_eeprom_t tx_eeprom,
dboard_iface::sptr iface,
property_tree::sptr subtree,
- bool defer_db_init
-):
- _iface(iface)
+ bool defer_db_init)
+ : _iface(iface)
{
- try{
+ try {
this->init(rx_eeprom, tx_eeprom, subtree, defer_db_init);
- }
- catch(const std::exception &e){
- UHD_LOGGER_ERROR("DBMGR") << boost::format(
- "The daughterboard manager encountered a recoverable error in init.\n"
- "Loading the \"unknown\" daughterboard implementations to continue.\n"
- "The daughterboard cannot operate until this error is resolved.\n"
- ) << e.what() ;
- //clean up the stuff added by the call above
- if (subtree->exists("rx_frontends")) subtree->remove("rx_frontends");
- if (subtree->exists("tx_frontends")) subtree->remove("tx_frontends");
- if (subtree->exists("iface")) subtree->remove("iface");
+ } catch (const std::exception& e) {
+ UHD_LOGGER_ERROR("DBMGR")
+ << boost::format(
+ "The daughterboard manager encountered a recoverable error in init.\n"
+ "Loading the \"unknown\" daughterboard implementations to continue.\n"
+ "The daughterboard cannot operate until this error is resolved.\n")
+ << e.what();
+ // clean up the stuff added by the call above
+ if (subtree->exists("rx_frontends"))
+ subtree->remove("rx_frontends");
+ if (subtree->exists("tx_frontends"))
+ subtree->remove("tx_frontends");
+ if (subtree->exists("iface"))
+ subtree->remove("iface");
dboard_eeprom_t dummy_eeprom;
dummy_eeprom.id = dboard_id_t::none();
this->init(dummy_eeprom, dummy_eeprom, subtree, false);
}
}
-void dboard_manager_impl::init(
- dboard_eeprom_t rx_eeprom,
+void dboard_manager_impl::init(dboard_eeprom_t rx_eeprom,
dboard_eeprom_t tx_eeprom,
property_tree::sptr subtree,
- bool defer_db_init
-){
- //find the dboard key matches for the dboard ids
+ bool defer_db_init)
+{
+ // find the dboard key matches for the dboard ids
dboard_key_t rx_dboard_key, tx_dboard_key, xcvr_dboard_key;
- for(const dboard_key_t &key: get_id_to_args_map().keys()){
- if (key.is_xcvr()){
- if (rx_eeprom.id == key.rx_id() and tx_eeprom.id == key.tx_id()) xcvr_dboard_key = key;
- if (rx_eeprom.id == key.rx_id()) rx_dboard_key = key; //kept to handle warning
- if (rx_eeprom.id == key.tx_id()) tx_dboard_key = key; //kept to handle warning
- }
- else{
- if (rx_eeprom.id == key.xx_id()) rx_dboard_key = key;
- if (tx_eeprom.id == key.xx_id()) tx_dboard_key = key;
+ for (const dboard_key_t& key : get_id_to_args_map().keys()) {
+ if (key.is_xcvr()) {
+ if (rx_eeprom.id == key.rx_id() and tx_eeprom.id == key.tx_id())
+ xcvr_dboard_key = key;
+ if (rx_eeprom.id == key.rx_id())
+ rx_dboard_key = key; // kept to handle warning
+ if (rx_eeprom.id == key.tx_id())
+ tx_dboard_key = key; // kept to handle warning
+ } else {
+ if (rx_eeprom.id == key.xx_id())
+ rx_dboard_key = key;
+ if (tx_eeprom.id == key.xx_id())
+ tx_dboard_key = key;
}
}
- //warn for invalid dboard id xcvr combinations
- if (not xcvr_dboard_key.is_xcvr() and (rx_dboard_key.is_xcvr() or tx_dboard_key.is_xcvr())){
- UHD_LOGGER_WARNING("DBMGR") << boost::format(
- "Unknown transceiver board ID combination.\n"
- "Is your daughter-board mounted properly?\n"
- "RX dboard ID: %s\n"
- "TX dboard ID: %s\n"
- ) % rx_eeprom.id.to_pp_string() % tx_eeprom.id.to_pp_string();
+ // warn for invalid dboard id xcvr combinations
+ if (not xcvr_dboard_key.is_xcvr()
+ and (rx_dboard_key.is_xcvr() or tx_dboard_key.is_xcvr())) {
+ UHD_LOGGER_WARNING("DBMGR")
+ << boost::format("Unknown transceiver board ID combination.\n"
+ "Is your daughter-board mounted properly?\n"
+ "RX dboard ID: %s\n"
+ "TX dboard ID: %s\n")
+ % rx_eeprom.id.to_pp_string() % tx_eeprom.id.to_pp_string();
}
- //initialize the gpio pins before creating subdevs
+ // initialize the gpio pins before creating subdevs
set_nice_dboard_if();
- //conditionally register the dboard iface in the tree
- if (not (rx_dboard_key.is_restricted() or tx_dboard_key.is_restricted() or xcvr_dboard_key.is_restricted())) {
+ // conditionally register the dboard iface in the tree
+ if (not(rx_dboard_key.is_restricted() or tx_dboard_key.is_restricted()
+ or xcvr_dboard_key.is_restricted())) {
subtree->create<dboard_iface::sptr>("iface").set(_iface);
}
- //dboard constructor args
+ // dboard constructor args
dboard_ctor_args_t db_ctor_args;
db_ctor_args.db_iface = _iface;
- //make xcvr subdevs
- if (xcvr_dboard_key.is_xcvr()){
-
- //extract data for the xcvr dboard key
- dboard_ctor_t subdev_ctor; std::string name; std::vector<std::string> subdevs; dboard_ctor_t container_ctor;
- std::tie(subdev_ctor, name, subdevs, container_ctor) = get_id_to_args_map()[xcvr_dboard_key];
-
- //create the container class.
- //a container class exists per N subdevs registered in a register_dboard* call
- db_ctor_args.sd_name = "common";
- db_ctor_args.rx_eeprom = rx_eeprom;
- db_ctor_args.tx_eeprom = tx_eeprom;
- db_ctor_args.rx_subtree = subtree->subtree("rx_frontends/" + db_ctor_args.sd_name);
- db_ctor_args.tx_subtree = subtree->subtree("tx_frontends/" + db_ctor_args.sd_name);
+ // make xcvr subdevs
+ if (xcvr_dboard_key.is_xcvr()) {
+ // extract data for the xcvr dboard key
+ dboard_ctor_t subdev_ctor;
+ std::string name;
+ std::vector<std::string> subdevs;
+ dboard_ctor_t container_ctor;
+ std::tie(subdev_ctor, name, subdevs, container_ctor) =
+ get_id_to_args_map()[xcvr_dboard_key];
+
+ // create the container class.
+ // a container class exists per N subdevs registered in a register_dboard* call
+ db_ctor_args.sd_name = "common";
+ db_ctor_args.rx_eeprom = rx_eeprom;
+ db_ctor_args.tx_eeprom = tx_eeprom;
+ db_ctor_args.rx_subtree =
+ subtree->subtree("rx_frontends/" + db_ctor_args.sd_name);
+ db_ctor_args.tx_subtree =
+ subtree->subtree("tx_frontends/" + db_ctor_args.sd_name);
if (container_ctor) {
db_ctor_args.rx_container = container_ctor(&db_ctor_args);
} else {
db_ctor_args.rx_container = dboard_base::sptr();
}
- db_ctor_args.tx_container = db_ctor_args.rx_container; //Same TX and RX container
+ db_ctor_args.tx_container = db_ctor_args.rx_container; // Same TX and RX container
- //create the xcvr object for each subdevice
- for(const std::string &subdev: subdevs){
+ // create the xcvr object for each subdevice
+ for (const std::string& subdev : subdevs) {
db_ctor_args.sd_name = subdev;
- db_ctor_args.rx_subtree = subtree->subtree("rx_frontends/" + db_ctor_args.sd_name);
- db_ctor_args.tx_subtree = subtree->subtree("tx_frontends/" + db_ctor_args.sd_name);
+ db_ctor_args.rx_subtree =
+ subtree->subtree("rx_frontends/" + db_ctor_args.sd_name);
+ db_ctor_args.tx_subtree =
+ subtree->subtree("tx_frontends/" + db_ctor_args.sd_name);
dboard_base::sptr xcvr_dboard = subdev_ctor(&db_ctor_args);
- _rx_dboards[subdev] = xcvr_dboard;
- _tx_dboards[subdev] = xcvr_dboard;
+ _rx_dboards[subdev] = xcvr_dboard;
+ _tx_dboards[subdev] = xcvr_dboard;
xcvr_dboard->initialize();
}
- //initialize the container after all subdevs have been created
+ // initialize the container after all subdevs have been created
if (container_ctor) {
if (defer_db_init) {
_rx_containers.push_back(db_ctor_args.rx_container);
@@ -353,30 +386,34 @@ void dboard_manager_impl::init(
}
}
- //Populate frontend names in-order.
- //We cannot use _xx_dboards.keys() here because of the ordering requirement
+ // Populate frontend names in-order.
+ // We cannot use _xx_dboards.keys() here because of the ordering requirement
_rx_frontends = subdevs;
_tx_frontends = subdevs;
}
- //make tx and rx subdevs (separate subdevs for rx and tx dboards)
- else
- {
- //force the rx key to the unknown board for bad combinations
- if (rx_dboard_key.is_xcvr() or rx_dboard_key.xx_id() == dboard_id_t::none()){
+ // make tx and rx subdevs (separate subdevs for rx and tx dboards)
+ else {
+ // force the rx key to the unknown board for bad combinations
+ if (rx_dboard_key.is_xcvr() or rx_dboard_key.xx_id() == dboard_id_t::none()) {
rx_dboard_key = dboard_key_t(0xfff1);
}
- //extract data for the rx dboard key
- dboard_ctor_t rx_dboard_ctor; std::string rx_name; std::vector<std::string> rx_subdevs; dboard_ctor_t rx_cont_ctor;
- std::tie(rx_dboard_ctor, rx_name, rx_subdevs, rx_cont_ctor) = get_id_to_args_map()[rx_dboard_key];
-
- //create the container class.
- //a container class exists per N subdevs registered in a register_dboard* call
- db_ctor_args.sd_name = "common";
- db_ctor_args.rx_eeprom = rx_eeprom;
+ // extract data for the rx dboard key
+ dboard_ctor_t rx_dboard_ctor;
+ std::string rx_name;
+ std::vector<std::string> rx_subdevs;
+ dboard_ctor_t rx_cont_ctor;
+ std::tie(rx_dboard_ctor, rx_name, rx_subdevs, rx_cont_ctor) =
+ get_id_to_args_map()[rx_dboard_key];
+
+ // create the container class.
+ // a container class exists per N subdevs registered in a register_dboard* call
+ db_ctor_args.sd_name = "common";
+ db_ctor_args.rx_eeprom = rx_eeprom;
db_ctor_args.tx_eeprom.id = dboard_id_t::none();
- db_ctor_args.rx_subtree = subtree->subtree("rx_frontends/" + db_ctor_args.sd_name);
+ db_ctor_args.rx_subtree =
+ subtree->subtree("rx_frontends/" + db_ctor_args.sd_name);
db_ctor_args.tx_subtree = property_tree::sptr();
if (rx_cont_ctor) {
db_ctor_args.rx_container = rx_cont_ctor(&db_ctor_args);
@@ -384,15 +421,16 @@ void dboard_manager_impl::init(
db_ctor_args.rx_container = dboard_base::sptr();
}
- //make the rx subdevs
- for(const std::string &subdev: rx_subdevs){
+ // make the rx subdevs
+ for (const std::string& subdev : rx_subdevs) {
db_ctor_args.sd_name = subdev;
- db_ctor_args.rx_subtree = subtree->subtree("rx_frontends/" + db_ctor_args.sd_name);
+ db_ctor_args.rx_subtree =
+ subtree->subtree("rx_frontends/" + db_ctor_args.sd_name);
_rx_dboards[subdev] = rx_dboard_ctor(&db_ctor_args);
_rx_dboards[subdev]->initialize();
}
- //initialize the container after all subdevs have been created
+ // initialize the container after all subdevs have been created
if (rx_cont_ctor) {
if (defer_db_init) {
_rx_containers.push_back(db_ctor_args.rx_container);
@@ -401,37 +439,43 @@ void dboard_manager_impl::init(
}
}
- //force the tx key to the unknown board for bad combinations
- if (tx_dboard_key.is_xcvr() or tx_dboard_key.xx_id() == dboard_id_t::none()){
+ // force the tx key to the unknown board for bad combinations
+ if (tx_dboard_key.is_xcvr() or tx_dboard_key.xx_id() == dboard_id_t::none()) {
tx_dboard_key = dboard_key_t(0xfff0);
}
- //extract data for the tx dboard key
- dboard_ctor_t tx_dboard_ctor; std::string tx_name; std::vector<std::string> tx_subdevs; dboard_ctor_t tx_cont_ctor;
- std::tie(tx_dboard_ctor, tx_name, tx_subdevs, tx_cont_ctor) = get_id_to_args_map()[tx_dboard_key];
-
- //create the container class.
- //a container class exists per N subdevs registered in a register_dboard* call
- db_ctor_args.sd_name = "common";
+ // extract data for the tx dboard key
+ dboard_ctor_t tx_dboard_ctor;
+ std::string tx_name;
+ std::vector<std::string> tx_subdevs;
+ dboard_ctor_t tx_cont_ctor;
+ std::tie(tx_dboard_ctor, tx_name, tx_subdevs, tx_cont_ctor) =
+ get_id_to_args_map()[tx_dboard_key];
+
+ // create the container class.
+ // a container class exists per N subdevs registered in a register_dboard* call
+ db_ctor_args.sd_name = "common";
db_ctor_args.rx_eeprom.id = dboard_id_t::none();
- db_ctor_args.tx_eeprom = tx_eeprom;
- db_ctor_args.rx_subtree = property_tree::sptr();
- db_ctor_args.tx_subtree = subtree->subtree("tx_frontends/" + db_ctor_args.sd_name);
+ db_ctor_args.tx_eeprom = tx_eeprom;
+ db_ctor_args.rx_subtree = property_tree::sptr();
+ db_ctor_args.tx_subtree =
+ subtree->subtree("tx_frontends/" + db_ctor_args.sd_name);
if (tx_cont_ctor) {
db_ctor_args.tx_container = tx_cont_ctor(&db_ctor_args);
} else {
db_ctor_args.tx_container = dboard_base::sptr();
}
- //make the tx subdevs
- for(const std::string &subdev: tx_subdevs){
+ // make the tx subdevs
+ for (const std::string& subdev : tx_subdevs) {
db_ctor_args.sd_name = subdev;
- db_ctor_args.tx_subtree = subtree->subtree("tx_frontends/" + db_ctor_args.sd_name);
+ db_ctor_args.tx_subtree =
+ subtree->subtree("tx_frontends/" + db_ctor_args.sd_name);
_tx_dboards[subdev] = tx_dboard_ctor(&db_ctor_args);
_tx_dboards[subdev]->initialize();
}
- //initialize the container after all subdevs have been created
+ // initialize the container after all subdevs have been created
if (tx_cont_ctor) {
if (defer_db_init) {
_tx_containers.push_back(db_ctor_args.tx_container);
@@ -440,39 +484,40 @@ void dboard_manager_impl::init(
}
}
- //Populate frontend names in-order.
- //We cannot use _xx_dboards.keys() here because of the ordering requirement
+ // Populate frontend names in-order.
+ // We cannot use _xx_dboards.keys() here because of the ordering requirement
_rx_frontends = rx_subdevs;
_tx_frontends = tx_subdevs;
}
}
-void dboard_manager_impl::initialize_dboards(void) {
- for(dboard_base::sptr& _rx_container: _rx_containers) {
+void dboard_manager_impl::initialize_dboards(void)
+{
+ for (dboard_base::sptr& _rx_container : _rx_containers) {
_rx_container->initialize();
}
- for(dboard_base::sptr& _tx_container: _tx_containers) {
+ for (dboard_base::sptr& _tx_container : _tx_containers) {
_tx_container->initialize();
}
}
-dboard_manager_impl::~dboard_manager_impl(void){UHD_SAFE_CALL(
- set_nice_dboard_if();
-)}
+dboard_manager_impl::~dboard_manager_impl(void)
+{
+ UHD_SAFE_CALL(set_nice_dboard_if();)
+}
-void dboard_manager_impl::set_nice_dboard_if(void){
- //make a list of possible unit types
+void dboard_manager_impl::set_nice_dboard_if(void)
+{
+ // make a list of possible unit types
const std::vector<dboard_iface::unit_t> units{
- dboard_iface::UNIT_RX,
- dboard_iface::UNIT_TX
- };
-
- //set nice settings on each unit
- for(dboard_iface::unit_t unit: units){
- _iface->set_gpio_ddr(unit, 0x0000); //all inputs
- _iface->set_gpio_out(unit, 0x0000); //all low
- _iface->set_pin_ctrl(unit, 0x0000); //all gpio
- _iface->set_clock_enabled(unit, false); //clock off
+ dboard_iface::UNIT_RX, dboard_iface::UNIT_TX};
+
+ // set nice settings on each unit
+ for (dboard_iface::unit_t unit : units) {
+ _iface->set_gpio_ddr(unit, 0x0000); // all inputs
+ _iface->set_gpio_out(unit, 0x0000); // all low
+ _iface->set_pin_ctrl(unit, 0x0000); // all gpio
+ _iface->set_clock_enabled(unit, false); // clock off
}
}