USRP Hardware Driver and Device Manual Version: 4.11.0.0-0-unknown
UHD and USRP Manual
Loading...
Searching...
No Matches
registry.hpp
Go to the documentation of this file.
1//
2// Copyright 2019 Ettus Research, a National Instruments Brand
3//
4// SPDX-License-Identifier: GPL-3.0-or-later
5//
6
7#pragma once
8
9#include <uhd/config.hpp>
12#include <uhd/utils/static.hpp>
13#include <functional>
14#include <string>
15
19#define UHD_RFNOC_BLOCK_REGISTER_FOR_DEVICE_DIRECT( \
20 CLASS_NAME, NOC_ID, DEVICE_ID, BLOCK_NAME, MB_ACCESS, TB_CLOCK, CTRL_CLOCK) \
21 uhd::rfnoc::noc_block_base::sptr CLASS_NAME##_make( \
22 uhd::rfnoc::noc_block_base::make_args_ptr make_args) \
23 { \
24 return std::make_shared<CLASS_NAME##_impl>(std::move(make_args)); \
25 } \
26 UHD_STATIC_BLOCK(register_rfnoc_##CLASS_NAME) \
27 { \
28 uhd::rfnoc::registry::register_block_direct(NOC_ID, \
29 DEVICE_ID, \
30 BLOCK_NAME, \
31 MB_ACCESS, \
32 TB_CLOCK, \
33 CTRL_CLOCK, \
34 &CLASS_NAME##_make); \
35 }
36
37#define UHD_RFNOC_BLOCK_REGISTER_DIRECT( \
38 CLASS_NAME, NOC_ID, BLOCK_NAME, TB_CLOCK, CTRL_CLOCK) \
39 UHD_RFNOC_BLOCK_REGISTER_FOR_DEVICE_DIRECT( \
40 CLASS_NAME, NOC_ID, ANY_DEVICE, BLOCK_NAME, false, TB_CLOCK, CTRL_CLOCK)
41
42#define UHD_RFNOC_BLOCK_REGISTER_DIRECT_MB_ACCESS( \
43 CLASS_NAME, NOC_ID, BLOCK_NAME, TB_CLOCK, CTRL_CLOCK) \
44 UHD_RFNOC_BLOCK_REGISTER_FOR_DEVICE_DIRECT( \
45 CLASS_NAME, NOC_ID, ANY_DEVICE, BLOCK_NAME, true, TB_CLOCK, CTRL_CLOCK)
46
47namespace uhd { namespace rfnoc {
48
54{
55public:
57
88 static void register_block_direct(noc_id_t noc_id,
89 device_type_t device_id,
90 const std::string& block_name,
91 bool mb_access,
92 const std::string& timebase_clock,
93 const std::string& ctrlport_clock,
94 factory_t factory_fn);
95
98 static void register_block_direct(std::vector<noc_id_t> noc_ids,
99 device_type_t device_id,
100 const std::string& block_name,
101 bool mb_access,
102 const std::string& timebase_clock,
103 const std::string& ctrlport_clock,
104 factory_t factory_fn);
105
118 const std::string& block_key, factory_t factory_fn);
119};
120
121}} /* namespace uhd::rfnoc */
std::unique_ptr< make_args_int_t, make_args_deleter > make_args_ptr
Opaque pointer to the constructor arguments with custom deleter.
Definition noc_block_base.hpp:73
std::shared_ptr< noc_block_base > sptr
Definition noc_block_base.hpp:44
Definition registry.hpp:54
std::function< noc_block_base::sptr(noc_block_base::make_args_ptr)> factory_t
Definition registry.hpp:56
static void register_block_direct(std::vector< noc_id_t > noc_ids, 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)
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:87
uint16_t device_type_t
Device Type.
Definition defaults.hpp:56
uint32_t noc_id_t
Definition defaults.hpp:52
Definition build_info.hpp:12