USRP Hardware Driver and Device Manual Version: 4.11.0.0-0-unknown
UHD and USRP Manual
Loading...
Searching...
No Matches
radio_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>
16#include <uhd/types/eeprom.hpp>
17#include <uhd/types/ranges.hpp>
18#include <uhd/types/sensors.hpp>
20
21namespace uhd { namespace rfnoc {
22
105{
106public:
107 static const std::string ALL_LOS;
108 static const std::string ALL_GAINS;
109 static constexpr size_t ALL_CHANS = size_t(~0);
110
112
113 /**************************************************************************
114 * Rate-Related API Calls
115 *************************************************************************/
120 virtual double set_rate(const double rate) = 0;
121
123 virtual double get_rate() const = 0;
124
126 virtual uhd::meta_range_t get_rate_range() const = 0;
127
141 virtual size_t get_spc() const = 0;
142
143 /**************************************************************************
144 * Time-Related API Calls
145 *************************************************************************/
150 virtual uint64_t get_ticks_now() = 0;
156
157 /**************************************************************************
158 * RF-Related API Calls
159 *************************************************************************/
162 virtual std::vector<std::string> get_tx_gain_profile_names(
163 const size_t chan) const = 0;
164
167 virtual std::vector<std::string> get_rx_gain_profile_names(
168 const size_t chan) const = 0;
169
172 virtual void set_tx_gain_profile(const std::string& profile, const size_t chan) = 0;
173
176 virtual void set_rx_gain_profile(const std::string& profile, const size_t chan) = 0;
177
180 virtual std::string get_tx_gain_profile(const size_t chan) const = 0;
181
184 virtual std::string get_rx_gain_profile(const size_t chan) const = 0;
185
186 /**************************************************************************
187 * Calibration-Related API Calls
188 *************************************************************************/
196 virtual void set_tx_dc_offset(const std::complex<double>& offset, size_t chan) = 0;
197
202 virtual meta_range_t get_tx_dc_offset_range(size_t chan) const = 0;
203
211 virtual void set_tx_iq_balance(
212 const std::complex<double>& correction, size_t chan) = 0;
213
225 virtual void set_rx_dc_offset(const bool enb, size_t chan = ALL_CHANS) = 0;
226
234 virtual void set_rx_dc_offset(const std::complex<double>& offset, size_t chan) = 0;
235
240 virtual meta_range_t get_rx_dc_offset_range(size_t chan) const = 0;
241
247 virtual void set_rx_iq_balance(const bool enb, size_t chan) = 0;
248
254 virtual void set_rx_iq_balance(
255 const std::complex<double>& correction, size_t chan) = 0;
256
257 /**************************************************************************
258 * GPIO Controls
259 *************************************************************************/
264 virtual std::vector<std::string> get_gpio_banks() const = 0;
265
280 virtual void set_gpio_attr(
281 const std::string& bank, const std::string& attr, const uint32_t value) = 0;
282
298 virtual uint32_t get_gpio_attr(const std::string& bank, const std::string& attr) = 0;
299
300 /**************************************************************************
301 * Sensor API
302 *************************************************************************/
307 virtual std::vector<std::string> get_rx_sensor_names(size_t chan) const = 0;
308
315 virtual uhd::sensor_value_t get_rx_sensor(const std::string& name, size_t chan) = 0;
316
321 virtual std::vector<std::string> get_tx_sensor_names(size_t chan) const = 0;
322
329 virtual uhd::sensor_value_t get_tx_sensor(const std::string& name, size_t chan) = 0;
330
331 /**************************************************************************
332 * Streaming-Related API Calls
333 *************************************************************************/
348 virtual void issue_stream_cmd(
349 const uhd::stream_cmd_t& stream_cmd, const size_t port) = 0;
350
353 virtual void enable_rx_timestamps(const bool enable, const size_t chan) = 0;
354
355 /**************************************************************************
356 * Radio Identification API Calls
357 *************************************************************************/
359 virtual std::string get_slot_name() const = 0;
360
366 const std::string& fe, const uhd::direction_t direction) const = 0;
367
372
373 // Example: 0 -> "0" (for UBX), or 0 -> "A" (for E310)
375 const size_t chan, const uhd::direction_t direction) const = 0;
376
378 virtual std::string get_fe_name(
379 const size_t chan, const uhd::direction_t direction) const = 0;
380
381 /**************************************************************************
382 * EEPROM API Calls
383 *************************************************************************/
389 virtual void set_db_eeprom(const uhd::eeprom_map_t& db_eeprom) = 0;
390
393};
394
395}} // namespace uhd::rfnoc
Definition discoverable_feature_getter_iface.hpp:18
noc_block_base(make_args_ptr make_args)
Definition radio_control.hpp:105
virtual std::vector< std::string > get_rx_sensor_names(size_t chan) const =0
virtual std::string get_dboard_fe_from_chan(const size_t chan, const uhd::direction_t direction) const =0
Return the frontend name for a channel index.
virtual uint32_t get_gpio_attr(const std::string &bank, const std::string &attr)=0
virtual meta_range_t get_rx_dc_offset_range(size_t chan) const =0
virtual void set_tx_dc_offset(const std::complex< double > &offset, size_t chan)=0
virtual std::string get_slot_name() const =0
Returns this radio's slot name (typically "A" or "B").
virtual uhd::time_spec_t get_time_now()=0
virtual void issue_stream_cmd(const uhd::stream_cmd_t &stream_cmd, const size_t port)=0
virtual void set_rx_iq_balance(const bool enb, size_t chan)=0
static const std::string ALL_LOS
Definition radio_control.hpp:107
virtual void enable_rx_timestamps(const bool enable, const size_t chan)=0
virtual void set_db_eeprom(const uhd::eeprom_map_t &db_eeprom)=0
Update the daughterboard EEPROM.
virtual std::vector< std::string > get_gpio_banks() const =0
virtual uhd::eeprom_map_t get_db_eeprom()=0
Return the content of the daughterboard EEPROM.
virtual std::vector< std::string > get_tx_sensor_names(size_t chan) const =0
virtual std::vector< std::string > get_rx_gain_profile_names(const size_t chan) const =0
virtual uhd::meta_range_t get_rate_range() const =0
Return a list of valid rates.
virtual double get_rate() const =0
Get the sample rate.
virtual void set_tx_iq_balance(const std::complex< double > &correction, size_t chan)=0
virtual double set_rate(const double rate)=0
Set the sample rate.
virtual void set_rx_dc_offset(const bool enb, size_t chan=ALL_CHANS)=0
virtual uhd::sensor_value_t get_rx_sensor(const std::string &name, size_t chan)=0
virtual meta_range_t get_tx_dc_offset_range(size_t chan) const =0
virtual void set_rx_gain_profile(const std::string &profile, const size_t chan)=0
virtual std::vector< std::string > get_tx_gain_profile_names(const size_t chan) const =0
virtual std::string get_tx_gain_profile(const size_t chan) const =0
static const std::string ALL_GAINS
Definition radio_control.hpp:108
static constexpr size_t ALL_CHANS
Definition radio_control.hpp:109
virtual void set_gpio_attr(const std::string &bank, const std::string &attr, const uint32_t value)=0
virtual void set_tx_gain_profile(const std::string &profile, const size_t chan)=0
virtual size_t get_spc() const =0
Return the samples per clock (SPC) value of this radio.
virtual std::string get_fe_name(const size_t chan, const uhd::direction_t direction) const =0
Return the name of the frontend, as given by the dboard driver.
virtual size_t get_chan_from_dboard_fe(const std::string &fe, const uhd::direction_t direction) const =0
Return the channel that corresponds to a frontend's name.
virtual uint64_t get_ticks_now()=0
virtual uhd::sensor_value_t get_tx_sensor(const std::string &name, size_t chan)=0
virtual std::string get_rx_gain_profile(const size_t chan) const =0
Definition core_iface.hpp:26
Definition power_reference_iface.hpp:23
Definition time_spec.hpp:31
STL namespace.
Definition actions.hpp:25
Definition build_info.hpp:12
direction_t
Definition direction.hpp:12
std::map< std::string, std::vector< uint8_t > > eeprom_map_t
Definition eeprom.hpp:16
#define RFNOC_DECLARE_BLOCK(CLASS_NAME)
Definition noc_block_base.hpp:22
Definition ranges.hpp:67
Definition sensors.hpp:29
Definition stream_cmd.hpp:42