diff options
Diffstat (limited to 'host/lib')
-rw-r--r-- | host/lib/rfnoc/legacy_compat.cpp | 32 |
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); |