aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2011-07-20 14:13:37 -0700
committerJosh Blum <josh@joshknows.com>2011-07-20 14:13:37 -0700
commit9851de0713b4c6d14a870a1d8816451ca518ff52 (patch)
tree41d1ff8e4d4febd8babfb46a9779def2c2314a2b
parent117f6a3359a8a21acf396b0e0f084c32770e0b3a (diff)
downloaduhd-9851de0713b4c6d14a870a1d8816451ca518ff52.tar.gz
uhd-9851de0713b4c6d14a870a1d8816451ca518ff52.tar.bz2
uhd-9851de0713b4c6d14a870a1d8816451ca518ff52.zip
uhd: add get_tree call directly to the device
Does away with the need for wax cast to get the tree. You can still do this but it will eventually be removed. There was some compiler issue on ubuntu 10.04 with any cast and a shared ptr to property tree.
-rw-r--r--host/include/uhd/device.hpp4
-rw-r--r--host/lib/usrp/b100/b100_impl.hpp3
-rw-r--r--host/lib/usrp/e100/e100_impl.hpp3
-rw-r--r--host/lib/usrp/usrp1/usrp1_impl.hpp3
-rw-r--r--host/lib/usrp/usrp2/usrp2_impl.hpp3
-rw-r--r--host/utils/uhd_usrp_probe.cpp2
-rw-r--r--host/utils/usrp1_init_eeprom.cpp2
-rw-r--r--host/utils/usrp_burn_db_eeprom.cpp2
8 files changed, 19 insertions, 3 deletions
diff --git a/host/include/uhd/device.hpp b/host/include/uhd/device.hpp
index 50237472b..40969c29c 100644
--- a/host/include/uhd/device.hpp
+++ b/host/include/uhd/device.hpp
@@ -19,6 +19,7 @@
#define INCLUDED_UHD_DEVICE_HPP
#include <uhd/config.hpp>
+#include <uhd/property_tree.hpp>
#include <uhd/types/device_addr.hpp>
#include <uhd/types/metadata.hpp>
#include <uhd/types/io_type.hpp>
@@ -197,6 +198,9 @@ public:
async_metadata_t &async_metadata, double timeout = 0.1
) = 0;
+ //! Get access to the underlying property structure
+ virtual property_tree::sptr get_tree(void) const = 0;
+
};
} //namespace uhd
diff --git a/host/lib/usrp/b100/b100_impl.hpp b/host/lib/usrp/b100/b100_impl.hpp
index 62a22674e..26f363479 100644
--- a/host/lib/usrp/b100/b100_impl.hpp
+++ b/host/lib/usrp/b100/b100_impl.hpp
@@ -113,6 +113,9 @@ private:
void get(const wax::obj &, wax::obj &val){
val = _tree; //entry point into property tree
}
+ uhd::property_tree::sptr get_tree(void) const{
+ return _tree;
+ }
void check_fw_compat(void);
void check_fpga_compat(void);
diff --git a/host/lib/usrp/e100/e100_impl.hpp b/host/lib/usrp/e100/e100_impl.hpp
index e24360223..d60d6a63c 100644
--- a/host/lib/usrp/e100/e100_impl.hpp
+++ b/host/lib/usrp/e100/e100_impl.hpp
@@ -113,6 +113,9 @@ private:
void get(const wax::obj &, wax::obj &val){
val = _tree; //entry point into property tree
}
+ uhd::property_tree::sptr get_tree(void) const{
+ return _tree;
+ }
double update_rx_codec_gain(const double); //sets A and B at once
void set_mb_eeprom(const uhd::usrp::mboard_eeprom_t &);
diff --git a/host/lib/usrp/usrp1/usrp1_impl.hpp b/host/lib/usrp/usrp1/usrp1_impl.hpp
index 1fe0c1784..261223883 100644
--- a/host/lib/usrp/usrp1/usrp1_impl.hpp
+++ b/host/lib/usrp/usrp1/usrp1_impl.hpp
@@ -79,6 +79,9 @@ private:
void get(const wax::obj &, wax::obj &val){
val = _tree; //entry point into property tree
}
+ uhd::property_tree::sptr get_tree(void) const{
+ return _tree;
+ }
//controllers
uhd::usrp::fx2_ctrl::sptr _fx2_ctrl;
diff --git a/host/lib/usrp/usrp2/usrp2_impl.hpp b/host/lib/usrp/usrp2/usrp2_impl.hpp
index 644eab824..cdbcc895f 100644
--- a/host/lib/usrp/usrp2/usrp2_impl.hpp
+++ b/host/lib/usrp/usrp2/usrp2_impl.hpp
@@ -117,6 +117,9 @@ private:
void get(const wax::obj &, wax::obj &val){
val = _tree; //entry point into property tree
}
+ uhd::property_tree::sptr get_tree(void) const{
+ return _tree;
+ }
//io impl methods and members
uhd::otw_type_t _rx_otw_type, _tx_otw_type;
diff --git a/host/utils/uhd_usrp_probe.cpp b/host/utils/uhd_usrp_probe.cpp
index cb6d78255..6c5f451cd 100644
--- a/host/utils/uhd_usrp_probe.cpp
+++ b/host/utils/uhd_usrp_probe.cpp
@@ -192,7 +192,7 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){
}
device::sptr dev = device::make(vm["args"].as<std::string>());
- property_tree::sptr tree = (*dev)[0].as<property_tree::sptr>();
+ property_tree::sptr tree = dev->get_tree();
if (vm.count("tree") != 0) print_tree("/", tree);
else std::cout << make_border(get_device_pp_string(tree)) << std::endl;
diff --git a/host/utils/usrp1_init_eeprom.cpp b/host/utils/usrp1_init_eeprom.cpp
index 5bc07daf6..1778d5f9d 100644
--- a/host/utils/usrp1_init_eeprom.cpp
+++ b/host/utils/usrp1_init_eeprom.cpp
@@ -65,7 +65,7 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){
std::cout << "Writing EEPROM data..." << std::endl;
//uhd::device_addrs_t devs = uhd::device::find(found_addrs[i]);
uhd::device::sptr dev = uhd::device::make(found_addrs[i]);
- uhd::property_tree::sptr tree = (*dev)[0].as<uhd::property_tree::sptr>();
+ uhd::property_tree::sptr tree = dev->get_tree();
tree->access<std::string>("/mboards/0/load_eeprom").set(vm["image"].as<std::string>());
}
diff --git a/host/utils/usrp_burn_db_eeprom.cpp b/host/utils/usrp_burn_db_eeprom.cpp
index 7ebbe7756..9dfce141b 100644
--- a/host/utils/usrp_burn_db_eeprom.cpp
+++ b/host/utils/usrp_burn_db_eeprom.cpp
@@ -62,7 +62,7 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){
//make the device and extract the dboard w/ property
device::sptr dev = device::make(args);
- uhd::property_tree::sptr tree = (*dev)[0].as<uhd::property_tree::sptr>();
+ uhd::property_tree::sptr tree = dev->get_tree();
const uhd::property_tree::path_type db_root = "/mboards/0/dboards";
std::vector<std::string> dboard_names = tree->list(db_root);
if (dboard_names.size() == 1 and slot.empty()) slot = dboard_names.front();