diff options
author | Martin Braun <martin.braun@ettus.com> | 2017-06-02 19:12:54 -0700 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2017-12-22 15:03:59 -0800 |
commit | 039de2841b3e96421fe0b868b7c97825b2023a66 (patch) | |
tree | 308f92891d4d9238b4fca1c029923057498f9097 /host/lib/usrp/mpmd/mpmd_impl.hpp | |
parent | 365c57b356c5814ac647233efb4a099b05a8c8e9 (diff) | |
download | uhd-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.hpp | 21 |
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; |