aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2022-02-03 14:32:43 +0100
committerAaron Rossetto <aaron.rossetto@ni.com>2022-02-04 13:13:59 -0600
commitc1e26b4a260d6f9210f3c31b9f7311be833e8cad (patch)
treed00190a041fec11a68e21c2aa1dfb4b0642fa995
parent0b5e3f2df01216a821ee3164f237711457500f5e (diff)
downloaduhd-c1e26b4a260d6f9210f3c31b9f7311be833e8cad.tar.gz
uhd-c1e26b4a260d6f9210f3c31b9f7311be833e8cad.tar.bz2
uhd-c1e26b4a260d6f9210f3c31b9f7311be833e8cad.zip
uhd: rfnoc: Let connect_through_blocks() return edge list
This changes the return value of connect_through_blocks() from void to a list of edges. If the connection can be made, then it will now return the list of connections between the source block and port.
-rw-r--r--host/include/uhd/utils/graph_utils.hpp9
-rw-r--r--host/lib/utils/graph_utils.cpp3
2 files changed, 10 insertions, 2 deletions
diff --git a/host/include/uhd/utils/graph_utils.hpp b/host/include/uhd/utils/graph_utils.hpp
index c4d77b093..6b264032c 100644
--- a/host/include/uhd/utils/graph_utils.hpp
+++ b/host/include/uhd/utils/graph_utils.hpp
@@ -53,13 +53,20 @@ std::vector<graph_edge_t> UHD_API get_block_chain(const rfnoc_graph::sptr graph,
/*! Connect desired blocks by whatever path that can be found
*
+ * This will find the most direct path from a source block to a destination
+ * block. If these blocks are statically connected it will simply call connect()
+ * on all intermediate connections. If not, it will create a dynamic connection
+ * between stream endpoints. If this is not possible, an exception is thrown.
+ *
* \param graph The rfnoc_graph that is being examined
* \param src_blk Source block's ID
* \param src_port Block port where the path starts
* \param dst_blk Destination block's ID
* \param dst_port Block port where the path ends
+ *
+ * \return The edge list representing the data path requested
*/
-void UHD_API connect_through_blocks(rfnoc_graph::sptr graph,
+std::vector<graph_edge_t> UHD_API connect_through_blocks(rfnoc_graph::sptr graph,
const block_id_t src_blk,
const size_t src_port,
const block_id_t dst_blk,
diff --git a/host/lib/utils/graph_utils.cpp b/host/lib/utils/graph_utils.cpp
index 513f7b709..89df30e15 100644
--- a/host/lib/utils/graph_utils.cpp
+++ b/host/lib/utils/graph_utils.cpp
@@ -83,7 +83,7 @@ std::vector<graph_edge_t> get_block_chain(const rfnoc_graph::sptr graph,
}
-void connect_through_blocks(rfnoc_graph::sptr graph,
+std::vector<graph_edge_t> connect_through_blocks(rfnoc_graph::sptr graph,
const block_id_t src_blk,
const size_t src_port,
const block_id_t dst_blk,
@@ -159,6 +159,7 @@ void connect_through_blocks(rfnoc_graph::sptr graph,
UHD_LOG_TRACE("GRAPH_UTILS", err_msg);
throw uhd::runtime_error("[graph_utils] " + err_msg);
}
+ return block_chain;
}
}} // namespace uhd::rfnoc