12 #include <boost/optional.hpp>
15 namespace uhd {
namespace rfnoc {
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
Definition: noc_block_base.hpp:42
Definition: time_spec.hpp:31
#define UHD_API
Definition: config.h:87
Definition: build_info.hpp:12
#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