From 01f08d3fa5ae0cd8a2fc3c6e1112117a1f7f9768 Mon Sep 17 00:00:00 2001 From: Martin Braun Date: Mon, 3 Jun 2019 23:28:19 -0700 Subject: rfnoc: Add check_topology() API to nodes This API lets blocks decide if their current topology is OK for them, and make decisions based on their topology. --- host/lib/include/uhdlib/rfnoc/graph.hpp | 7 +++++++ host/lib/include/uhdlib/rfnoc/node_accessor.hpp | 11 +++++++++++ 2 files changed, 18 insertions(+) (limited to 'host/lib/include/uhdlib/rfnoc') diff --git a/host/lib/include/uhdlib/rfnoc/graph.hpp b/host/lib/include/uhdlib/rfnoc/graph.hpp index 49dc62551..4b08b5842 100644 --- a/host/lib/include/uhdlib/rfnoc/graph.hpp +++ b/host/lib/include/uhdlib/rfnoc/graph.hpp @@ -236,6 +236,13 @@ private: */ bool _assert_edge_props_consistent(rfnoc_graph_t::edge_descriptor edge); + /*! Query all blocks on their topology + * + * \throws uhd::runtime_error if any of the blocks doesn't like its + * configuration + */ + void _check_topology(); + /************************************************************************** * Attributes *************************************************************************/ diff --git a/host/lib/include/uhdlib/rfnoc/node_accessor.hpp b/host/lib/include/uhdlib/rfnoc/node_accessor.hpp index 827c87dd2..3351c5531 100644 --- a/host/lib/include/uhdlib/rfnoc/node_accessor.hpp +++ b/host/lib/include/uhdlib/rfnoc/node_accessor.hpp @@ -97,6 +97,17 @@ public: { node->receive_action(port_info, action); } + + /*! Check topology for this block + * + * See node_t::check_topology() for details + */ + bool check_topology(node_t* node, + const std::vector& connected_inputs, + const std::vector& connected_outputs) + { + return node->check_topology(connected_inputs, connected_outputs); + } }; -- cgit v1.2.3