diff options
Diffstat (limited to 'host/lib/include/uhdlib/rfnoc/mb_iface.hpp')
-rw-r--r-- | host/lib/include/uhdlib/rfnoc/mb_iface.hpp | 51 |
1 files changed, 46 insertions, 5 deletions
diff --git a/host/lib/include/uhdlib/rfnoc/mb_iface.hpp b/host/lib/include/uhdlib/rfnoc/mb_iface.hpp index ce1106c4c..cca8dcab8 100644 --- a/host/lib/include/uhdlib/rfnoc/mb_iface.hpp +++ b/host/lib/include/uhdlib/rfnoc/mb_iface.hpp @@ -7,11 +7,20 @@ #ifndef INCLUDED_LIBUHD_MB_IFACE_HPP #define INCLUDED_LIBUHD_MB_IFACE_HPP +#include <uhdlib/rfnoc/chdr_ctrl_xport.hpp> #include <uhdlib/rfnoc/rfnoc_common.hpp> #include <memory> namespace uhd { namespace rfnoc { +// FIXME: Update this +class chdr_rx_data_xport +{ +public: + using uptr = std::unique_ptr<chdr_rx_data_xport>; +}; + +using chdr_tx_data_xport = chdr_rx_data_xport; /*! Motherboard (backchannel) interface * @@ -59,14 +68,46 @@ public: virtual void reset_network() = 0; /*! Create a control transport + * + * This is usually called once per motherboard, since there is only one + * control transport required to talk to all the blocks on the control + * crossbar. + * + * \param local_device_id ID for the host transport adapter to use + * \param local_epid Host streaming endpoint ID + * \return A CHDR control transport */ - virtual chdr_ctrl_xport_t make_ctrl_transport( - device_id_t local_device_id, const sep_id_t& src_epid) = 0; + virtual chdr_ctrl_xport::sptr make_ctrl_transport( + device_id_t local_device_id, const sep_id_t& local_epid) = 0; - /*! Create a data transport + /*! Create an RX data transport + * + * This is typically called once per streaming channel. + * + * \param local_device_id ID for the host transport adapter to use + * \param local_epid Host (sink) streaming endpoint ID + * \param remote_epid Remote device (source) streaming endpoint ID + * \param xport_args Transport configuration args + * \return A CHDR RX data transport + */ + virtual chdr_rx_data_xport::uptr make_rx_data_transport(device_id_t local_device_id, + const sep_id_t& local_epid, + const sep_id_t& remote_epid, + const device_addr_t& xport_args) = 0; + + /*! Create an TX data transport + * + * This is typically called once per streaming channel. + * + * \param local_device_id ID for the host transport adapter to use + * \param local_epid Host (source) streaming endpoint ID + * \param remote_epid Remote device (sink) streaming endpoint ID + * \param xport_args Transport configuration args + * \return A CHDR TX data transport */ - virtual chdr_data_xport_t make_data_transport(device_id_t local_device_id, - const sep_id_t& src_epid, + virtual chdr_tx_data_xport::uptr make_tx_data_transport(device_id_t local_device_id, + const sep_id_t& local_epid, + const sep_id_t& remote_epid, const device_addr_t& xport_args) = 0; }; |