9 #ifndef INCLUDED_UHD_DEVICE3_HPP
10 #define INCLUDED_UHD_DEVICE3_HPP
15 #include <boost/core/demangle.hpp>
16 #include <boost/thread/mutex.hpp>
31 typedef boost::shared_ptr<device3>
sptr;
60 if (has_block(block_id)) {
61 return bool(boost::dynamic_pointer_cast<T>(get_block_ctrl(block_id)));
95 boost::shared_ptr<T> blk =
96 boost::dynamic_pointer_cast<T>(get_block_ctrl(block_id));
101 boost::format(
"This device does not have a block of type %s with ID: %s")
102 % boost::core::demangle(
typeid(T).name()) % block_id.
to_string()));
129 std::vector<rfnoc::block_id_t>
find_blocks(
const std::string& block_id_hint)
const;
133 template <
typename T>
134 std::vector<rfnoc::block_id_t>
find_blocks(
const std::string& block_id_hint)
const
136 std::vector<rfnoc::block_id_t> all_block_ids = find_blocks(block_id_hint);
137 std::vector<rfnoc::block_id_t> filt_block_ids;
138 for (
size_t i = 0; i < all_block_ids.size(); i++) {
139 if (has_block<T>(all_block_ids[i])) {
140 filt_block_ids.push_back(all_block_ids[i]);
143 return filt_block_ids;
Extends uhd::device for third-generation USRP devices.
Definition: device3.hpp:29
boost::mutex _block_ctrl_mutex
Mutex to protect access to members.
Definition: device3.hpp:152
std::vector< rfnoc::block_id_t > find_blocks(const std::string &block_id_hint) const
std::vector< rfnoc::block_id_t > find_blocks(const std::string &block_id_hint) const
Definition: device3.hpp:134
std::vector< rfnoc::block_ctrl_base::sptr > _rfnoc_block_ctrl
List of all RFNoC blocks available on this device.
Definition: device3.hpp:150
boost::shared_ptr< device3 > sptr
Definition: device3.hpp:31
virtual rfnoc::graph::sptr create_graph(const std::string &name="")=0
rfnoc::block_ctrl_base::sptr get_block_ctrl(const rfnoc::block_id_t &block_id) const
Returns a block controller class for an RFNoC block.
static sptr make(const device_addr_t &hint, const size_t which=0)
Same as uhd::device::make(), but will fail if not actually a device3.
boost::shared_ptr< T > get_block_ctrl(const rfnoc::block_id_t &block_id) const
Definition: device3.hpp:93
bool has_block(const rfnoc::block_id_t &block_id) const
Checks if an RFNoC block exists on the device.
bool has_block(const rfnoc::block_id_t &block_id) const
Definition: device3.hpp:58
Definition: device_addr.hpp:39
Definition: device.hpp:29
boost::shared_ptr< device > sptr
Definition: device.hpp:31
boost::shared_ptr< block_ctrl_base > sptr
Definition: block_ctrl_base.hpp:93
Definition: block_id.hpp:40
std::string to_string() const
Return a string like this: "0/FFT_1" (includes all components, if set)
boost::shared_ptr< uhd::rfnoc::graph > sptr
Definition: graph.hpp:20
#define UHD_API
Definition: config.h:68
Definition: build_info.hpp:13
Definition: exception.hpp:61