diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/usrp_uhd/Makefile.am | 1 | ||||
-rw-r--r-- | include/usrp_uhd/props.hpp | 25 | ||||
-rw-r--r-- | include/usrp_uhd/usrp/dboard/base.hpp | 8 | ||||
-rw-r--r-- | include/usrp_uhd/usrp/dboard/manager.hpp | 19 | ||||
-rw-r--r-- | include/usrp_uhd/usrp/mboard/test.hpp | 4 | ||||
-rw-r--r-- | include/usrp_uhd/usrp/usrp.hpp | 4 | ||||
-rw-r--r-- | include/usrp_uhd/utils.hpp | 30 |
7 files changed, 64 insertions, 27 deletions
diff --git a/include/usrp_uhd/Makefile.am b/include/usrp_uhd/Makefile.am index 40c7d9f99..fdb881498 100644 --- a/include/usrp_uhd/Makefile.am +++ b/include/usrp_uhd/Makefile.am @@ -11,4 +11,5 @@ this_include_HEADERS = \ device.hpp \ device_addr.hpp \ props.hpp \ + utils.hpp \ wax.hpp diff --git a/include/usrp_uhd/props.hpp b/include/usrp_uhd/props.hpp index c66f40674..6e416192c 100644 --- a/include/usrp_uhd/props.hpp +++ b/include/usrp_uhd/props.hpp @@ -6,6 +6,7 @@ #include <usrp_uhd/wax.hpp> #include <complex> #include <vector> +#include <stdint.h> #ifndef INCLUDED_USRP_UHD_PROPS_HPP #define INCLUDED_USRP_UHD_PROPS_HPP @@ -56,8 +57,9 @@ namespace usrp_uhd{ typedef std::vector<real_scalar_t> real_vec_t; typedef std::vector<complex_scalar_t> complex_vec_t; - //typedef for addressing indexable components - typedef boost::tuple<wax::type, size_t> indexed_prop_t; + //typedef for handling named properties + typedef std::vector<std::string> prop_names_t; + typedef boost::tuple<wax::type, std::string> named_prop_t; /*! * Possible device properties. @@ -65,7 +67,7 @@ namespace usrp_uhd{ enum device_prop_t{ DEVICE_PROP_NAME, //ro, std::string DEVICE_PROP_MBOARD, //ro, wax::obj - DEVICE_PROP_NUM_MBOARDS //ro, size_t + DEVICE_PROP_MBOARD_NAMES //ro, prop_names_t }; /*! @@ -76,16 +78,18 @@ namespace usrp_uhd{ MBOARD_PROP_MTU, //ro, size_t MBOARD_PROP_CLOCK_RATE, //ro, freq_t MBOARD_PROP_RX_DSP, //ro, wax::obj - MBOARD_PROP_NUM_RX_DSPS, //ro, size_t + MBOARD_PROP_RX_DSP_NAMES, //ro, prop_names_t MBOARD_PROP_TX_DSP, //ro, wax::obj - MBOARD_PROP_NUM_TX_DSPS, //ro, size_t + MBOARD_PROP_TX_DSP_NAMES, //ro, prop_names_t MBOARD_PROP_RX_DBOARD, //ro, wax::obj - MBOARD_PROP_NUM_RX_DBOARDS, //ro, size_t + MBOARD_PROP_RX_DBOARD_NAMES, //ro, prop_names_t MBOARD_PROP_TX_DBOARD, //ro, wax::obj - MBOARD_PROP_NUM_TX_DBOARDS, //ro, size_t + MBOARD_PROP_TX_DBOARD_NAMES, //ro, prop_names_t MBOARD_PROP_PPS_SOURCE, //rw, std::string (sma, mimo) + MBOARD_PROP_PPS_SOURCE_NAMES, //ro, prop_names_t MBOARD_PROP_PPS_POLARITY, //rw, int, +/- 1 MBOARD_PROP_REF_SOURCE, //rw, std::string (int, sma, mimo) + MBOARD_PROP_REF_SOURCE_NAMES, //ro, prop_names_t MBOARD_PROP_TIME_NOW, //wo, time_spec_t MBOARD_PROP_TIME_NEXT_PPS //wo, time_spec_t }; @@ -108,7 +112,7 @@ namespace usrp_uhd{ enum dboard_prop_t{ DBOARD_PROP_NAME, //ro, std::string DBOARD_PROP_SUBDEV, //ro, wax::obj - DBOARD_PROP_NUM_SUBDEVS, //ro, size_t + DBOARD_PROP_SUBDEV_NAMES, //ro, prop_names_t DBOARD_PROP_CODEC //ro, wax::obj }; @@ -121,7 +125,7 @@ namespace usrp_uhd{ CODEC_PROP_GAIN_MAX, //ro, gain_t CODEC_PROP_GAIN_MIN, //ro, gain_t CODEC_PROP_GAIN_STEP, //ro, gain_t - CODEC_PROP_NUM_GAINS, //ro, size_t + CODEC_PROP_GAIN_NAMES, //ro, prop_names_t CODEC_PROP_CLOCK_RATE //ro, freq_t }; @@ -134,11 +138,12 @@ namespace usrp_uhd{ SUBDEV_PROP_GAIN_MAX, //ro, gain_t SUBDEV_PROP_GAIN_MIN, //ro, gain_t SUBDEV_PROP_GAIN_STEP, //ro, gain_t - SUBDEV_PROP_NUM_GAINS, //ro, size_t + SUBDEV_PROP_GAIN_NAMES, //ro, prop_names_t SUBDEV_PROP_FREQ, //rw, freq_t SUBDEV_PROP_FREQ_MAX, //ro, freq_t SUBDEV_PROP_FREQ_MIN, //ro, freq_t SUBDEV_PROP_ANTENNA, //rw, std::string + SUBDEV_PROP_ANTENNA_NAMES, //ro, prop_names_t SUBDEV_PROP_ENABLED, //rw, bool SUBDEV_PROP_QUADRATURE, //ro, bool SUBDEV_PROP_IQ_SWAPPED, //ro, bool diff --git a/include/usrp_uhd/usrp/dboard/base.hpp b/include/usrp_uhd/usrp/dboard/base.hpp index 0c207f564..2b839a6fc 100644 --- a/include/usrp_uhd/usrp/dboard/base.hpp +++ b/include/usrp_uhd/usrp/dboard/base.hpp @@ -20,10 +20,10 @@ namespace usrp_uhd{ namespace usrp{ namespace dboard{ class base : boost::noncopyable{ public: typedef boost::shared_ptr<base> sptr; - //the constructor args consist of a subdev index and an interface + //the constructor args consist of a subdev name and an interface //derived classes should pass the args into the base class ctor //but should not have to deal with the internals of the args - typedef boost::tuple<size_t, interface::sptr> ctor_args_t; + typedef boost::tuple<std::string, interface::sptr> ctor_args_t; //structors base(ctor_args_t const&); @@ -36,11 +36,11 @@ public: virtual void tx_set(const wax::type &key, const wax::type &val) = 0; protected: - size_t get_subdev_index(void); + std::string get_subdev_name(void); interface::sptr get_interface(void); private: - size_t _subdev_index; + std::string _subdev_name; interface::sptr _dboard_interface; }; diff --git a/include/usrp_uhd/usrp/dboard/manager.hpp b/include/usrp_uhd/usrp/dboard/manager.hpp index d977fa527..4eaa9f889 100644 --- a/include/usrp_uhd/usrp/dboard/manager.hpp +++ b/include/usrp_uhd/usrp/dboard/manager.hpp @@ -5,8 +5,9 @@ #ifndef INCLUDED_USRP_UHD_USRP_DBOARD_MANAGER_HPP #define INCLUDED_USRP_UHD_USRP_DBOARD_MANAGER_HPP -#include <vector> +#include <map> #include <usrp_uhd/wax.hpp> +#include <usrp_uhd/props.hpp> #include <boost/utility.hpp> #include <boost/shared_ptr.hpp> #include <usrp_uhd/usrp/dboard/base.hpp> @@ -32,12 +33,12 @@ public: * * \param dboard_id the dboard id (rx or tx) * \param dboard_ctor the dboard constructor function pointer - * \param num_subdevs the number of subdevs in this dboard + * \param subdev_names the names of the subdevs on this dboard */ static void register_subdevs( dboard_id_t dboard_id, dboard_ctor_t dboard_ctor, - size_t num_subdevs + const prop_names_t &subdev_names ); public: @@ -51,16 +52,16 @@ public: ~manager(void); //interface - size_t get_num_rx_subdevs(void); - size_t get_num_tx_subdevs(void); - wax::obj::sptr get_rx_subdev(size_t subdev_index); - wax::obj::sptr get_tx_subdev(size_t subdev_index); + prop_names_t get_rx_subdev_names(void); + prop_names_t get_tx_subdev_names(void); + wax::obj::sptr get_rx_subdev(const std::string &subdev_name); + wax::obj::sptr get_tx_subdev(const std::string &subdev_name); private: //list of rx and tx dboards in this manager //each dboard here is actually a subdevice - std::vector<base::sptr> _rx_dboards; - std::vector<base::sptr> _tx_dboards; + std::map<std::string, base::sptr> _rx_dboards; + std::map<std::string, base::sptr> _tx_dboards; }; }}} //namespace diff --git a/include/usrp_uhd/usrp/mboard/test.hpp b/include/usrp_uhd/usrp/mboard/test.hpp index 10b46c7fc..4b28bba29 100644 --- a/include/usrp_uhd/usrp/mboard/test.hpp +++ b/include/usrp_uhd/usrp/mboard/test.hpp @@ -8,7 +8,7 @@ #include <usrp_uhd/usrp/mboard/base.hpp> #include <usrp_uhd/device_addr.hpp> #include <usrp_uhd/usrp/dboard/manager.hpp> -#include <vector> +#include <map> namespace usrp_uhd{ namespace usrp{ namespace mboard{ @@ -25,7 +25,7 @@ private: void get(const wax::type &, wax::type &); void set(const wax::type &, const wax::type &); - std::vector<dboard::manager::sptr> _dboard_managers; + std::map<std::string, dboard::manager::sptr> _dboard_managers; }; }}} //namespace diff --git a/include/usrp_uhd/usrp/usrp.hpp b/include/usrp_uhd/usrp/usrp.hpp index 7506f798f..239f8b494 100644 --- a/include/usrp_uhd/usrp/usrp.hpp +++ b/include/usrp_uhd/usrp/usrp.hpp @@ -4,7 +4,7 @@ #include <usrp_uhd/device.hpp> #include <usrp_uhd/usrp/mboard/base.hpp> -#include <vector> +#include <map> #ifndef INCLUDED_USRP_UHD_USRP_USRP_HPP #define INCLUDED_USRP_UHD_USRP_USRP_HPP @@ -29,7 +29,7 @@ private: void get(const wax::type &, wax::type &); void set(const wax::type &, const wax::type &); - std::vector<mboard::base::sptr> _mboards; + std::map<std::string, mboard::base::sptr> _mboards; boost::function<void(const device::send_args_t &)> _send_raw_cb; boost::function<void(const device::recv_args_t &)> _recv_raw_cb; }; diff --git a/include/usrp_uhd/utils.hpp b/include/usrp_uhd/utils.hpp new file mode 100644 index 000000000..6fe5bd4d4 --- /dev/null +++ b/include/usrp_uhd/utils.hpp @@ -0,0 +1,30 @@ +// +// Copyright 2010 Ettus Research LLC +// + +#include <boost/foreach.hpp> +#include <map> +#include <vector> + +#ifndef INCLUDED_USRP_UHD_UTILS_HPP +#define INCLUDED_USRP_UHD_UTILS_HPP + +namespace usrp_uhd{ + +template <class Key, class T> +std::vector<Key> get_map_keys(const std::map<Key, T> &m){ + std::vector<Key> v; + std::pair<Key, T> p; + BOOST_FOREACH(p, m){ + v.push_back(p.first); + } + return v; +} + +//TODO check name in vector of names + +//TODO optionally extract a name from the named_prop_t + +} //namespace usrp_uhd + +#endif /* INCLUDED_USRP_UHD_UTILS_HPP */ |