USRP Hardware Driver and USRP Manual  Version: 3.12.0.0-0-unknown
UHD and USRP Manual
radio_ctrl.hpp
Go to the documentation of this file.
1 //
2 // Copyright 2015-2016 Ettus Research LLC
3 // Copyright 2018 Ettus Research, a National Instruments Company
4 //
5 // SPDX-License-Identifier: GPL-3.0-or-later
6 //
7 
8 #ifndef INCLUDED_LIBUHD_RFNOC_RADIO_CTRL_HPP
9 #define INCLUDED_LIBUHD_RFNOC_RADIO_CTRL_HPP
10 
11 #include <uhd/types/ranges.hpp>
12 #include <uhd/types/direction.hpp>
19 
20 namespace uhd {
21  namespace rfnoc {
22 
27  public sink_block_ctrl_base,
28  public rate_node_ctrl,
29  public tick_node_ctrl,
31 {
32 public:
34 
35  virtual ~radio_ctrl(){}
36 
37 
39  static const size_t ALL_CHANS = size_t(~0);
40 
42  static const std::string ALL_GAINS;
43 
45  static const std::string ALL_LOS;
46 
47  /************************************************************************
48  * API calls
49  ***********************************************************************/
54  virtual double get_rate() const = 0;
55 
60  virtual double set_rate(double rate) = 0;
61 
66  virtual std::string get_tx_antenna(const size_t chan) /* const */ = 0;
67 
72  virtual void set_tx_antenna(const std::string &ant, const size_t chan) = 0;
73 
78  virtual std::string get_rx_antenna(const size_t chan) /* const */ = 0;
79 
84  virtual void set_rx_antenna(const std::string &ant, const size_t chan) = 0;
85 
93  virtual double get_tx_frequency(const size_t chan) /* const */ = 0;
94 
105  virtual double set_tx_frequency(const double freq, size_t chan) = 0;
106 
111  virtual double get_rx_frequency(const size_t chan) /* const */ = 0;
112 
122  virtual double set_rx_frequency(const double freq, const size_t chan) = 0;
123 
128  virtual double get_tx_gain(const size_t chan) = 0;
129 
137  virtual double set_tx_gain(const double gain, const size_t chan) = 0;
138 
143  virtual double get_rx_gain(const size_t chan) = 0;
144 
152  virtual double set_rx_gain(const double gain, const size_t chan) = 0;
153 
158  virtual double get_tx_bandwidth(const size_t chan) = 0;
159 
166  virtual double set_tx_bandwidth(
167  const double bandwidth,
168  const size_t chan
169  ) = 0;
170 
175  virtual double get_rx_bandwidth(const size_t chan) = 0;
176 
183  virtual double set_rx_bandwidth(const double bandwidth, const size_t chan) = 0;
184 
192  virtual void set_time_now(const time_spec_t &time_spec) = 0;
193 
205  virtual void set_time_next_pps(const time_spec_t &time_spec) = 0;
206 
215  virtual time_spec_t get_time_now() = 0;
216 
221  virtual time_spec_t get_time_last_pps() = 0;
222 
227  virtual std::vector<std::string> get_gpio_banks() const = 0;
228 
244  virtual void set_gpio_attr(
245  const std::string &bank,
246  const std::string &attr,
247  const uint32_t value,
248  const uint32_t mask
249  ) = 0;
250 
266  virtual uint32_t get_gpio_attr(const std::string &bank, const std::string &attr) = 0;
267 
268  /**************************************************************************
269  * LO Controls
270  *************************************************************************/
276  virtual std::vector<std::string> get_rx_lo_names(const size_t chan) = 0;
277 
286  virtual std::vector<std::string> get_rx_lo_sources(const std::string &name, const size_t chan) = 0;
287 
296  virtual freq_range_t get_rx_lo_freq_range(const std::string &name, const size_t chan) = 0;
297 
307  virtual void set_rx_lo_source(const std::string &src, const std::string &name, const size_t chan) = 0;
308 
317  virtual const std::string get_rx_lo_source(const std::string &name, const size_t chan) = 0;
318 
327  virtual void set_rx_lo_export_enabled(bool enabled, const std::string &name, const size_t chan) = 0;
328 
334  virtual bool get_rx_lo_export_enabled(const std::string &name, const size_t chan) = 0;
335 
343  virtual double set_rx_lo_freq(double freq, const std::string &name, const size_t chan) = 0;
344 
353  virtual double get_rx_lo_freq(const std::string &name, const size_t chan) = 0;
354 
360  virtual std::vector<std::string> get_tx_lo_names(const size_t chan) = 0;
361 
370  virtual std::vector<std::string> get_tx_lo_sources(
371  const std::string &name,
372  const size_t chan
373  ) = 0;
374 
383  virtual freq_range_t get_tx_lo_freq_range(
384  const std::string &name,
385  const size_t chan
386  ) = 0;
387 
397  virtual void set_tx_lo_source(
398  const std::string &src,
399  const std::string &name,
400  const size_t chan
401  ) = 0;
402 
411  virtual const std::string get_tx_lo_source(
412  const std::string &name,
413  const size_t chan
414  ) = 0;
415 
424  virtual void set_tx_lo_export_enabled(
425  const bool enabled,
426  const std::string &name,
427  const size_t chan
428  ) = 0;
429 
435  virtual bool get_tx_lo_export_enabled(
436  const std::string &name,
437  const size_t chan
438  ) = 0;
439 
449  virtual double set_tx_lo_freq(
450  const double freq,
451  const std::string &name,
452  const size_t chan
453  ) = 0;
454 
466  virtual double get_tx_lo_freq(
467  const std::string &name,
468  const size_t chan
469  ) = 0;
470 
471  /**************************************************************************
472  * Time and clock control
473  *************************************************************************/
474 
483  virtual void set_time_source(const std::string &source) = 0;
484 
490  virtual std::string get_time_source() = 0;
491 
497  virtual std::vector<std::string> get_time_sources() = 0;
498 
506  virtual void set_clock_source(const std::string &source) = 0;
507 
513  virtual std::string get_clock_source() = 0;
514 
520  virtual std::vector<std::string> get_clock_sources() = 0;
521 
528  virtual size_t get_chan_from_dboard_fe(const std::string &fe, const uhd::direction_t dir) = 0;
529 
532  virtual std::string get_dboard_fe_from_chan(const size_t chan, const uhd::direction_t dir) = 0;
533 
534 }; /* class radio_ctrl */
535 
536 }} /* namespace uhd::rfnoc */
537 
538 #endif /* INCLUDED_LIBUHD_RFNOC_RADIO_CTRL_HPP */
Definition: terminator_node_ctrl.hpp:30
#define UHD_RFNOC_BLOCK_OBJECT(class_name)
This macro must be put in the public section of an RFNoC.
Definition: block_ctrl_base.hpp:61
Definition: sink_block_ctrl_base.hpp:26
Definition: time_spec.hpp:29
Definition: rate_node_ctrl.hpp:28
Block controller for all RFNoC-based radio blocks.
Definition: radio_ctrl.hpp:25
static const std::string ALL_GAINS
A wildcard gain element name.
Definition: radio_ctrl.hpp:42
static const std::string ALL_LOS
A wildcard local oscillator element name.
Definition: radio_ctrl.hpp:45
Definition: build_info.hpp:14
Definition: tick_node_ctrl.hpp:25
#define UHD_RFNOC_API
Definition: config.hpp:93
Definition: source_block_ctrl_base.hpp:25
direction_t
Definition: direction.hpp:13
UHD_INLINE data_t mask(const soft_reg_field_t field)
Definition: soft_register.hpp:87
Definition: ranges.hpp:64