aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--host/lib/rfnoc/legacy_compat.cpp32
1 files changed, 9 insertions, 23 deletions
diff --git a/host/lib/rfnoc/legacy_compat.cpp b/host/lib/rfnoc/legacy_compat.cpp
index f6e3d5eb5..0ccc5d19d 100644
--- a/host/lib/rfnoc/legacy_compat.cpp
+++ b/host/lib/rfnoc/legacy_compat.cpp
@@ -565,35 +565,21 @@ private: // methods
}
//! Given mboard_index(m), radio_index(r), and port_index(p),
- // this function return the index of a block on the input blocklist that match m,r,p
- size_t find_block(const std::vector<source_port_t> &source_port_list, const size_t &m, const size_t &r, const size_t &p)
+ // this function returns the index of a block on the input block list that match m,r,p
+ template <typename T>
+ size_t find_block(const std::vector<T> &port_list, const size_t &m, const size_t &r, const size_t &p)
{
size_t index = 0;
- for (auto port : source_port_list)
+ for (auto port : port_list)
{
- auto source_block_id = (port.first)->get_block_id();
- if (p == port.second && r == source_block_id.get_block_count() && m == source_block_id.get_device_no())
- {
- return index;
- }
- index++;
- }
- }
-
- //! Given mboard_index(m), radio_index(r), and port_index(p),
- // this function return the index of a block on the input blocklist that match m,r,p
- size_t find_block(const std::vector<sink_port_t> &sink_port_list, const size_t &m, const size_t &r, const size_t &p)
- {
- size_t index = 0;
- for (auto port : sink_port_list)
- {
- auto sink_block_id = (port.first)->get_block_id();
- if (p == port.second && r == sink_block_id.get_block_count() && m == sink_block_id.get_device_no())
+ auto block_id = (port.first)->get_block_id();
+ if (p == port.second && r == block_id.get_block_count() && m == block_id.get_device_no())
{
return index;
}
index++;
}
+ throw uhd::runtime_error((boost::format("Could not find block in list for device %d, radio %d, and port %d") % m % r % p).str());
}
template <uhd::direction_t dir>
@@ -605,8 +591,8 @@ private: // methods
block_name_to_block_map_t legacy_block_map = get_legacy_blocks(_device);
auto radio_src_flat = _flatten_blocks_by_n_ports(legacy_block_map[RADIO_BLOCK_NAME].first);
auto radio_snk_flat = _flatten_blocks_by_n_ports(legacy_block_map[RADIO_BLOCK_NAME].second);
- size_t index_src = find_block(radio_src_flat, mboard_idx, radio_index, port_index);
- size_t index_snk = find_block(radio_snk_flat, mboard_idx, radio_index, port_index);
+ size_t index_src = find_block<source_port_t>(radio_src_flat, mboard_idx, radio_index, port_index);
+ size_t index_snk = find_block<sink_port_t>(radio_snk_flat, mboard_idx, radio_index, port_index);
if (dir == uhd::TX_DIRECTION){
if (_has_sramfifo){
auto sfifo_snk_flat = _flatten_blocks_by_n_ports(legacy_block_map[SFIFO_BLOCK_NAME].second);