diff options
author | Josh Blum <josh@joshknows.com> | 2010-09-30 11:05:33 -0700 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2010-09-30 11:05:33 -0700 |
commit | a4f8ad59b2abc6d4b1a6c65aa2652083486e3065 (patch) | |
tree | 913ee903f92527980d8bf1f893d9f7d7a58547c7 /host/lib/usrp/misc_utils.cpp | |
parent | b8e62bb9bf86d4804defe738b2a7140cd9417a6f (diff) | |
download | uhd-a4f8ad59b2abc6d4b1a6c65aa2652083486e3065.tar.gz uhd-a4f8ad59b2abc6d4b1a6c65aa2652083486e3065.tar.bz2 uhd-a4f8ad59b2abc6d4b1a6c65aa2652083486e3065.zip |
usrp: added subdev enabled property
the dboard manager will disable all subdevs at startup and shutdown
setting the subdev spec will enable only the subdevs in use
all dboards are currently implemented as always enabled
nothing tested
Diffstat (limited to 'host/lib/usrp/misc_utils.cpp')
-rw-r--r-- | host/lib/usrp/misc_utils.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/host/lib/usrp/misc_utils.cpp b/host/lib/usrp/misc_utils.cpp index 5cfcdc8d3..05308baba 100644 --- a/host/lib/usrp/misc_utils.cpp +++ b/host/lib/usrp/misc_utils.cpp @@ -17,6 +17,7 @@ #include <uhd/usrp/misc_utils.hpp> #include <uhd/utils/assert.hpp> +#include <uhd/utils/algorithm.hpp> #include <uhd/utils/gain_group.hpp> #include <uhd/usrp/dboard_id.hpp> #include <uhd/usrp/subdev_props.hpp> @@ -186,6 +187,22 @@ static void verify_xx_subdev_spec( "Validate %s subdev spec failed: %s\n %s" ) % xx_type % subdev_spec.to_string() % e.what())); } + + //now use the subdev spec to enable the subdevices in use and vice-versa + BOOST_FOREACH(const std::string &db_name, mboard[dboard_names_prop].as<prop_names_t>()){ + wax::obj dboard = mboard[named_prop_t(dboard_prop, db_name)]; + BOOST_FOREACH(const std::string &sd_name, dboard[DBOARD_PROP_SUBDEV_NAMES].as<prop_names_t>()){ + try{ + bool enable = std::has(subdev_spec, subdev_spec_pair_t(db_name, sd_name)); + dboard[named_prop_t(DBOARD_PROP_SUBDEV, sd_name)][SUBDEV_PROP_ENABLED] = enable; + } + catch(const std::exception &e){ + throw std::runtime_error(str(boost::format( + "Cannot set enabled property on subdevice %s:%s\n %s" + ) % db_name % sd_name % e.what())); + } + } + } } void usrp::verify_rx_subdev_spec(subdev_spec_t &subdev_spec, wax::obj mboard){ |