All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
uhd::usrp::multi_usrp Class Referenceabstract

`#include <multi_usrp.hpp>`

Inheritance diagram for uhd::usrp::multi_usrp:

## Public Types

typedef boost::shared_ptr < multi_usrp > | sptr

## Public Member Functions

virtual device::sptr | get_device (void)=0
rx_streamer::sptr | get_rx_stream (const stream_args_t &args)
| Convenience method to get a RX streamer. More...
tx_streamer::sptr | get_tx_stream (const stream_args_t &args)
| Convenience method to get a TX streamer. More...
virtual void | set_master_clock_rate (double rate, size_t mboard=ALL_MBOARDS)=0
virtual double | get_master_clock_rate (size_t mboard=0)=0
virtual std::string | get_pp_string (void)=0
virtual std::string | get_mboard_name (size_t mboard=0)=0
virtual time_spec_t | get_time_now (size_t mboard=0)=0
virtual time_spec_t | get_time_last_pps (size_t mboard=0)=0
virtual void | set_time_now (const time_spec_t &time_spec, size_t mboard=ALL_MBOARDS)=0
virtual void | set_time_next_pps (const time_spec_t &time_spec, size_t mboard=ALL_MBOARDS)=0
virtual void | set_time_unknown_pps (const time_spec_t &time_spec)=0
virtual bool | get_time_synchronized (void)=0
virtual void | set_command_time (const uhd::time_spec_t &time_spec, size_t mboard=ALL_MBOARDS)=0
virtual void | clear_command_time (size_t mboard=ALL_MBOARDS)=0
virtual void | issue_stream_cmd (const stream_cmd_t &stream_cmd, size_t chan=ALL_CHANS)=0
virtual void | set_clock_config (const clock_config_t &clock_config, size_t mboard=ALL_MBOARDS)=0
virtual void | set_time_source (const std::string &source, const size_t mboard=ALL_MBOARDS)=0
virtual std::string | get_time_source (const size_t mboard)=0
virtual std::vector< std::string > | get_time_sources (const size_t mboard)=0
virtual void | set_clock_source (const std::string &source, const size_t mboard=ALL_MBOARDS)=0
virtual std::string | get_clock_source (const size_t mboard)=0
virtual std::vector< std::string > | get_clock_sources (const size_t mboard)=0
virtual size_t | get_num_mboards (void)=0
virtual sensor_value_t | get_mboard_sensor (const std::string &name, size_t mboard=0)=0
virtual std::vector< std::string > | get_mboard_sensor_names (size_t mboard=0)=0
virtual void | set_user_register (const boost::uint8_t addr, const boost::uint32_t data, size_t mboard=ALL_MBOARDS)=0
virtual void | set_rx_subdev_spec (const uhd::usrp::subdev_spec_t &spec, size_t mboard=ALL_MBOARDS)=0
virtual uhd::usrp::subdev_spec_t | get_rx_subdev_spec (size_t mboard=0)=0
virtual size_t | get_rx_num_channels (void)=0
virtual std::string | get_rx_subdev_name (size_t chan=0)=0
virtual void | set_rx_rate (double rate, size_t chan=ALL_CHANS)=0
virtual double | get_rx_rate (size_t chan=0)=0
virtual meta_range_t | get_rx_rates (size_t chan=0)=0
virtual tune_result_t | set_rx_freq (const tune_request_t &tune_request, size_t chan=0)=0
virtual double | get_rx_freq (size_t chan=0)=0
virtual freq_range_t | get_rx_freq_range (size_t chan=0)=0
virtual void | set_rx_gain (double gain, const std::string &name, size_t chan=0)=0
void | set_rx_gain (double gain, size_t chan=0)
| A convenience wrapper for setting overall RX gain. More...
virtual double | get_rx_gain (const std::string &name, size_t chan=0)=0
double | get_rx_gain (size_t chan=0)
| A convenience wrapper for getting overall RX gain. More...
virtual gain_range_t | get_rx_gain_range (const std::string &name, size_t chan=0)=0
gain_range_t | get_rx_gain_range (size_t chan=0)
| A convenience wrapper for getting overall RX gain range. More...
virtual std::vector< std::string > | get_rx_gain_names (size_t chan=0)=0
virtual void | set_rx_antenna (const std::string &ant, size_t chan=0)=0
virtual std::string | get_rx_antenna (size_t chan=0)=0
virtual std::vector< std::string > | get_rx_antennas (size_t chan=0)=0
UHD_DEPRECATED bool | get_rx_lo_locked (size_t chan=0)
virtual void | set_rx_bandwidth (double bandwidth, size_t chan=0)=0
virtual double | get_rx_bandwidth (size_t chan=0)=0
virtual meta_range_t | get_rx_bandwidth_range (size_t chan=0)=0
UHD_DEPRECATED double | read_rssi (size_t chan=0)
virtual dboard_iface::sptr | get_rx_dboard_iface (size_t chan=0)=0
virtual sensor_value_t | get_rx_sensor (const std::string &name, size_t chan=0)=0
virtual std::vector< std::string > | get_rx_sensor_names (size_t chan=0)=0
virtual void | set_rx_dc_offset (const bool enb, size_t chan=ALL_CHANS)=0
virtual void | set_rx_dc_offset (const std::complex< double > &offset, size_t chan=ALL_CHANS)=0
virtual void | set_rx_iq_balance (const std::complex< double > &correction, size_t chan=ALL_CHANS)=0
virtual void | set_tx_subdev_spec (const uhd::usrp::subdev_spec_t &spec, size_t mboard=ALL_MBOARDS)=0
virtual uhd::usrp::subdev_spec_t | get_tx_subdev_spec (size_t mboard=0)=0
virtual size_t | get_tx_num_channels (void)=0
virtual std::string | get_tx_subdev_name (size_t chan=0)=0
virtual void | set_tx_rate (double rate, size_t chan=ALL_CHANS)=0
virtual double | get_tx_rate (size_t chan=0)=0
virtual meta_range_t | get_tx_rates (size_t chan=0)=0
virtual tune_result_t | set_tx_freq (const tune_request_t &tune_request, size_t chan=0)=0
virtual double | get_tx_freq (size_t chan=0)=0
virtual freq_range_t | get_tx_freq_range (size_t chan=0)=0
virtual void | set_tx_gain (double gain, const std::string &name, size_t chan=0)=0
void | set_tx_gain (double gain, size_t chan=0)
| A convenience wrapper for setting overall TX gain. More...
virtual double | get_tx_gain (const std::string &name, size_t chan=0)=0
double | get_tx_gain (size_t chan=0)
| A convenience wrapper for getting overall TX gain. More...
virtual gain_range_t | get_tx_gain_range (const std::string &name, size_t chan=0)=0
gain_range_t | get_tx_gain_range (size_t chan=0)
| A convenience wrapper for getting overall TX gain range. More...
virtual std::vector< std::string > | get_tx_gain_names (size_t chan=0)=0
virtual void | set_tx_antenna (const std::string &ant, size_t chan=0)=0
virtual std::string | get_tx_antenna (size_t chan=0)=0
virtual std::vector< std::string > | get_tx_antennas (size_t chan=0)=0
UHD_DEPRECATED bool | get_tx_lo_locked (size_t chan=0)
virtual void | set_tx_bandwidth (double bandwidth, size_t chan=0)=0
virtual double | get_tx_bandwidth (size_t chan=0)=0
virtual meta_range_t | get_tx_bandwidth_range (size_t chan=0)=0
virtual dboard_iface::sptr | get_tx_dboard_iface (size_t chan=0)=0
virtual sensor_value_t | get_tx_sensor (const std::string &name, size_t chan=0)=0
virtual std::vector< std::string > | get_tx_sensor_names (size_t chan=0)=0
virtual void | set_tx_dc_offset (const std::complex< double > &offset, size_t chan=ALL_CHANS)=0
virtual void | set_tx_iq_balance (const std::complex< double > &correction, size_t chan=ALL_CHANS)=0

## Static Public Member Functions

static sptr | make (const device_addr_t &dev_addr)

## Static Public Attributes

static const size_t | ALL_MBOARDS = size_t(~0)
| A wildcard motherboard index. More...
static const size_t | ALL_CHANS = size_t(~0)
| A wildcard channel index. More...
static const std::string | ALL_GAINS
| A wildcard gain element name. More...

## Detailed Description

The Multi-USRP device class:

This class facilitates ease-of-use for most use-case scenarios. The wrapper provides convenience functions to tune the devices, set the dboard gains, antennas, filters, and other properties. This class can be used to interface with a single USRP with one or more channels, or multiple USRPs in a homogeneous setup. All members take an optional parameter for board number or channel number. In the single device, single channel case, these parameters can be unspecified.

When using a single device with multiple channels:

- Channel mapping is determined by the frontend specifications
- All channels share a common RX sample rate
- All channels share a common TX sample rate

When using multiple devices in a configuration:

- Channel mapping is determined by the device address arguments
- All boards share a common RX sample rate
- All boards share a common TX sample rate
- All boards share a common RX frontend specification size
- All boards share a common TX frontend specification size
- All boards must have synchronized times (see the set_time_*() calls)

Example to setup channel mapping for multiple devices:

    //create a multi_usrp with two boards in the configuration
    device_addr_t dev_addr;
    dev_addr["addr0"] = "192.168.10.2"
    dev_addr["addr1"] = "192.168.10.3";
    multi_usrp::sptr dev = multi_usrp::make(dev_addr);

    //set the board on 10.2 to use the A RX frontend (RX channel 0)
    dev->set_rx_subdev_spec("A:A", 0);

    //set the board on 10.3 to use the B RX frontend (RX channel 1)
    dev->set_rx_subdev_spec("A:B", 1);

    //set both boards to use the AB TX frontend (TX channels 0 and 1)
    dev->set_tx_subdev_spec("A:AB", multi_usrp::ALL_MBOARDS);

    //now that all the channels are mapped, continue with configuration...

## Member Typedef Documentation

typedef boost::shared_ptr<multi_usrp> uhd::usrp::multi_usrp::sptr

## Member Function Documentation

virtual void uhd::usrp::multi_usrp::clear_command_time | ( | size_t | mboard = `ALL_MBOARDS` | ) |

pure virtual

Clear the command time so future commands are sent ASAP.

Parameters

  mboard | which motherboard to set the config

virtual std::string uhd::usrp::multi_usrp::get_clock_source | ( | const size_t | mboard | ) |

pure virtual

Get the currently set clock source.

Parameters

  mboard | which motherboard to get the config

Returns
  the string representing the clock source

virtual std::vector<std::string> uhd::usrp::multi_usrp::get_clock_sources | ( | const size_t | mboard | ) |

pure virtual

Get a list of possible clock sources.

Parameters

  mboard | which motherboard to get the list

Returns
  a vector of strings for possible settings

virtual device::sptr uhd::usrp::multi_usrp::get_device | ( | void |  | ) |

pure virtual

Get the underlying device object. This is needed to get access to the streaming API and properties.

Returns
  the device object within this single usrp

virtual double uhd::usrp::multi_usrp::get_master_clock_rate | ( | size_t | mboard = `0` | ) |

pure virtual

Get the master clock rate.

Parameters

  mboard | the motherboard index 0 to M-1

Returns
  the master clock rate in Hz.

virtual std::string uhd::usrp::multi_usrp::get_mboard_name | ( | size_t | mboard = `0` | ) |

pure virtual

Get canonical name for this USRP motherboard.

Parameters

  mboard | which motherboard to query

Returns
  a string representing the name

virtual sensor_value_t uhd::usrp::multi_usrp::get_mboard_sensor | ( | const std::string & | name,
|  | size_t | mboard = `0`
| ) |  |

pure virtual

Get a motherboard sensor value.

Parameters

  name | the name of the sensor
  mboard | the motherboard index 0 to M-1

Returns
  a sensor value object

virtual std::vector<std::string> uhd::usrp::multi_usrp::get_mboard_sensor_names | ( | size_t | mboard = `0` | ) |

pure virtual

Get a list of possible motherboard sensor names.

Parameters

  mboard | the motherboard index 0 to M-1

Returns
  a vector of sensor names

virtual size_t uhd::usrp::multi_usrp::get_num_mboards | ( | void |  | ) |

pure virtual

Get the number of USRP motherboards in this configuration.

virtual std::string uhd::usrp::multi_usrp::get_pp_string | ( | void |  | ) |

pure virtual

Get a printable summary for this USRP configuration.

Returns
  a printable string

virtual std::string uhd::usrp::multi_usrp::get_rx_antenna | ( | size_t | chan = `0` | ) |

pure virtual

Get the selected RX antenna on the frontend.

Parameters

  chan | the channel index 0 to N-1

Returns
  the antenna name

virtual std::vector<std::string> uhd::usrp::multi_usrp::get_rx_antennas | ( | size_t | chan = `0` | ) |

pure virtual

Get a list of possible RX antennas on the frontend.

Parameters

  chan | the channel index 0 to N-1

Returns
  a vector of antenna names

virtual double uhd::usrp::multi_usrp::get_rx_bandwidth | ( | size_t | chan = `0` | ) |

pure virtual

Get the RX bandwidth on the frontend.

Parameters

  chan | the channel index 0 to N-1

Returns
  the bandwidth in Hz

virtual meta_range_t uhd::usrp::multi_usrp::get_rx_bandwidth_range | ( | size_t | chan = `0` | ) |

pure virtual

Get the range of the possible RX bandwidth settings.

Parameters

  chan | the channel index 0 to N-1

Returns
  a range of bandwidths in Hz

virtual dboard_iface::sptr uhd::usrp::multi_usrp::get_rx_dboard_iface | ( | size_t | chan = `0` | ) |

pure virtual

Get the dboard interface object for the RX frontend. The dboard interface gives access to GPIOs, SPI, I2C, low-speed ADC and DAC. Use at your own risk!

Parameters

  chan | the channel index 0 to N-1

Returns
  the dboard interface sptr

virtual double uhd::usrp::multi_usrp::get_rx_freq | ( | size_t | chan = `0` | ) |

pure virtual

Get the RX center frequency.

Parameters

  chan | the channel index 0 to N-1

Returns
  the frequency in Hz

virtual freq_range_t uhd::usrp::multi_usrp::get_rx_freq_range | ( | size_t | chan = `0` | ) |

pure virtual

Get the RX center frequency range.

Parameters

  chan | the channel index 0 to N-1

Returns
  a frequency range object

virtual double uhd::usrp::multi_usrp::get_rx_gain | ( | const std::string & | name,
|  | size_t | chan = `0`
| ) |  |

pure virtual

Get the RX gain value for the specified gain element. For an empty name, sum across all gain elements.

Parameters

  name | the name of the gain element
  chan | the channel index 0 to N-1

Returns
  the gain in dB

double uhd::usrp::multi_usrp::get_rx_gain | ( | size_t | chan = `0` | ) |

inline

A convenience wrapper for getting overall RX gain.

virtual std::vector<std::string> uhd::usrp::multi_usrp::get_rx_gain_names | ( | size_t | chan = `0` | ) |

pure virtual

Get the names of the gain elements in the RX chain. Gain elements are ordered from antenna to FPGA.

Parameters

  chan | the channel index 0 to N-1

Returns
  a vector of gain element names

virtual gain_range_t uhd::usrp::multi_usrp::get_rx_gain_range | ( | const std::string & | name,
|  | size_t | chan = `0`
| ) |  |

pure virtual

Get the RX gain range for the specified gain element. For an empty name, calculate the overall gain range.

Parameters

  name | the name of the gain element
  chan | the channel index 0 to N-1

Returns
  a gain range object

gain_range_t uhd::usrp::multi_usrp::get_rx_gain_range | ( | size_t | chan = `0` | ) |

inline

A convenience wrapper for getting overall RX gain range.

UHD_DEPRECATED bool uhd::usrp::multi_usrp::get_rx_lo_locked | ( | size_t | chan = `0` | ) |

inline

Get the locked status of the LO on the frontend.

Parameters

  chan | the channel index 0 to N-1

Returns
  true for locked

virtual size_t uhd::usrp::multi_usrp::get_rx_num_channels | ( | void |  | ) |

pure virtual

Get the number of RX channels in this configuration. This is the number of USRPs times the number of RX channels per board, where the number of RX channels per board is homogeneous among all USRPs.

virtual double uhd::usrp::multi_usrp::get_rx_rate | ( | size_t | chan = `0` | ) |

pure virtual

Gets the RX sample rate.

Parameters

  chan | the channel index 0 to N-1

Returns
  the rate in Sps

virtual meta_range_t uhd::usrp::multi_usrp::get_rx_rates | ( | size_t | chan = `0` | ) |

pure virtual

Get a range of possible RX rates.

Parameters

  chan | the channel index 0 to N-1

Returns
  the meta range of rates

virtual sensor_value_t uhd::usrp::multi_usrp::get_rx_sensor | ( | const std::string & | name,
|  | size_t | chan = `0`
| ) |  |

pure virtual

Get an RX frontend sensor value.

Parameters

  name | the name of the sensor
  chan | the channel index 0 to N-1

Returns
  a sensor value object

virtual std::vector<std::string> uhd::usrp::multi_usrp::get_rx_sensor_names | ( | size_t | chan = `0` | ) |

pure virtual

Get a list of possible RX frontend sensor names.

Parameters

  chan | the channel index 0 to N-1

Returns
  a vector of sensor names

rx_streamer::sptr uhd::usrp::multi_usrp::get_rx_stream | ( | const stream_args_t & | args | ) |

inline

Convenience method to get a RX streamer.

virtual std::string uhd::usrp::multi_usrp::get_rx_subdev_name | ( | size_t | chan = `0` | ) |

pure virtual

Get the name of the RX frontend.

Parameters

  chan | the channel index 0 to N-1

Returns
  the frontend name

virtual uhd::usrp::subdev_spec_t uhd::usrp::multi_usrp::get_rx_subdev_spec | ( | size_t | mboard = `0` | ) |

pure virtual

Get the RX frontend specification.

Parameters

  mboard | the motherboard index 0 to M-1

Returns
  the frontend specification in use

virtual time_spec_t uhd::usrp::multi_usrp::get_time_last_pps | ( | size_t | mboard = `0` | ) |

pure virtual

Get the time when the last pps pulse occured.

Parameters

  mboard | which motherboard to query

Returns
  a timespec representing the last pps

virtual time_spec_t uhd::usrp::multi_usrp::get_time_now | ( | size_t | mboard = `0` | ) |

pure virtual

Get the current time in the usrp time registers.

Parameters

  mboard | which motherboard to query

Returns
  a timespec representing current usrp time

virtual std::string uhd::usrp::multi_usrp::get_time_source | ( | const size_t | mboard | ) |

pure virtual

Get the currently set time source.

Parameters

  mboard | which motherboard to get the config

Returns
  the string representing the time source

virtual std::vector<std::string> uhd::usrp::multi_usrp::get_time_sources | ( | const size_t | mboard | ) |

pure virtual

Get a list of possible time sources.

Parameters

  mboard | which motherboard to get the list

Returns
  a vector of strings for possible settings

virtual bool uhd::usrp::multi_usrp::get_time_synchronized | ( | void |  | ) |

pure virtual

Are the times across all motherboards in this configuration synchronized? Checks that all time registers are approximately close but not exact, given that the RTT may varying for a control packet transaction.

Returns
  true when all motherboards time registers are in sync

virtual std::string uhd::usrp::multi_usrp::get_tx_antenna | ( | size_t | chan = `0` | ) |

pure virtual

Get the selected TX antenna on the frontend.

Parameters

  chan | the channel index 0 to N-1

Returns
  the antenna name

virtual std::vector<std::string> uhd::usrp::multi_usrp::get_tx_antennas | ( | size_t | chan = `0` | ) |

pure virtual

Get a list of possible TX antennas on the frontend.

Parameters

  chan | the channel index 0 to N-1

Returns
  a vector of antenna names

virtual double uhd::usrp::multi_usrp::get_tx_bandwidth | ( | size_t | chan = `0` | ) |

pure virtual

Get the TX bandwidth on the frontend.

Parameters

  chan | the channel index 0 to N-1

Returns
  the bandwidth in Hz

virtual meta_range_t uhd::usrp::multi_usrp::get_tx_bandwidth_range | ( | size_t | chan = `0` | ) |

pure virtual

Get the range of the possible TX bandwidth settings.

Parameters

  chan | the channel index 0 to N-1

Returns
  a range of bandwidths in Hz

virtual dboard_iface::sptr uhd::usrp::multi_usrp::get_tx_dboard_iface | ( | size_t | chan = `0` | ) |

pure virtual

Get the dboard interface object for the TX frontend. The dboard interface gives access to GPIOs, SPI, I2C, low-speed ADC and DAC. Use at your own risk!

Parameters

  chan | the channel index 0 to N-1

Returns
  the dboard interface sptr

virtual double uhd::usrp::multi_usrp::get_tx_freq | ( | size_t | chan = `0` | ) |

pure virtual

Get the TX center frequency.

Parameters

  chan | the channel index 0 to N-1

Returns
  the frequency in Hz

virtual freq_range_t uhd::usrp::multi_usrp::get_tx_freq_range | ( | size_t | chan = `0` | ) |

pure virtual

Get the TX center frequency range.

Parameters

  chan | the channel index 0 to N-1

Returns
  a frequency range object

virtual double uhd::usrp::multi_usrp::get_tx_gain | ( | const std::string & | name,
|  | size_t | chan = `0`
| ) |  |

pure virtual

Get the TX gain value for the specified gain element. For an empty name, sum across all gain elements.

Parameters

  name | the name of the gain element
  chan | the channel index 0 to N-1

Returns
  the gain in dB

double uhd::usrp::multi_usrp::get_tx_gain | ( | size_t | chan = `0` | ) |

inline

A convenience wrapper for getting overall TX gain.

virtual std::vector<std::string> uhd::usrp::multi_usrp::get_tx_gain_names | ( | size_t | chan = `0` | ) |

pure virtual

Get the names of the gain elements in the TX chain. Gain elements are ordered from antenna to FPGA.

Parameters

  chan | the channel index 0 to N-1

Returns
  a vector of gain element names

virtual gain_range_t uhd::usrp::multi_usrp::get_tx_gain_range | ( | const std::string & | name,
|  | size_t | chan = `0`
| ) |  |

pure virtual

Get the TX gain range for the specified gain element. For an empty name, calculate the overall gain range.

Parameters

  name | the name of the gain element
  chan | the channel index 0 to N-1

Returns
  a gain range object

gain_range_t uhd::usrp::multi_usrp::get_tx_gain_range | ( | size_t | chan = `0` | ) |

inline

A convenience wrapper for getting overall TX gain range.

UHD_DEPRECATED bool uhd::usrp::multi_usrp::get_tx_lo_locked | ( | size_t | chan = `0` | ) |

inline

Get the locked status of the LO on the frontend.

Parameters

  chan | the channel index 0 to N-1

Returns
  true for locked

virtual size_t uhd::usrp::multi_usrp::get_tx_num_channels | ( | void |  | ) |

pure virtual

Get the number of TX channels in this configuration. This is the number of USRPs times the number of TX channels per board, where the number of TX channels per board is homogeneous among all USRPs.

virtual double uhd::usrp::multi_usrp::get_tx_rate | ( | size_t | chan = `0` | ) |

pure virtual

Gets the TX sample rate.

Parameters

  chan | the channel index 0 to N-1

Returns
  the rate in Sps

virtual meta_range_t uhd::usrp::multi_usrp::get_tx_rates | ( | size_t | chan = `0` | ) |

pure virtual

Get a range of possible TX rates.

Parameters

  chan | the channel index 0 to N-1

Returns
  the meta range of rates

virtual sensor_value_t uhd::usrp::multi_usrp::get_tx_sensor | ( | const std::string & | name,
|  | size_t | chan = `0`
| ) |  |

pure virtual

Get an TX frontend sensor value.

Parameters

  name | the name of the sensor
  chan | the channel index 0 to N-1

Returns
  a sensor value object

virtual std::vector<std::string> uhd::usrp::multi_usrp::get_tx_sensor_names | ( | size_t | chan = `0` | ) |

pure virtual

Get a list of possible TX frontend sensor names.

Parameters

  chan | the channel index 0 to N-1

Returns
  a vector of sensor names

tx_streamer::sptr uhd::usrp::multi_usrp::get_tx_stream | ( | const stream_args_t & | args | ) |

inline

Convenience method to get a TX streamer.

virtual std::string uhd::usrp::multi_usrp::get_tx_subdev_name | ( | size_t | chan = `0` | ) |

pure virtual

Get the name of the TX frontend.

Parameters

  chan | the channel index 0 to N-1

Returns
  the frontend name

virtual uhd::usrp::subdev_spec_t uhd::usrp::multi_usrp::get_tx_subdev_spec | ( | size_t | mboard = `0` | ) |

pure virtual

Get the TX frontend specification.

Parameters

  mboard | the motherboard index 0 to M-1

Returns
  the frontend specification in use

virtual void uhd::usrp::multi_usrp::issue_stream_cmd | ( | const stream_cmd_t & | stream_cmd,
|  | size_t | chan = `ALL_CHANS`
| ) |  |

pure virtual

Issue a stream command to the usrp device. This tells the usrp to send samples into the host. See the documentation for stream_cmd_t for more info.

With multiple devices, the first stream command in a chain of commands should have a time spec in the near future and stream_now = false; to ensure that the packets can be aligned by their time specs.

Parameters

  stream_cmd | the stream command to issue
  chan | the channel index 0 to N-1

static sptr uhd::usrp::multi_usrp::make | ( | const device_addr_t & | dev_addr | ) |

static

Make a new multi usrp from the device address.

Parameters

  dev_addr | the device address

Returns
  a new single usrp object

UHD_DEPRECATED double uhd::usrp::multi_usrp::read_rssi | ( | size_t | chan = `0` | ) |

inline

Read the RSSI value on the RX frontend.

Parameters

  chan | the channel index 0 to N-1

Returns
  the rssi in dB

Exceptions

  exception | if RSSI readback not supported

virtual void uhd::usrp::multi_usrp::set_clock_config | ( | const clock_config_t & | clock_config,
|  | size_t | mboard = `ALL_MBOARDS`
| ) |  |

pure virtual

Set the clock configuration for the usrp device. DEPRECATED in favor of set time and clock source calls. This tells the usrp how to get a 10Mhz reference and PPS clock. See the documentation for clock_config_t for more info.

Parameters

  clock_config | the clock configuration to set
  mboard | which motherboard to set the config

virtual void uhd::usrp::multi_usrp::set_clock_source | ( | const std::string & | source,
|  | const size_t | mboard = `ALL_MBOARDS`
| ) |  |

pure virtual

Set the clock source for the usrp device. This sets the source for a 10 Mhz reference clock. Typical options for source: internal, external, MIMO.

Parameters

  source | a string representing the clock source
  mboard | which motherboard to set the config

virtual void uhd::usrp::multi_usrp::set_command_time | ( | const uhd::time_spec_t & | time_spec,
|  | size_t | mboard = `ALL_MBOARDS`
| ) |  |

pure virtual

Set the time at which the control commands will take effect.

A timed command will back-pressure all subsequent timed commands, assuming that the subsequent commands occur within the time-window. If the time spec is late, the command will be activated upon arrival.

Parameters

  time_spec | the time at which the next command will activate
  mboard | which motherboard to set the config

virtual void uhd::usrp::multi_usrp::set_master_clock_rate | ( | double | rate,
|  | size_t | mboard = `ALL_MBOARDS`
| ) |  |

pure virtual

Set the master clock rate. This controls the rate of the clock that feeds the FPGA DSP. On some devices, this re-tunes the clock to the specified rate. If the specified rate is not available, this method will throw. On other devices, this method notifies the software of the rate, but requires the the user has made the necessary hardware change.

Parameters

  rate | the new master clock rate in Hz
  mboard | the motherboard index 0 to M-1

virtual void uhd::usrp::multi_usrp::set_rx_antenna | ( | const std::string & | ant,
|  | size_t | chan = `0`
| ) |  |

pure virtual

Select the RX antenna on the frontend.

Parameters

  ant | the antenna name
  chan | the channel index 0 to N-1

virtual void uhd::usrp::multi_usrp::set_rx_bandwidth | ( | double | bandwidth,
|  | size_t | chan = `0`
| ) |  |

pure virtual

Set the RX bandwidth on the frontend.

Parameters

  bandwidth | the bandwidth in Hz
  chan | the channel index 0 to N-1

virtual void uhd::usrp::multi_usrp::set_rx_dc_offset | ( | const bool | enb,
|  | size_t | chan = `ALL_CHANS`
| ) |  |

pure virtual

Enable/disable the automatic RX DC offset correction. The automatic correction subtracts out the long-run average.

When disabled, the averaging option operation is halted. Once halted, the average value will be held constant until the user re-enables the automatic correction or overrides the value by manually setting the offset.

Parameters

  enb | true to enable automatic DC offset correction
  chan | the channel index 0 to N-1

virtual void uhd::usrp::multi_usrp::set_rx_dc_offset | ( | const std::complex< double > & | offset,
|  | size_t | chan = `ALL_CHANS`
| ) |  |

pure virtual

Set a constant RX DC offset value. The value is complex to control both I and Q. Only set this when automatic correction is disabled.

Parameters

  offset | the dc offset (1.0 is full-scale)
  chan | the channel index 0 to N-1

virtual tune_result_t uhd::usrp::multi_usrp::set_rx_freq | ( | const tune_request_t & | tune_request,
|  | size_t | chan = `0`
| ) |  |

pure virtual

Set the RX center frequency.

Parameters

  tune_request | tune request instructions
  chan | the channel index 0 to N-1

Returns
  a tune result object

virtual void uhd::usrp::multi_usrp::set_rx_gain | ( | double | gain,
|  | const std::string & | name,
|  | size_t | chan = `0`
| ) |  |

pure virtual

Set the RX gain value for the specified gain element. For an empty name, distribute across all gain elements.

Parameters

  gain | the gain in dB
  name | the name of the gain element
  chan | the channel index 0 to N-1

void uhd::usrp::multi_usrp::set_rx_gain | ( | double | gain,
|  | size_t | chan = `0`
| ) |  |

inline

A convenience wrapper for setting overall RX gain.

virtual void uhd::usrp::multi_usrp::set_rx_iq_balance | ( | const std::complex< double > & | correction,
|  | size_t | chan = `ALL_CHANS`
| ) |  |

pure virtual

Set the RX frontend IQ imbalance correction. Use this to adjust the magnitude and phase of I and Q.

Parameters

  correction | the complex correction (1.0 is full-scale)
  chan | the channel index 0 to N-1

virtual void uhd::usrp::multi_usrp::set_rx_rate | ( | double | rate,
|  | size_t | chan = `ALL_CHANS`
| ) |  |

pure virtual

Set the RX sample rate.

Parameters

  rate | the rate in Sps
  chan | the channel index 0 to N-1

virtual void uhd::usrp::multi_usrp::set_rx_subdev_spec | ( | const uhd::usrp::subdev_spec_t & | spec,
|  | size_t | mboard = `ALL_MBOARDS`
| ) |  |

pure virtual

Set the RX frontend specification: The subdev spec maps a physical part of a daughter-board to a channel number. Set the subdev spec before calling into any methods with a channel number. The subdev spec must be the same size across all motherboards.

Parameters

  spec | the new frontend specification
  mboard | the motherboard index 0 to M-1

virtual void uhd::usrp::multi_usrp::set_time_next_pps | ( | const time_spec_t & | time_spec,
|  | size_t | mboard = `ALL_MBOARDS`
| ) |  |

pure virtual

Set the time registers on the usrp at the next pps tick. The values will not be latched in until the pulse occurs. It is recommended that the user sleep(1) after calling to ensure that the time registers will be in a known state prior to use.

Note: Because this call sets the time on the "next" pps, the seconds in the time spec should be current seconds + 1.

Parameters

  time_spec | the time to latch into the usrp device
  mboard | the motherboard index 0 to M-1

virtual void uhd::usrp::multi_usrp::set_time_now | ( | const time_spec_t & | time_spec,
|  | size_t | mboard = `ALL_MBOARDS`
| ) |  |

pure virtual

Sets the time registers on the usrp immediately.

If only one MIMO master is present in your configuration, set_time_now is safe to use because the slave's time automatically follows the master's time. Otherwise, this call cannot set the time synchronously across multiple devices. Please use the set_time_next_pps or set_time_unknown_pps calls with a PPS signal.

Parameters

  time_spec | the time to latch into the usrp device
  mboard | the motherboard index 0 to M-1

virtual void uhd::usrp::multi_usrp::set_time_source | ( | const std::string & | source,
|  | const size_t | mboard = `ALL_MBOARDS`
| ) |  |

pure virtual

Set the time source for the usrp device. This sets the method of time synchronization, typically a pulse per second or an encoded time. Typical options for source: external, MIMO.

Parameters

  source | a string representing the time source
  mboard | which motherboard to set the config

virtual void uhd::usrp::multi_usrp::set_time_unknown_pps | ( | const time_spec_t & | time_spec | ) |

pure virtual

Synchronize the times across all motherboards in this configuration. Use this method to sync the times when the edge of the PPS is unknown.

Ex: Host machine is not attached to serial port of GPSDO and can therefore not query the GPSDO for the PPS edge.

This is a 2-step process, and will take at most 2 seconds to complete. Upon completion, the times will be synchronized to the time provided.

- Step1: wait for the last pps time to transition to catch the edge
- Step2: set the time at the next pps (synchronous for all boards)

Parameters

  time_spec | the time to latch at the next pps after catching the edge

virtual void uhd::usrp::multi_usrp::set_tx_antenna | ( | const std::string & | ant,
|  | size_t | chan = `0`
| ) |  |

pure virtual

Select the TX antenna on the frontend.

Parameters

  ant | the antenna name
  chan | the channel index 0 to N-1

virtual void uhd::usrp::multi_usrp::set_tx_bandwidth | ( | double | bandwidth,
|  | size_t | chan = `0`
| ) |  |

pure virtual

Set the TX bandwidth on the frontend.

Parameters

  bandwidth | the bandwidth in Hz
  chan | the channel index 0 to N-1

virtual void uhd::usrp::multi_usrp::set_tx_dc_offset | ( | const std::complex< double > & | offset,
|  | size_t | chan = `ALL_CHANS`
| ) |  |

pure virtual

Set a constant TX DC offset value. The value is complex to control both I and Q.

Parameters

  offset | the dc offset (1.0 is full-scale)
  chan | the channel index 0 to N-1

virtual tune_result_t uhd::usrp::multi_usrp::set_tx_freq | ( | const tune_request_t & | tune_request,
|  | size_t | chan = `0`
| ) |  |

pure virtual

Set the TX center frequency.

Parameters

  tune_request | tune request instructions
  chan | the channel index 0 to N-1

Returns
  a tune result object

virtual void uhd::usrp::multi_usrp::set_tx_gain | ( | double | gain,
|  | const std::string & | name,
|  | size_t | chan = `0`
| ) |  |

pure virtual

Set the TX gain value for the specified gain element. For an empty name, distribute across all gain elements.

Parameters

  gain | the gain in dB
  name | the name of the gain element
  chan | the channel index 0 to N-1

void uhd::usrp::multi_usrp::set_tx_gain | ( | double | gain,
|  | size_t | chan = `0`
| ) |  |

inline

A convenience wrapper for setting overall TX gain.

virtual void uhd::usrp::multi_usrp::set_tx_iq_balance | ( | const std::complex< double > & | correction,
|  | size_t | chan = `ALL_CHANS`
| ) |  |

pure virtual

Set the TX frontend IQ imbalance correction. Use this to adjust the magnitude and phase of I and Q.

Parameters

  correction | the complex correction (1.0 is full-scale)
  chan | the channel index 0 to N-1

virtual void uhd::usrp::multi_usrp::set_tx_rate | ( | double | rate,
|  | size_t | chan = `ALL_CHANS`
| ) |  |

pure virtual

Set the TX sample rate.

Parameters

  rate | the rate in Sps
  chan | the channel index 0 to N-1

virtual void uhd::usrp::multi_usrp::set_tx_subdev_spec | ( | const uhd::usrp::subdev_spec_t & | spec,
|  | size_t | mboard = `ALL_MBOARDS`
| ) |  |

pure virtual

Set the TX frontend specification: The subdev spec maps a physical part of a daughter-board to a channel number. Set the subdev spec before calling into any methods with a channel number. The subdev spec must be the same size across all motherboards.

Parameters

  spec | the new frontend specification
  mboard | the motherboard index 0 to M-1

virtual void uhd::usrp::multi_usrp::set_user_register | ( | const boost::uint8_t | addr,
|  | const boost::uint32_t | data,
|  | size_t | mboard = `ALL_MBOARDS`
| ) |  |

pure virtual

Perform write on the user configuration register bus. These only exist if the user has implemented custom setting registers in the device FPGA.

Parameters

  addr | 8-bit register address
  data | 32-bit register value
  mboard | which motherboard to set the user register

## Member Data Documentation

const size_t uhd::usrp::multi_usrp::ALL_CHANS = size_t(~0)

static

A wildcard channel index.

const std::string uhd::usrp::multi_usrp::ALL_GAINS

static

A wildcard gain element name.

const size_t uhd::usrp::multi_usrp::ALL_MBOARDS = size_t(~0)

static

A wildcard motherboard index.

The documentation for this class was generated from the following file:

- include/uhd/usrp/multi_usrp.hpp