aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/mpmd/mpmd_impl.hpp
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2017-06-02 19:12:54 -0700
committerMartin Braun <martin.braun@ettus.com>2017-12-22 15:03:59 -0800
commit039de2841b3e96421fe0b868b7c97825b2023a66 (patch)
tree308f92891d4d9238b4fca1c029923057498f9097 /host/lib/usrp/mpmd/mpmd_impl.hpp
parent365c57b356c5814ac647233efb4a099b05a8c8e9 (diff)
downloaduhd-039de2841b3e96421fe0b868b7c97825b2023a66.tar.gz
uhd-039de2841b3e96421fe0b868b7c97825b2023a66.tar.bz2
uhd-039de2841b3e96421fe0b868b7c97825b2023a66.zip
mpm/mpmd: Allow SID increment; more fixes for multi-usrp operation
Diffstat (limited to 'host/lib/usrp/mpmd/mpmd_impl.hpp')
-rw-r--r--host/lib/usrp/mpmd/mpmd_impl.hpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/host/lib/usrp/mpmd/mpmd_impl.hpp b/host/lib/usrp/mpmd/mpmd_impl.hpp
index 3bf8293cd..3051ada71 100644
--- a/host/lib/usrp/mpmd/mpmd_impl.hpp
+++ b/host/lib/usrp/mpmd/mpmd_impl.hpp
@@ -73,6 +73,9 @@ class mpmd_mboard_impl
);
/*** Public attributes ***************************************************/
+ //! These are the args given by the user, with some filtering/preprocessing
+ uhd::device_addr_t mb_args;
+
//! Device information is read back via MPM and stored here.
uhd::device_addr_t device_info;
@@ -93,7 +96,9 @@ class mpmd_mboard_impl
uhd::sid_t allocate_sid(const uint16_t port,
const uhd::sid_t address,
const uint32_t xbar_src_addr,
- const uint32_t xbar_src_dst);
+ const uint32_t xbar_src_dst,
+ const uint32_t dst_addr
+ );
//! Configure a crossbar to have a certain local address
void set_xbar_local_addr(const size_t xbar_index, const size_t local_addr);
@@ -141,6 +146,11 @@ class mpmd_impl : public uhd::usrp::device3_impl
const uhd::device_addr_t&);
private:
+ uhd::device_addr_t get_rx_hints(size_t mb_index);
+
+ /*************************************************************************
+ * Private methods/helpers
+ ************************************************************************/
/*! Initialize a single motherboard
*
* - See mpmd_mboard_impl ctor for details
@@ -160,8 +170,6 @@ class mpmd_impl : public uhd::usrp::device3_impl
//! Configure all blocks that require access to an RPC client
void setup_rpc_blocks(const uhd::device_addr_t &block_args);
- uhd::device_addr_t get_rx_hints(size_t mb_index);
-
/*! Returns a valid local address for a crossbar
*
* \returns Valid local address
@@ -169,7 +177,14 @@ class mpmd_impl : public uhd::usrp::device3_impl
*/
size_t allocate_xbar_local_addr();
+ /*! Return the index of the motherboard carrying the crossbar at \p remote_addr
+ */
+ size_t identify_mboard_by_sid(const size_t remote_addr);
+
+ /*************************************************************************
+ * Private attributes
+ ************************************************************************/
uhd::dict<std::string, std::string> recv_args;
uhd::dict<std::string, std::string> send_args;