aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--host/include/uhd/usrp/dboard_base.hpp5
-rw-r--r--host/include/uhd/usrp/dboard_manager.hpp15
-rw-r--r--host/lib/usrp/b100/b100_impl.cpp4
-rw-r--r--host/lib/usrp/dboard_base.cpp14
-rw-r--r--host/lib/usrp/dboard_ctor_args.hpp6
-rw-r--r--host/lib/usrp/dboard_manager.cpp57
-rw-r--r--host/lib/usrp/usrp1/usrp1_impl.cpp4
-rw-r--r--host/lib/usrp/usrp2/usrp2_impl.cpp4
-rw-r--r--host/lib/usrp/x300/x300_radio_ctrl_impl.cpp8
9 files changed, 67 insertions, 50 deletions
diff --git a/host/include/uhd/usrp/dboard_base.hpp b/host/include/uhd/usrp/dboard_base.hpp
index b106a1ac6..109297bb4 100644
--- a/host/include/uhd/usrp/dboard_base.hpp
+++ b/host/include/uhd/usrp/dboard_base.hpp
@@ -1,5 +1,5 @@
//
-// Copyright 2010 Ettus Research LLC
+// Copyright 2010,2017 Ettus Research, A National Instruments Company
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -25,6 +25,7 @@
#include <boost/shared_ptr.hpp>
#include <uhd/usrp/dboard_id.hpp>
#include <uhd/usrp/dboard_iface.hpp>
+#include <uhd/usrp/dboard_eeprom.hpp>
namespace uhd{ namespace usrp{
@@ -54,6 +55,8 @@ protected:
dboard_iface::sptr get_iface(void);
dboard_id_t get_rx_id(void);
dboard_id_t get_tx_id(void);
+ dboard_eeprom_t get_rx_eeprom(void);
+ dboard_eeprom_t get_tx_eeprom(void);
property_tree::sptr get_rx_subtree(void);
property_tree::sptr get_tx_subtree(void);
diff --git a/host/include/uhd/usrp/dboard_manager.hpp b/host/include/uhd/usrp/dboard_manager.hpp
index e07b87ad8..46716eab9 100644
--- a/host/include/uhd/usrp/dboard_manager.hpp
+++ b/host/include/uhd/usrp/dboard_manager.hpp
@@ -1,5 +1,5 @@
//
-// Copyright 2010 Ettus Research LLC
+// Copyright 2010,2017 Ettus Research, A National Instruments Company
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -22,6 +22,7 @@
#include <uhd/property_tree.hpp>
#include <uhd/usrp/dboard_base.hpp>
#include <uhd/usrp/dboard_id.hpp>
+#include <uhd/usrp/dboard_eeprom.hpp>
#include <boost/utility.hpp>
#include <boost/shared_ptr.hpp>
#include <string>
@@ -119,18 +120,18 @@ public:
/*!
* Make a new dboard manager.
- * \param rx_dboard_id the id of the rx dboard
- * \param tx_dboard_id the id of the tx dboard
- * \param gdboard_id the id of the grand-dboard
+ * \param rx_eeprom the RX EEPROM data
+ * \param tx_eeprom the TX EEPROM data
+ * \param gdb_eeprom the grand-dboard EEPROM data
* \param iface the custom dboard interface
* \param subtree the subtree to load with props
* \param defer_db_init initialising the daughterboards (DEPRECATED)
* \return an sptr to the new dboard manager
*/
static sptr make(
- dboard_id_t rx_dboard_id,
- dboard_id_t tx_dboard_id,
- dboard_id_t gdboard_id,
+ 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 = false
diff --git a/host/lib/usrp/b100/b100_impl.cpp b/host/lib/usrp/b100/b100_impl.cpp
index 1a38bf3b7..b73552ec5 100644
--- a/host/lib/usrp/b100/b100_impl.cpp
+++ b/host/lib/usrp/b100/b100_impl.cpp
@@ -1,5 +1,5 @@
//
-// Copyright 2012-2014 Ettus Research LLC
+// Copyright 2012-2014,2017 Ettus Research, A National Instruments Company
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -471,7 +471,7 @@ b100_impl::b100_impl(const device_addr_t &device_addr){
//create a new dboard interface and manager
_dboard_manager = dboard_manager::make(
- rx_db_eeprom.id, tx_db_eeprom.id, gdb_eeprom.id,
+ rx_db_eeprom, tx_db_eeprom, gdb_eeprom,
make_b100_dboard_iface(_fifo_ctrl, _fpga_i2c_ctrl, _fifo_ctrl/*spi*/, _clock_ctrl, _codec_ctrl),
_tree->subtree(mb_path / "dboards/A")
);
diff --git a/host/lib/usrp/dboard_base.cpp b/host/lib/usrp/dboard_base.cpp
index 465b9e489..bacb2a5a1 100644
--- a/host/lib/usrp/dboard_base.cpp
+++ b/host/lib/usrp/dboard_base.cpp
@@ -1,5 +1,5 @@
//
-// Copyright 2010-2011 Ettus Research LLC
+// Copyright 2010-2011,2017 Ettus Research, A National Instruments Company
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -44,11 +44,19 @@ dboard_iface::sptr dboard_base::get_iface(void){
}
dboard_id_t dboard_base::get_rx_id(void){
- return _impl->args.rx_id;
+ return _impl->args.rx_eeprom.id;
}
dboard_id_t dboard_base::get_tx_id(void){
- return _impl->args.tx_id;
+ return _impl->args.tx_eeprom.id;
+}
+
+dboard_eeprom_t dboard_base::get_rx_eeprom(void){
+ return _impl->args.rx_eeprom;
+}
+
+dboard_eeprom_t dboard_base::get_tx_eeprom(void){
+ return _impl->args.tx_eeprom;
}
property_tree::sptr dboard_base::get_rx_subtree(void){
diff --git a/host/lib/usrp/dboard_ctor_args.hpp b/host/lib/usrp/dboard_ctor_args.hpp
index c8e4006d1..db26193cc 100644
--- a/host/lib/usrp/dboard_ctor_args.hpp
+++ b/host/lib/usrp/dboard_ctor_args.hpp
@@ -1,5 +1,5 @@
//
-// Copyright 2010 Ettus Research LLC
+// Copyright 2010,2017 Ettus Research, A National Instruments Company
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -19,9 +19,9 @@
#define INCLUDED_LIBUHD_USRP_DBOARD_CTOR_ARGS_HPP
#include <uhd/property_tree.hpp>
-#include <uhd/usrp/dboard_id.hpp>
#include <uhd/usrp/dboard_base.hpp>
#include <uhd/usrp/dboard_iface.hpp>
+#include <uhd/usrp/dboard_eeprom.hpp>
#include <string>
namespace uhd{ namespace usrp{
@@ -30,7 +30,7 @@ namespace uhd{ namespace usrp{
public:
std::string sd_name;
dboard_iface::sptr db_iface;
- dboard_id_t rx_id, tx_id;
+ dboard_eeprom_t rx_eeprom, tx_eeprom;
property_tree::sptr rx_subtree, tx_subtree;
dboard_base::sptr rx_container, tx_container;
diff --git a/host/lib/usrp/dboard_manager.cpp b/host/lib/usrp/dboard_manager.cpp
index 56cd08fd7..6132b4259 100644
--- a/host/lib/usrp/dboard_manager.cpp
+++ b/host/lib/usrp/dboard_manager.cpp
@@ -1,5 +1,5 @@
//
-// Copyright 2010-2011 Ettus Research LLC
+// Copyright 2010-2011,2017 Ettus Research, A National Instruments Company
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -179,8 +179,8 @@ class dboard_manager_impl : public dboard_manager{
public:
dboard_manager_impl(
- dboard_id_t rx_dboard_id,
- dboard_id_t tx_dboard_id,
+ dboard_eeprom_t rx_eeprom,
+ dboard_eeprom_t tx_eeprom,
dboard_iface::sptr iface,
property_tree::sptr subtree,
bool defer_db_init
@@ -198,7 +198,7 @@ public:
void initialize_dboards();
private:
- void init(dboard_id_t, dboard_id_t, property_tree::sptr, bool);
+ 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
@@ -216,17 +216,17 @@ private:
* make routine for dboard manager
**********************************************************************/
dboard_manager::sptr dboard_manager::make(
- dboard_id_t rx_dboard_id,
- dboard_id_t tx_dboard_id,
- dboard_id_t gdboard_id,
+ 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_dboard_id,
- (gdboard_id == dboard_id_t::none())? tx_dboard_id : gdboard_id,
+ rx_eeprom,
+ (gdb_eeprom.id == dboard_id_t::none())? tx_eeprom : gdb_eeprom,
iface, subtree, defer_db_init
)
);
@@ -236,8 +236,8 @@ dboard_manager::sptr dboard_manager::make(
* implementation class methods
**********************************************************************/
dboard_manager_impl::dboard_manager_impl(
- dboard_id_t rx_dboard_id,
- dboard_id_t tx_dboard_id,
+ dboard_eeprom_t rx_eeprom,
+ dboard_eeprom_t tx_eeprom,
dboard_iface::sptr iface,
property_tree::sptr subtree,
bool defer_db_init
@@ -245,7 +245,7 @@ dboard_manager_impl::dboard_manager_impl(
_iface(iface)
{
try{
- this->init(rx_dboard_id, tx_dboard_id, subtree, defer_db_init);
+ this->init(rx_eeprom, tx_eeprom, subtree, defer_db_init);
}
catch(const std::exception &e){
UHD_MSG(error) << boost::format(
@@ -257,24 +257,29 @@ dboard_manager_impl::dboard_manager_impl(
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");
- this->init(dboard_id_t::none(), dboard_id_t::none(), subtree, false);
+ 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_id_t rx_dboard_id, dboard_id_t tx_dboard_id, property_tree::sptr subtree, bool defer_db_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
dboard_key_t rx_dboard_key, tx_dboard_key, xcvr_dboard_key;
BOOST_FOREACH(const dboard_key_t &key, get_id_to_args_map().keys()){
if (key.is_xcvr()){
- if (rx_dboard_id == key.rx_id() and tx_dboard_id == key.tx_id()) xcvr_dboard_key = key;
- if (rx_dboard_id == key.rx_id()) rx_dboard_key = key; //kept to handle warning
- if (tx_dboard_id == key.tx_id()) tx_dboard_key = key; //kept to handle warning
+ 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_dboard_id == key.xx_id()) rx_dboard_key = key;
- if (tx_dboard_id == key.xx_id()) tx_dboard_key = key;
+ if (rx_eeprom.id == key.xx_id()) rx_dboard_key = key;
+ if (tx_eeprom.id == key.xx_id()) tx_dboard_key = key;
}
}
@@ -285,7 +290,7 @@ void dboard_manager_impl::init(
"Is your daughter-board mounted properly?\n"
"RX dboard ID: %s\n"
"TX dboard ID: %s\n"
- ) % rx_dboard_id.to_pp_string() % tx_dboard_id.to_pp_string();
+ ) % rx_eeprom.id.to_pp_string() % tx_eeprom.id.to_pp_string();
}
//initialize the gpio pins before creating subdevs
@@ -310,8 +315,8 @@ void dboard_manager_impl::init(
//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_id = rx_dboard_id;
- db_ctor_args.tx_id = tx_dboard_id;
+ 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) {
@@ -362,8 +367,8 @@ void dboard_manager_impl::init(
//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_id = rx_dboard_id;
- db_ctor_args.tx_id = dboard_id_t::none();
+ 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.tx_subtree = property_tree::sptr();
if (rx_cont_ctor) {
@@ -401,8 +406,8 @@ void dboard_manager_impl::init(
//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_id = dboard_id_t::none();
- db_ctor_args.tx_id = tx_dboard_id;
+ 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);
if (tx_cont_ctor) {
diff --git a/host/lib/usrp/usrp1/usrp1_impl.cpp b/host/lib/usrp/usrp1/usrp1_impl.cpp
index 09352c5e0..b55a78f91 100644
--- a/host/lib/usrp/usrp1/usrp1_impl.cpp
+++ b/host/lib/usrp/usrp1/usrp1_impl.cpp
@@ -1,5 +1,5 @@
//
-// Copyright 2010-2012,2014 Ettus Research LLC
+// Copyright 2010-2012,2014,2017 Ettus Research, A National Instruments Company
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -378,7 +378,7 @@ usrp1_impl::usrp1_impl(const device_addr_t &device_addr){
_master_clock_rate, rx_db_eeprom.id
);
_dbc[db].dboard_manager = dboard_manager::make(
- rx_db_eeprom.id, tx_db_eeprom.id, gdb_eeprom.id,
+ rx_db_eeprom, tx_db_eeprom, gdb_eeprom,
dboard_iface, _tree->subtree(mb_path / "dboards" / db)
);
diff --git a/host/lib/usrp/usrp2/usrp2_impl.cpp b/host/lib/usrp/usrp2/usrp2_impl.cpp
index ee2434fab..1a8dbeceb 100644
--- a/host/lib/usrp/usrp2/usrp2_impl.cpp
+++ b/host/lib/usrp/usrp2/usrp2_impl.cpp
@@ -1,5 +1,5 @@
//
-// Copyright 2010-2012,2014 Ettus Research LLC
+// Copyright 2010-2012,2014,2017 Ettus Research, A National Instruments Company
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -736,7 +736,7 @@ usrp2_impl::usrp2_impl(const device_addr_t &_device_addr) :
//create a new dboard interface and manager
_mbc[mb].dboard_manager = dboard_manager::make(
- rx_db_eeprom.id, tx_db_eeprom.id, gdb_eeprom.id,
+ rx_db_eeprom, tx_db_eeprom, gdb_eeprom,
make_usrp2_dboard_iface(_mbc[mb].wbiface, _mbc[mb].iface/*i2c*/, _mbc[mb].spiface, _mbc[mb].clock),
_tree->subtree(mb_path / "dboards/A")
);
diff --git a/host/lib/usrp/x300/x300_radio_ctrl_impl.cpp b/host/lib/usrp/x300/x300_radio_ctrl_impl.cpp
index a3bc2e691..a462ceea4 100644
--- a/host/lib/usrp/x300/x300_radio_ctrl_impl.cpp
+++ b/host/lib/usrp/x300/x300_radio_ctrl_impl.cpp
@@ -1,5 +1,5 @@
//
-// Copyright 2015-2016 Ettus Research
+// Copyright 2015-2017 Ettus Research, A National Instruments Company
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -372,9 +372,9 @@ void x300_radio_ctrl_impl::setup_radio(
//create a new dboard manager
boost::shared_ptr<x300_dboard_iface> db_iface = boost::make_shared<x300_dboard_iface>(db_config);
_db_manager = dboard_manager::make(
- _db_eeproms[RX_EEPROM_ADDR + DB_OFFSET].id,
- _db_eeproms[TX_EEPROM_ADDR + DB_OFFSET].id,
- _db_eeproms[GDB_EEPROM_ADDR + DB_OFFSET].id,
+ _db_eeproms[RX_EEPROM_ADDR + DB_OFFSET],
+ _db_eeproms[TX_EEPROM_ADDR + DB_OFFSET],
+ _db_eeproms[GDB_EEPROM_ADDR + DB_OFFSET],
db_iface, _tree->subtree(db_path),
true // defer daughterboard intitialization
);