aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/include/uhdlib
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2019-06-03 23:28:19 -0700
committerMartin Braun <martin.braun@ettus.com>2019-11-26 11:49:24 -0800
commit01f08d3fa5ae0cd8a2fc3c6e1112117a1f7f9768 (patch)
tree7fb49f7e0ab5329c29c292df001cd61390eae5f0 /host/lib/include/uhdlib
parent802afa6eecee368ec8e28044ce22fd39c0f93ae8 (diff)
downloaduhd-01f08d3fa5ae0cd8a2fc3c6e1112117a1f7f9768.tar.gz
uhd-01f08d3fa5ae0cd8a2fc3c6e1112117a1f7f9768.tar.bz2
uhd-01f08d3fa5ae0cd8a2fc3c6e1112117a1f7f9768.zip
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.
Diffstat (limited to 'host/lib/include/uhdlib')
-rw-r--r--host/lib/include/uhdlib/rfnoc/graph.hpp7
-rw-r--r--host/lib/include/uhdlib/rfnoc/node_accessor.hpp11
2 files changed, 18 insertions, 0 deletions
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<size_t>& connected_inputs,
+ const std::vector<size_t>& connected_outputs)
+ {
+ return node->check_topology(connected_inputs, connected_outputs);
+ }
};