aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/include/uhdlib/rfnoc/mb_iface.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'host/lib/include/uhdlib/rfnoc/mb_iface.hpp')
-rw-r--r--host/lib/include/uhdlib/rfnoc/mb_iface.hpp51
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;
};