USRP Hardware Driver and Device Manual Version: 4.11.0.0-0-unknown
UHD and USRP Manual
Loading...
Searching...
No Matches
duc_block_control.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>
11#include <uhd/types/ranges.hpp>
13#include <boost/optional.hpp>
14#include <optional>
15
16namespace uhd { namespace rfnoc {
17
140{
141public:
143
144
146 {
147 uint16_t major_compat;
148 uint16_t minor_compat;
149 uint32_t num_hb;
151 std::optional<uint32_t> n_addr;
152 std::optional<uint32_t> m_addr;
153 std::optional<uint32_t> config_addr;
154 uint32_t interp_addr;
155 uint32_t freq_addr;
158 };
159
160 // Compat register address (same across all versions)
161 static const uint32_t REG_COMPAT_NUM;
162 // Register addresses for version 0.x
164 // Register addresses for version 1.x
166
193 virtual double set_freq(const double freq,
194 const size_t chan,
195 const std::optional<uhd::time_spec_t> time = {}) = 0;
196
197 double set_freq(const double freq, const size_t chan, const uhd::time_spec_t time)
198 {
199 return set_freq(freq, chan, std::make_optional(time));
200 }
201
202 [[deprecated("Prefer std::optional over boost::optional.")]] virtual double set_freq(
203 const double freq,
204 const size_t chan,
205 const boost::optional<uhd::time_spec_t> time)
206 {
207 return set_freq(
208 freq, chan, bool(time) ? std::make_optional(*time) : std::nullopt);
209 }
210
215 virtual double get_freq(const size_t chan) const = 0;
216
228 virtual uhd::freq_range_t get_frequency_range(const size_t chan) const = 0;
229
235 virtual double get_input_rate(const size_t chan) const = 0;
236
244 virtual double get_output_rate(const size_t chan) const = 0;
245
251 virtual void set_output_rate(const double rate, const size_t chan) = 0;
252
258 virtual uhd::meta_range_t get_input_rates(const size_t chan) const = 0;
259
270 virtual double set_input_rate(const double rate, const size_t chan) = 0;
271};
272
273}} // namespace uhd::rfnoc
Definition duc_block_control.hpp:140
virtual void set_output_rate(const double rate, const size_t chan)=0
static const reg_addrs_t REG_ADDRS_V1
Definition duc_block_control.hpp:165
static const uint32_t REG_COMPAT_NUM
Definition duc_block_control.hpp:161
virtual double get_freq(const size_t chan) const =0
virtual double get_input_rate(const size_t chan) const =0
virtual uhd::meta_range_t get_input_rates(const size_t chan) const =0
virtual uhd::freq_range_t get_frequency_range(const size_t chan) const =0
virtual double set_freq(const double freq, const size_t chan, const boost::optional< uhd::time_spec_t > time)
Definition duc_block_control.hpp:202
virtual double get_output_rate(const size_t chan) const =0
virtual double set_freq(const double freq, const size_t chan, const std::optional< uhd::time_spec_t > time={})=0
double set_freq(const double freq, const size_t chan, const uhd::time_spec_t time)
Definition duc_block_control.hpp:197
static const reg_addrs_t REG_ADDRS_V0
Definition duc_block_control.hpp:163
virtual double set_input_rate(const double rate, const size_t chan)=0
noc_block_base(make_args_ptr make_args)
Definition time_spec.hpp:31
#define UHD_API
Definition config.h:87
Definition actions.hpp:25
Definition build_info.hpp:12
meta_range_t freq_range_t
Definition ranges.hpp:173
#define RFNOC_DECLARE_BLOCK(CLASS_NAME)
Definition noc_block_base.hpp:22
Definition ranges.hpp:67
Version-specific register addresses.
Definition duc_block_control.hpp:146
std::optional< uint32_t > m_addr
Definition duc_block_control.hpp:152
uint16_t minor_compat
Definition duc_block_control.hpp:148
uint32_t interp_addr
Definition duc_block_control.hpp:154
uint32_t freq_addr
Definition duc_block_control.hpp:155
uint16_t major_compat
Definition duc_block_control.hpp:147
uint32_t time_incr_addr
Definition duc_block_control.hpp:157
std::optional< uint32_t > config_addr
Definition duc_block_control.hpp:153
uint32_t scale_iq_addr
Definition duc_block_control.hpp:156
uint32_t num_hb
Definition duc_block_control.hpp:149
std::optional< uint32_t > n_addr
Definition duc_block_control.hpp:151
uint32_t cic_max_interp
Definition duc_block_control.hpp:150