summaryrefslogtreecommitdiffstats
path: root/include/usrp_uhd
diff options
context:
space:
mode:
Diffstat (limited to 'include/usrp_uhd')
-rw-r--r--include/usrp_uhd/Makefile.am1
-rw-r--r--include/usrp_uhd/props.hpp25
-rw-r--r--include/usrp_uhd/usrp/dboard/base.hpp8
-rw-r--r--include/usrp_uhd/usrp/dboard/manager.hpp19
-rw-r--r--include/usrp_uhd/usrp/mboard/test.hpp4
-rw-r--r--include/usrp_uhd/usrp/usrp.hpp4
-rw-r--r--include/usrp_uhd/utils.hpp30
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 */