From 89152d1ffe452438db46932ebc62d5ccc5b79208 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Fri, 5 Feb 2010 11:36:17 -0800 Subject: Made get_link the only way to create nested props. Removed the obj::ptr and sptr typedefs. The dboard manager now must store not the subdevs, but their proxies. --- lib/usrp/dboard/manager.cpp | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) (limited to 'lib/usrp/dboard/manager.cpp') diff --git a/lib/usrp/dboard/manager.cpp b/lib/usrp/dboard/manager.cpp index 12cfdd156..759cb20b8 100644 --- a/lib/usrp/dboard/manager.cpp +++ b/lib/usrp/dboard/manager.cpp @@ -140,23 +140,37 @@ manager::manager( base::sptr xcvr_dboard = rx_dboard_ctor( base::ctor_args_t(name, dboard_interface) ); - _rx_dboards[name] = xcvr_dboard; - _tx_dboards[name] = xcvr_dboard; + //create a rx proxy for this xcvr board + _rx_dboards[name] = subdev_proxy::sptr( + new subdev_proxy(xcvr_dboard, subdev_proxy::RX_TYPE) + ); + //create a tx proxy for this xcvr board + _tx_dboards[name] = subdev_proxy::sptr( + new subdev_proxy(xcvr_dboard, subdev_proxy::TX_TYPE) + ); } } //make tx and rx subdevs (separate subdevs for rx and tx dboards) else{ //make the rx subdevs BOOST_FOREACH(std::string name, ctor_to_names_map[rx_dboard_ctor]){ - _rx_dboards[name] = rx_dboard_ctor( + base::sptr rx_dboard = rx_dboard_ctor( base::ctor_args_t(name, dboard_interface) ); + //create a rx proxy for this rx board + _rx_dboards[name] = subdev_proxy::sptr( + new subdev_proxy(rx_dboard, subdev_proxy::RX_TYPE) + ); } //make the tx subdevs BOOST_FOREACH(std::string name, ctor_to_names_map[tx_dboard_ctor]){ - _tx_dboards[name] = tx_dboard_ctor( + base::sptr tx_dboard = tx_dboard_ctor( base::ctor_args_t(name, dboard_interface) ); + //create a tx proxy for this tx board + _tx_dboards[name] = subdev_proxy::sptr( + new subdev_proxy(tx_dboard, subdev_proxy::TX_TYPE) + ); } } } @@ -173,20 +187,18 @@ prop_names_t manager::get_tx_subdev_names(void){ return get_map_keys(_tx_dboards); } -wax::obj::sptr manager::get_rx_subdev(const std::string &subdev_name){ +wax::obj manager::get_rx_subdev(const std::string &subdev_name){ if (_rx_dboards.count(subdev_name) == 0) throw std::invalid_argument( str(boost::format("Unknown rx subdev name %s") % subdev_name) ); - return wax::obj::sptr(new subdev_proxy( - _rx_dboards[subdev_name], subdev_proxy::RX_TYPE) - ); + //get a link to the rx subdev proxy + return wax::cast(_rx_dboards[subdev_name])->get_link(); } -wax::obj::sptr manager::get_tx_subdev(const std::string &subdev_name){ +wax::obj manager::get_tx_subdev(const std::string &subdev_name){ if (_tx_dboards.count(subdev_name) == 0) throw std::invalid_argument( str(boost::format("Unknown tx subdev name %s") % subdev_name) ); - return wax::obj::sptr(new subdev_proxy( - _tx_dboards[subdev_name], subdev_proxy::TX_TYPE) - ); + //get a link to the tx subdev proxy + return wax::cast(_tx_dboards[subdev_name])->get_link(); } -- cgit v1.2.3