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.hpp52
1 files changed, 25 insertions, 27 deletions
diff --git a/host/lib/include/uhdlib/rfnoc/mb_iface.hpp b/host/lib/include/uhdlib/rfnoc/mb_iface.hpp
index 60afa92fa..ce1106c4c 100644
--- a/host/lib/include/uhdlib/rfnoc/mb_iface.hpp
+++ b/host/lib/include/uhdlib/rfnoc/mb_iface.hpp
@@ -7,7 +7,7 @@
#ifndef INCLUDED_LIBUHD_MB_IFACE_HPP
#define INCLUDED_LIBUHD_MB_IFACE_HPP
-#include <uhdlib/rfnoc/chdr_types.hpp>
+#include <uhdlib/rfnoc/rfnoc_common.hpp>
#include <memory>
namespace uhd { namespace rfnoc {
@@ -22,54 +22,52 @@ namespace uhd { namespace rfnoc {
* It's up to the various device implementations (e.g., x300_impl) to implement
* this interface.
*/
-class mb_iface {
+class mb_iface
+{
public:
using uptr = std::unique_ptr<mb_iface>;
- virtual ~mb_iface() = 0;
+ virtual ~mb_iface() = default;
- /*! Return the RFNoC protocol version for this motherboard
+ /*! Return the RFNoC protocol version of the firmware running on this motherboard
*/
virtual uint16_t get_proto_ver() = 0;
- /*! Return the CHDR width for this motherboard
+ /*! Return the CHDR width of the firmware running on this motherboard
*/
- virtual chdr_w_t get_chdr_width() = 0;
+ virtual chdr_w_t get_chdr_w() = 0;
- /*! Set the device ID of this motherboard
+ /*! Get the device ID assigned to the motherboard
*
- * Every motherboard in a multi-USRP setup needs a unique device ID. It is
- * up to the rfnoc_graph to choose the various IDs, and then call this
- * function to set it.
+ * A freshly reset motherboard should return 0.
+ *
+ * \returns the motherboard's device ID
*/
- virtual void set_device_id(const uint16_t id) = 0;
+ virtual device_id_t get_remote_device_id() = 0;
- /*! Get device ID
- *
- * Returns the value previously written by set_device_id(). A freshly
- * resetted motherboard which has not been assigned a device ID should
- * return 0xFFFF.
+ /*! Get the local (software) device IDs on this motherboard that can actively
+ * communicate with the sea of RFNoC FPGAs. The number of local devices returned
+ * should be equal to the number of physical links on the motherboard that are
+ * actively connected.
*
- * \returns the motherboard's device ID
+ * \returns The active software device IDs
*/
- virtual uint16_t get_device_id() = 0;
+ virtual std::vector<device_id_t> get_local_device_ids() = 0;
/*! Reset the device
*/
virtual void reset_network() = 0;
- /*! Return a list of all physical links available from the current UHD
- * session to the motherboard.
- *
- * FIXME determine appropriate return type
+ /*! Create a control transport
*/
- //virtual <link info> enumerate_links() = 0;
+ virtual chdr_ctrl_xport_t make_ctrl_transport(
+ device_id_t local_device_id, const sep_id_t& src_epid) = 0;
- /*!
- *
- * FIXME determine appropriate return type and arg types
+ /*! Create a data transport
*/
- //virtual link_iface::uptr create_link(<link_params>) = 0;
+ virtual chdr_data_xport_t make_data_transport(device_id_t local_device_id,
+ const sep_id_t& src_epid,
+ const device_addr_t& xport_args) = 0;
};
}} /* namespace uhd::rfnoc */