From da89292f211fab421e5200f4831507ab5a4965a1 Mon Sep 17 00:00:00 2001 From: Martin Braun Date: Thu, 20 Jun 2019 14:30:55 -0700 Subject: rfnoc: graph: Initialize properties on all nodes during init This will call init_props() on every block after the device initialization is complete, but before control returns to the user. --- host/lib/include/uhdlib/rfnoc/block_container.hpp | 4 ++++ host/lib/rfnoc/block_container.cpp | 7 +++++++ host/lib/rfnoc/rfnoc_graph.cpp | 3 +++ 3 files changed, 14 insertions(+) (limited to 'host/lib') diff --git a/host/lib/include/uhdlib/rfnoc/block_container.hpp b/host/lib/include/uhdlib/rfnoc/block_container.hpp index b43a7bc61..3c75892a4 100644 --- a/host/lib/include/uhdlib/rfnoc/block_container.hpp +++ b/host/lib/include/uhdlib/rfnoc/block_container.hpp @@ -43,6 +43,10 @@ public: */ noc_block_base::sptr get_block(const block_id_t& block_id) const; + /*! Initialize properties on all registered blocks + */ + void init_props(); + /*! Call shutdown() on all blocks * * After calling this, blocks won't be able to do anything anymore! diff --git a/host/lib/rfnoc/block_container.cpp b/host/lib/rfnoc/block_container.cpp index 6bbb3828b..e7fd396ba 100644 --- a/host/lib/rfnoc/block_container.cpp +++ b/host/lib/rfnoc/block_container.cpp @@ -79,5 +79,12 @@ void block_container_t::shutdown() for (auto it = _blocks.begin(); it != _blocks.end(); ++it) { node_accessor.shutdown(it->get()); } +} +void block_container_t::init_props() +{ + node_accessor_t node_accessor{}; + for (auto it = _blocks.begin(); it != _blocks.end(); ++it) { + node_accessor.init_props(it->get()); + } } diff --git a/host/lib/rfnoc/rfnoc_graph.cpp b/host/lib/rfnoc/rfnoc_graph.cpp index 22fc8aee5..ca9c8573b 100644 --- a/host/lib/rfnoc/rfnoc_graph.cpp +++ b/host/lib/rfnoc/rfnoc_graph.cpp @@ -240,6 +240,9 @@ private: } } + UHD_LOG_TRACE("RFNOC::GRAPH", "Initializing properties on all blocks..."); + _block_registry->init_props(); + // Create graph, connect all static routes // FIXME } -- cgit v1.2.3