12#include <boost/optional.hpp>
205 const std::optional<uhd::time_spec_t> time = {}) = 0;
209 return set_freq(freq, chan, std::make_optional(time));
212 [[deprecated(
"Prefer std::optional over boost::optional.")]]
double set_freq(
215 const boost::optional<uhd::time_spec_t> time)
218 freq, chan,
bool(time) ? std::make_optional(*time) : std::nullopt);
225 virtual double get_freq(
const size_t chan)
const = 0;
Definition ddc_block_control.hpp:139
virtual double set_output_rate(const double rate, const size_t chan)=0
static const uint32_t RB_COMPAT_NUM
Compat register address (same across all register map versions).
Definition ddc_block_control.hpp:170
virtual void issue_stream_cmd(const uhd::stream_cmd_t &stream_cmd, const size_t port)=0
virtual uhd::freq_range_t get_frequency_range(const size_t chan) const =0
virtual void set_input_rate(const double rate, const size_t chan)=0
virtual uhd::meta_range_t get_output_rates(const size_t chan) const =0
virtual double get_freq(const size_t chan) const =0
double set_freq(const double freq, const size_t chan, const uhd::time_spec_t time)
Definition ddc_block_control.hpp:207
static const reg_addrs_t REG_ADDRS_V0
Register map for the single-sample (legacy) DDC (compat major 0).
Definition ddc_block_control.hpp:172
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 boost::optional< uhd::time_spec_t > time)
Definition ddc_block_control.hpp:212
static const reg_addrs_t REG_ADDRS_V1
Register map for the multisample DDC (compat major 1).
Definition ddc_block_control.hpp:174
virtual double get_input_rate(const size_t chan) const =0
virtual double get_output_rate(const size_t chan) const =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
Version-specific register map for the DDC block.
Definition ddc_block_control.hpp:145
uint32_t reg_chan_offset
Per-channel register bank stride in bytes (= 2^DDC_PORT_ADDR_W in the RTL).
Definition ddc_block_control.hpp:166
uint32_t sr_time_incr_addr
Timestamp increment.
Definition ddc_block_control.hpp:159
std::optional< uint32_t > sr_mux_addr
Definition ddc_block_control.hpp:163
uint16_t minor_compat
Expected minor compat number for this version.
Definition ddc_block_control.hpp:147
uint32_t rb_num_hb
Address of num-halfbands readback register.
Definition ddc_block_control.hpp:149
uint32_t sr_freq_addr
DDS frequency word.
Definition ddc_block_control.hpp:155
uint16_t major_compat
Expected major compat number for this version.
Definition ddc_block_control.hpp:146
std::optional< uint32_t > sr_config_addr
Definition ddc_block_control.hpp:162
uint32_t rb_cic_max_decim
Definition ddc_block_control.hpp:150
std::optional< uint32_t > rb_spc
Address of samples-per-clock readback register; std::nullopt for V0.
Definition ddc_block_control.hpp:152
std::optional< uint32_t > sr_n_addr
Rate N; std::nullopt for V1.
Definition ddc_block_control.hpp:157
uint32_t sr_decim_addr
Decimation word.
Definition ddc_block_control.hpp:154
uint32_t sr_scale_iq_addr
IQ scale factor.
Definition ddc_block_control.hpp:156
std::optional< uint32_t > sr_coeffs_addr
Definition ddc_block_control.hpp:164
std::optional< uint32_t > sr_m_addr
Rate M; std::nullopt for V1.
Definition ddc_block_control.hpp:158
Definition stream_cmd.hpp:42