diff options
-rw-r--r-- | host/lib/rfnoc/graph.cpp | 45 |
1 files changed, 41 insertions, 4 deletions
diff --git a/host/lib/rfnoc/graph.cpp b/host/lib/rfnoc/graph.cpp index 9b8b9ec59..897eade57 100644 --- a/host/lib/rfnoc/graph.cpp +++ b/host/lib/rfnoc/graph.cpp @@ -709,11 +709,48 @@ void graph_t::_check_topology() } if (!node_accessor.check_topology(node, connected_inputs, connected_outputs)) { + std::ostringstream input_topology; + input_topology << " requested inputs: ("; + for (auto connected_input : connected_inputs) { + input_topology << connected_input; + if (connected_input != connected_inputs.back()) { + input_topology << ", "; + } + } + input_topology << ")"; + input_topology << " valid inputs: ("; + for (size_t expected_input = 0; expected_input < node->get_num_input_ports(); + expected_input++) { + input_topology << expected_input; + if (expected_input < node->get_num_input_ports() - 1) { + input_topology << ", "; + } + } + input_topology << ")"; + + std::ostringstream output_topology; + output_topology << " requested outputs: ("; + for (auto connected_output : connected_outputs) { + output_topology << connected_output; + if (connected_output != connected_outputs.back()) { + output_topology << ", "; + } + } + output_topology << ")"; + output_topology << " valid outputs: ("; + for (size_t expected_output = 0; + expected_output < node->get_num_output_ports(); + expected_output++) { + output_topology << expected_output; + if (expected_output < node->get_num_output_ports() - 1) { + output_topology << ", "; + } + } + output_topology << ")"; + UHD_LOG_ERROR(LOG_ID, - "Node " << node->get_unique_id() - << "cannot handle its current topology! (" - << connected_inputs.size() << "inputs, " - << connected_outputs.size() << " outputs)"); + "Node " << node->get_unique_id() << " using invalid inputs or outputs! " + << input_topology.str() << ", " << output_topology.str()); topo_ok = false; } } |