USRP Hardware Driver and Device Manual  Version: 4.11.0.0-0-g0d7ed3b1
UHD and USRP Manual
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>
15 #include <uhd/types/direction.hpp>
16 #include <uhd/types/eeprom.hpp>
17 #include <uhd/types/ranges.hpp>
18 #include <uhd/types/sensors.hpp>
19 #include <uhd/types/stream_cmd.hpp>
20 
21 namespace uhd { namespace rfnoc {
22 
102  public rf_control::core_iface,
105 {
106 public:
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;
155  virtual uhd::time_spec_t get_time_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 
365  virtual size_t get_chan_from_dboard_fe(
366  const std::string& fe, const uhd::direction_t direction) const = 0;
367 
373  // Example: 0 -> "0" (for UBX), or 0 -> "A" (for E310)
374  virtual std::string get_dboard_fe_from_chan(
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
Definition: noc_block_base.hpp:42
Definition: radio_control.hpp:105
virtual std::vector< std::string > get_gpio_banks() 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 std::vector< std::string > get_tx_gain_profile_names(const size_t chan) const =0
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 uhd::eeprom_map_t get_db_eeprom()=0
Return the content of the daughterboard EEPROM.
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::string get_tx_gain_profile(const size_t chan) const =0
static const std::string ALL_GAINS
Definition: radio_control.hpp:108
virtual std::vector< std::string > get_rx_gain_profile_names(const size_t chan) const =0
static constexpr size_t ALL_CHANS
Definition: radio_control.hpp:109
virtual std::vector< std::string > get_rx_sensor_names(size_t chan) const =0
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 std::vector< std::string > get_tx_sensor_names(size_t chan) const =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
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