18#define UHD_RFNOC_BLOCK_REGISTER_FOR_DEVICE_DIRECT( \
19 CLASS_NAME, NOC_ID, DEVICE_ID, BLOCK_NAME, MB_ACCESS, TB_CLOCK, CTRL_CLOCK) \
20 uhd::rfnoc::noc_block_base::sptr CLASS_NAME##_make( \
21 uhd::rfnoc::noc_block_base::make_args_ptr make_args) \
23 return std::make_shared<CLASS_NAME##_impl>(std::move(make_args)); \
25 UHD_STATIC_BLOCK(register_rfnoc_##CLASS_NAME) \
27 uhd::rfnoc::registry::register_block_direct(NOC_ID, \
33 &CLASS_NAME##_make); \
36#define UHD_RFNOC_BLOCK_REGISTER_DIRECT( \
37 CLASS_NAME, NOC_ID, BLOCK_NAME, TB_CLOCK, CTRL_CLOCK) \
38 UHD_RFNOC_BLOCK_REGISTER_FOR_DEVICE_DIRECT( \
39 CLASS_NAME, NOC_ID, ANY_DEVICE, BLOCK_NAME, false, TB_CLOCK, CTRL_CLOCK)
41#define UHD_RFNOC_BLOCK_REGISTER_DIRECT_MB_ACCESS( \
42 CLASS_NAME, NOC_ID, BLOCK_NAME, TB_CLOCK, CTRL_CLOCK) \
43 UHD_RFNOC_BLOCK_REGISTER_FOR_DEVICE_DIRECT( \
44 CLASS_NAME, NOC_ID, ANY_DEVICE, BLOCK_NAME, true, TB_CLOCK, CTRL_CLOCK)
46namespace uhd {
namespace rfnoc {
89 const std::string& block_name,
91 const std::string& timebase_clock,
92 const std::string& ctrlport_clock,
107 const std::string& block_key,
factory_t factory_fn);
std::unique_ptr< make_args_t > make_args_ptr
Opaque pointer to the constructor arguments.
Definition: noc_block_base.hpp:53
std::shared_ptr< noc_block_base > sptr
Definition: noc_block_base.hpp:47
Definition: registry.hpp:53
std::function< noc_block_base::sptr(noc_block_base::make_args_ptr)> factory_t
Definition: registry.hpp:55
static void register_block_descriptor(const std::string &block_key, factory_t factory_fn)
static void register_block_direct(noc_id_t noc_id, device_type_t device_id, const std::string &block_name, bool mb_access, const std::string &timebase_clock, const std::string &ctrlport_clock, factory_t factory_fn)
#define UHD_API
Definition: config.h:70
uint16_t device_type_t
Device Type.
Definition: defaults.hpp:58
uint32_t noc_id_t
Definition: defaults.hpp:54
Definition: build_info.hpp:12