18 #include <boost/units/detail/utility.hpp> 22 namespace uhd {
namespace rfnoc {
33 public std::enable_shared_from_this<rfnoc_graph>
39 using sptr = std::shared_ptr<rfnoc_graph>;
78 virtual std::vector<block_id_t> find_blocks(
79 const std::string& block_id_hint)
const = 0;
84 std::vector<block_id_t>
find_blocks(
const std::string& block_id_hint)
const 86 std::vector<block_id_t> all_block_ids = find_blocks(block_id_hint);
87 std::vector<block_id_t> filt_block_ids;
88 for (
size_t i = 0; i < all_block_ids.size(); i++) {
89 if (has_block<T>(all_block_ids[i])) {
90 filt_block_ids.push_back(all_block_ids[i]);
93 return filt_block_ids;
102 virtual bool has_block(
const block_id_t& block_id)
const = 0;
109 template <
typename T>
112 return has_block(block_id)
113 && bool(std::dynamic_pointer_cast<T>(get_block(block_id)));
140 template <
typename T>
143 std::shared_ptr<T> blk = std::dynamic_pointer_cast<T>(get_block(block_id));
148 std::string(
"This device does not have a block of type ")
149 + boost::units::detail::demangle(
typeid(T).name())
165 virtual bool is_connectable(
const block_id_t& src_blk,
168 size_t dst_port) = 0;
189 virtual void connect(
const block_id_t& src_blk,
193 bool is_back_edge =
false) = 0;
223 virtual void connect(
const block_id_t& src_blk,
242 virtual void disconnect(
const block_id_t& src_blk,
245 size_t dst_port) = 0;
256 virtual void disconnect(
const std::string& streamer_id) = 0;
268 virtual void disconnect(
const std::string& streamer_id,
size_t port) = 0;
279 virtual std::vector<uhd::transport::adapter_id_t> enumerate_adapters_from_src(
280 const block_id_t& src_blk,
size_t src_port) = 0;
291 virtual std::vector<uhd::transport::adapter_id_t> enumerate_adapters_to_dst(
292 const block_id_t& dst_blk,
size_t dst_port) = 0;
303 virtual std::vector<graph_edge_t> enumerate_static_connections()
const = 0;
312 virtual std::vector<graph_edge_t> enumerate_active_connections() = 0;
321 virtual void commit() = 0;
370 virtual size_t get_num_mboards()
const = 0;
381 virtual std::shared_ptr<mb_controller> get_mb_controller(
382 const size_t mb_index = 0) = 0;
418 virtual bool synchronize_devices(
std::shared_ptr< rx_streamer > sptr
Definition: stream.hpp:169
bool has_block(const block_id_t &block_id) const
Definition: rfnoc_graph.hpp:110
std::string to_string() const
Return a string like this: "0/FFT#1" (includes all components, if set)
boost::noncopyable noncopyable
Definition: noncopyable.hpp:45
Definition: exception.hpp:58
Definition: time_spec.hpp:28
std::shared_ptr< T > get_block(const block_id_t &block_id) const
Definition: rfnoc_graph.hpp:141
size_t adapter_id_t
Host transport adapter ID.
Definition: adapter_id.hpp:17
Definition: block_id.hpp:39
std::shared_ptr< rfnoc_graph > sptr
Definition: rfnoc_graph.hpp:39
Definition: build_info.hpp:12
Definition: rfnoc_graph.hpp:32
Definition: stream.hpp:47
std::shared_ptr< noc_block_base > sptr
Definition: noc_block_base.hpp:48
#define UHD_API
Definition: config.h:87
string release
Definition: conf.py:29
std::shared_ptr< tx_streamer > sptr
Definition: stream.hpp:267
virtual ~rfnoc_graph()
Definition: rfnoc_graph.hpp:41
std::vector< block_id_t > find_blocks(const std::string &block_id_hint) const
Definition: rfnoc_graph.hpp:84
std::shared_ptr< property_tree > sptr
Definition: property_tree.hpp:223
Definition: device_addr.hpp:37