diff options
| author | Josh Blum <josh@joshknows.com> | 2010-01-26 11:29:14 -0800 | 
|---|---|---|
| committer | Josh Blum <josh@joshknows.com> | 2010-01-26 11:29:14 -0800 | 
| commit | a98e387578a3aceb15e2bcce4a9cc54d78c30dda (patch) | |
| tree | b5e34c422c36a16a3f2379698e81af4c00a66ee3 /include | |
| parent | 998aebf83c2796fdfabc2efd804ca14103adcaaf (diff) | |
| download | uhd-a98e387578a3aceb15e2bcce4a9cc54d78c30dda.tar.gz uhd-a98e387578a3aceb15e2bcce4a9cc54d78c30dda.tar.bz2 uhd-a98e387578a3aceb15e2bcce4a9cc54d78c30dda.zip  | |
Switched from indexed properties to named properties.
Added some new properties for getting a list of antenna names,
pps sources, ref sources...
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 */  | 
