#include <uhd/usrp/multi_usrp.hpp>
Classes | |
struct | register_info_t |
Public Types | |
typedef boost::shared_ptr< multi_usrp > | sptr |
Public Member Functions | |
virtual | ~multi_usrp (void)=0 |
virtual device::sptr | get_device (void)=0 |
virtual bool | is_device3 (void)=0 |
virtual boost::shared_ptr< uhd::device3 > | get_device3 (void)=0 |
virtual rx_streamer::sptr | get_rx_stream (const stream_args_t &args)=0 |
Convenience method to get a RX streamer. See also uhd::device::get_rx_stream(). More... | |
virtual tx_streamer::sptr | get_tx_stream (const stream_args_t &args)=0 |
Convenience method to get a TX streamer. See also uhd::device::get_tx_stream(). More... | |
virtual dict< std::string, std::string > | get_usrp_rx_info (size_t chan=0)=0 |
virtual dict< std::string, std::string > | get_usrp_tx_info (size_t chan=0)=0 |
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 meta_range_t | get_master_clock_rate_range (const 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 void | set_sync_source (const std::string &clock_source, const std::string &time_source, const size_t mboard=ALL_MBOARDS)=0 |
virtual void | set_sync_source (const device_addr_t &sync_source, const size_t mboard=ALL_MBOARDS)=0 |
virtual device_addr_t | get_sync_source (const size_t mboard)=0 |
virtual std::vector< device_addr_t > | get_sync_sources (const size_t mboard)=0 |
virtual void | set_clock_source_out (const bool enb, const size_t mboard=ALL_MBOARDS)=0 |
virtual void | set_time_source_out (const bool enb, const size_t mboard=ALL_MBOARDS)=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 uint8_t addr, const uint32_t data, size_t mboard=ALL_MBOARDS)=0 |
virtual uhd::wb_iface::sptr | get_user_settings_iface (const size_t chan=0)=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 freq_range_t | get_fe_rx_freq_range (size_t chan=0)=0 |
virtual std::vector< std::string > | get_rx_lo_names (size_t chan=0)=0 |
virtual void | set_rx_lo_source (const std::string &src, const std::string &name=ALL_LOS, size_t chan=0)=0 |
virtual const std::string | get_rx_lo_source (const std::string &name=ALL_LOS, size_t chan=0)=0 |
virtual std::vector< std::string > | get_rx_lo_sources (const std::string &name=ALL_LOS, size_t chan=0)=0 |
virtual void | set_rx_lo_export_enabled (bool enabled, const std::string &name=ALL_LOS, size_t chan=0)=0 |
virtual bool | get_rx_lo_export_enabled (const std::string &name=ALL_LOS, size_t chan=0)=0 |
virtual double | set_rx_lo_freq (double freq, const std::string &name, size_t chan=0)=0 |
virtual double | get_rx_lo_freq (const std::string &name, size_t chan=0)=0 |
virtual freq_range_t | get_rx_lo_freq_range (const std::string &name, size_t chan=0)=0 |
virtual std::vector< std::string > | get_tx_lo_names (size_t chan=0)=0 |
virtual void | set_tx_lo_source (const std::string &src, const std::string &name=ALL_LOS, const size_t chan=0)=0 |
virtual const std::string | get_tx_lo_source (const std::string &name=ALL_LOS, const size_t chan=0)=0 |
virtual std::vector< std::string > | get_tx_lo_sources (const std::string &name=ALL_LOS, const size_t chan=0)=0 |
virtual void | set_tx_lo_export_enabled (const bool enabled, const std::string &name=ALL_LOS, const size_t chan=0)=0 |
virtual bool | get_tx_lo_export_enabled (const std::string &name=ALL_LOS, const size_t chan=0)=0 |
virtual double | set_tx_lo_freq (const double freq, const std::string &name, const size_t chan=0)=0 |
virtual double | get_tx_lo_freq (const std::string &name, const size_t chan=0)=0 |
virtual freq_range_t | get_tx_lo_freq_range (const std::string &name, const size_t chan=0)=0 |
virtual void | set_rx_gain (double gain, const std::string &name, size_t chan=0)=0 |
virtual std::vector< std::string > | get_rx_gain_profile_names (const size_t chan=0)=0 |
virtual void | set_rx_gain_profile (const std::string &profile, const size_t chan=0)=0 |
virtual std::string | get_rx_gain_profile (const 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 void | set_normalized_rx_gain (double gain, size_t chan=0)=0 |
virtual void | set_rx_agc (bool enable, size_t chan=0)=0 |
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 double | get_normalized_rx_gain (size_t chan=0)=0 |
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 |
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 |
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 meta_range_t | get_rx_dc_offset_range (size_t chan=ALL_CHANS)=0 |
virtual void | set_rx_iq_balance (const bool enb, size_t chan)=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 freq_range_t | get_fe_tx_freq_range (size_t chan=0)=0 |
virtual void | set_tx_gain (double gain, const std::string &name, size_t chan=0)=0 |
virtual std::vector< std::string > | get_tx_gain_profile_names (const size_t chan=0)=0 |
virtual void | set_tx_gain_profile (const std::string &profile, const size_t chan=0)=0 |
virtual std::string | get_tx_gain_profile (const 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 void | set_normalized_tx_gain (double gain, size_t chan=0)=0 |
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 double | get_normalized_tx_gain (size_t chan=0)=0 |
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 |
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 meta_range_t | get_tx_dc_offset_range (size_t chan=ALL_CHANS)=0 |
virtual void | set_tx_iq_balance (const std::complex< double > &correction, size_t chan=ALL_CHANS)=0 |
virtual std::vector< std::string > | get_gpio_banks (const size_t mboard)=0 |
virtual void | set_gpio_attr (const std::string &bank, const std::string &attr, const uint32_t value, const uint32_t mask=0xffffffff, const size_t mboard=0)=0 |
virtual void | set_gpio_attr (const std::string &bank, const std::string &attr, const std::string &value, const uint32_t mask=0xffffffff, const size_t mboard=0)=0 |
virtual uint32_t | get_gpio_attr (const std::string &bank, const std::string &attr, const size_t mboard=0)=0 |
virtual std::vector< std::string > | get_gpio_string_attr (const std::string &bank, const std::string &attr, const size_t mboard=0)=0 |
virtual std::vector< std::string > | enumerate_registers (const size_t mboard=0)=0 |
virtual register_info_t | get_register_info (const std::string &path, const size_t mboard=0)=0 |
virtual void | write_register (const std::string &path, const uint32_t field, const uint64_t value, const size_t mboard=0)=0 |
virtual uint64_t | read_register (const std::string &path, const uint32_t field, const size_t mboard=0)=0 |
virtual std::vector< std::string > | get_filter_names (const std::string &search_mask="")=0 |
virtual filter_info_base::sptr | get_filter (const std::string &path)=0 |
virtual void | set_filter (const std::string &path, filter_info_base::sptr filter)=0 |
Static Public Member Functions | |
static sptr | make (const device_addr_t &dev_addr) |
Static Public Attributes | |
static const size_t | ALL_MBOARDS |
A wildcard motherboard index. More... | |
static const size_t | ALL_CHANS |
A wildcard channel index. More... | |
static const std::string | ALL_GAINS |
A wildcard gain element name. More... | |
static const std::string | ALL_LOS |
A wildcard LO stage name. More... | |
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:
When using multiple devices in a configuration:
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...
typedef boost::shared_ptr<multi_usrp> uhd::usrp::multi_usrp::sptr |
|
pure virtual |
|
pure virtual |
Clear the command time so future commands are sent ASAP.
mboard | which motherboard to set the config |
|
pure virtual |
Enumerate the full paths of all low-level USRP registers accessible to read/write
mboard | the motherboard index 0 to M-1 |
|
pure virtual |
Get the currently set clock source.
mboard | which motherboard to get the config |
|
pure virtual |
Get a list of possible clock sources.
mboard | which motherboard to get the list |
|
pure virtual |
Get the underlying device object. This is needed to get access to the streaming API and properties.
|
pure virtual |
Get the underlying device3 object. Only works for generation-3 (or later) devices.
This is needed to get access to the streaming API and properties.
uhd::type_error | if this device is not actually a generation-3 device. |
|
pure virtual |
Get the center frequency range of the RF frontend.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the center frequency range of the TX frontend.
chan | the channel index 0 to N-1 |
|
pure virtual |
Return the filter object for the given name.
path | the name of the filter as returned from get_filter_names(). |
|
pure virtual |
Enumerate the available filters in the signal path.
search_mask | Select only certain filter names by specifying this search mask. E.g. if search mask is set to "rx_frontends/A" only filter names including that string will be returned. |
|
pure virtual |
Get a GPIO attribute on a particular GPIO bank. Possible attribute names:
bank | the name of a GPIO bank |
attr | the name of a GPIO attribute |
mboard | the motherboard index 0 to M-1 |
|
pure virtual |
Enumerate gpio banks on the specified device.
mboard | the motherboard index 0 to M-1 |
|
pure virtual |
Get a GPIO attribute on a particular GPIO bank. Possible attribute names:
bank | the name of a GPIO bank |
attr | the name of a GPIO attribute |
mboard | the motherboard index 0 to M-1 |
|
pure virtual |
Get the master clock rate.
mboard | the motherboard index 0 to M-1 |
|
pure virtual |
Return the range within which the master clock rate can be set for this session
Note that many USRPs do not actually support setting the master clock rate during a running session. In this case, the range will consist of a single value, which is the current master clock rate. Values from this range are valid/sensible inputs to set_master_clock_rate(), although keep in mind that the latter coerces.
Examples:
|
pure virtual |
Get canonical name for this USRP motherboard.
mboard | which motherboard to query |
|
pure virtual |
Get a motherboard sensor value.
name | the name of the sensor |
mboard | the motherboard index 0 to M-1 |
|
pure virtual |
Get a list of possible motherboard sensor names.
mboard | the motherboard index 0 to M-1 |
|
pure virtual |
Return the normalized RX gain value.
See set_normalized_rx_gain() for a discussion of normalized gains.
chan | the channel index 0 to N-1 |
A | uhd::runtime_error if the gain value is outside [0, 1]. |
|
pure virtual |
Return the normalized TX gain value.
See set_normalized_rx_gain() for a discussion of normalized gains.
chan | the channel index 0 to N-1 |
A | uhd::runtime_error if the gain value is outside [0, 1]. |
|
pure virtual |
Get the number of USRP motherboards in this configuration.
|
pure virtual |
Get a printable summary for this USRP configuration.
|
pure virtual |
Get more information about a low-level device register
path | the full path to the register |
mboard | the motherboard index 0 to M-1 |
|
pure virtual |
Get the selected RX antenna on the frontend.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get a list of possible RX antennas on the frontend.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the RX bandwidth on the frontend.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the range of the possible RX bandwidth settings.
chan | the channel index 0 to N-1 |
|
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!
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the valid range for RX DC offset values.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the RX center frequency.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the RX center frequency range. This range includes the overall tunable range of the RX chain, including frontend chain and digital down conversion chain. This tunable limit does not include the baseband bandwidth; users should assume that the actual range is +/- samp_rate/2.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the RX gain value for the specified gain element. For an empty name, sum across all gain elements.
name | the name of the gain element |
chan | the channel index 0 to N-1 |
|
inline |
A convenience wrapper for getting overall RX gain.
|
pure virtual |
Get the names of the gain elements in the RX chain. Gain elements are ordered from antenna to FPGA.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the RX gain profile.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get a list of possible RX gain profile options
Example: On the TwinRX, this will return "low-noise", "low-distortion" or "default". These names can be used in gain-profile related API called. An empty return value doesn't mean there are no profile options, it means that this radio does not have any gain profiles implemented, and typically means there is only one default profile of set gain
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the RX gain range for the specified gain element. For an empty name, calculate the overall gain range.
name | the name of the gain element |
chan | the channel index 0 to N-1 |
|
inline |
A convenience wrapper for getting overall RX gain range.
|
pure virtual |
Returns true if the currently selected LO is being exported.
name | the name of the LO stage to query |
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the current RX LO frequency (Advanced).
If the channel does not have independently configurable LOs the current rf frequency will be returned. See also set_rx_lo_freq() for more information.
name | the name of the LO stage to query |
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the LO frequency range of the RX LO.
If the channel does not have independently configurable LOs the rf frequency range will be returned.
name | the name of the LO stage to query |
chan | the channel index 0 to N-1 |
|
pure virtual |
Get a list of possible LO stage names
Example: On the TwinRX, this will return "LO1", "LO2". These names can are used in other LO-related API calls, so this function can be used for automatically enumerating LO stages. An empty return value doesn't mean there are no LOs, it means that this radio does not have an LO API implemented, and typically means the LOs have no direct way of being controlled other than setting the frequency.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the currently selected LO source.
Channels without controllable LO sources will always return "internal".
name | the name of the LO stage to query |
chan | the channel index 0 to N-1 |
|
pure virtual |
Get a list of possible LO sources.
Channels which do not have controllable LO sources will return "internal". Typical values are "internal" and "external", although the TwinRX has more options, such as "companion". These options are device- specific.
name | the name of the LO stage to query |
chan | the channel index 0 to N-1 |
|
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.
|
pure virtual |
Gets the RX sample rate.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get a range of possible RX rates.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get an RX frontend sensor value.
name | the name of the sensor |
chan | the channel index 0 to N-1 |
|
pure virtual |
Get a list of possible RX frontend sensor names.
chan | the channel index 0 to N-1 |
|
pure virtual |
Convenience method to get a RX streamer. See also uhd::device::get_rx_stream().
|
pure virtual |
Get the name of the RX frontend.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the RX frontend specification.
mboard | the motherboard index 0 to M-1 |
|
pure virtual |
Get the currently set sync source.
mboard | which motherboard to get the config |
|
pure virtual |
Get a list of available sync sources
mboard | which motherboard to get the config |
|
pure virtual |
Get the time when the last pps pulse occurred.
mboard | which motherboard to query |
|
pure virtual |
Get the current time in the usrp time registers.
mboard | which motherboard to query |
|
pure virtual |
Get the currently set time source.
mboard | which motherboard to get the config |
|
pure virtual |
Get a list of possible time sources.
mboard | which motherboard to get the list |
|
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.
|
pure virtual |
Get the selected TX antenna on the frontend.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get a list of possible TX antennas on the frontend.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the TX bandwidth on the frontend.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the range of the possible TX bandwidth settings.
chan | the channel index 0 to N-1 |
|
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!
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the valid range for TX DC offset values.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the TX center frequency.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the TX center frequency range. This range includes the overall tunable range of the TX chain, including frontend chain and digital up conversion chain. This tunable limit does not include the baseband bandwidth; users should assume that the actual range is +/- samp_rate/2.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the TX gain value for the specified gain element. For an empty name, sum across all gain elements.
name | the name of the gain element |
chan | the channel index 0 to N-1 |
|
inline |
A convenience wrapper for getting overall TX gain.
|
pure virtual |
Get the names of the gain elements in the TX chain. Gain elements are ordered from antenna to FPGA.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the TX gain profile.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get a list of possible TX gain profile options
Example: On the N310, this will return "manual" or "default". These names can be used in gain related API called. An empty return value doesn't mean there are no profile options, it means that this radio does not have any gain profiles implemented, and typically means there is only one default profile of set gain
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the TX gain range for the specified gain element. For an empty name, calculate the overall gain range.
name | the name of the gain element |
chan | the channel index 0 to N-1 |
|
inline |
A convenience wrapper for getting overall TX gain range.
|
pure virtual |
Returns true if the currently selected LO is being exported.
name | the name of the LO stage to query |
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the current TX LO frequency (Advanced).
If the channel does not have independently configurable LOs the current rf frequency will be returned. See also set_tx_lo_freq() for more information.
name | the name of the LO stage to query |
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the LO frequency range of the TX LO.
If the channel does not have independently configurable LOs the rf frequency range will be returned.
name | the name of the LO stage to query |
chan | the channel index 0 to N-1 |
|
pure virtual |
Get a list of possible TX LO stage names
See also get_rx_lo_names().
An empty return value doesn't mean there are no LOs, it means that this radio does not have an LO API implemented, and typically means the LOs have no direct way of being controlled other than setting the frequency.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the currently selected TX LO source.
Channels without controllable LO sources will always return "internal".
name | the name of the LO stage to query |
chan | the channel index 0 to N-1 |
|
pure virtual |
Get a list of possible LO sources.
Channels which do not have controllable LO sources will return "internal". Typical values are "internal" and "external". These options are device-specific.
name | the name of the LO stage to query |
chan | the channel index 0 to N-1 |
|
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.
|
pure virtual |
Gets the TX sample rate.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get a range of possible TX rates.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get an TX frontend sensor value.
name | the name of the sensor |
chan | the channel index 0 to N-1 |
|
pure virtual |
Get a list of possible TX frontend sensor names.
chan | the channel index 0 to N-1 |
|
pure virtual |
Convenience method to get a TX streamer. See also uhd::device::get_tx_stream().
|
pure virtual |
Get the name of the TX frontend.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the TX frontend specification.
mboard | the motherboard index 0 to M-1 |
|
pure virtual |
Return a user settings interface object
This is only supported by some USRPs (B2xx series, N230). It will return an object that will allow to peek and poke user settings, which typically are implemented by custom FPGA images. If the device does not support such an interface, it will return a null pointer. This allows to probe this functionality, but can lead to dereferencing errors if no checks are performed.
A typical way to use this is as follows:
|
pure virtual |
Returns identifying information about this USRP's configuration. Returns motherboard ID, name, and serial. Returns daughterboard RX ID, subdev name and spec, serial, and antenna.
chan | channel index 0 to N-1 |
|
pure virtual |
Returns identifying information about this USRP's configuration. Returns motherboard ID, name, and serial. Returns daughterboard TX ID, subdev name and spec, serial, and antenna.
chan | channel index 0 to N-1 |
|
pure virtual |
Returns true if this is a generation-3 device.
|
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.
stream_cmd | the stream command to issue |
chan | the channel index 0 to N-1 |
|
static |
Make a new multi usrp from the device address.
dev_addr | the device address |
uhd::key_error | no device found |
uhd::index_error | fewer devices found than expected |
|
pure virtual |
Read a low-level register field from a register in the USRP hardware
path | the full path to the register |
field | the identifier of bitfield to be read |
mboard | the motherboard index 0 to M-1 |
|
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.
clock_config | the clock configuration to set |
mboard | which motherboard to set the config |
|
pure virtual |
Set the clock source for the USRP device
This sets the source of the frequency reference, typically a 10 MHz signal. In order to frequency-align multiple USRPs, it is necessary to connect all of them to a common reference and provide them with the same clock source. Typical values for source
are 'internal', 'external'. Refer to the specific device manual for a full list of options.
If the value for for source
is not available for this device, it will throw an exception. Calling get_clock_sources() will return a valid list of options for this method.
Side effects: Some devices only support certain combinations of time and clock source. It is possible that the underlying device implementation will change the time source when the clock source changes and vice versa. Reading back the current values of clock and time source using get_clock_source() and get_time_source() is the only certain way of knowing which clock and time source are currently selected.
This function does not force a re-initialization of the underlying hardware when the value does not change. Consider the following snippet:
See also:
source | a string representing the time source |
mboard | which motherboard to set the config |
uhd::value_error | if source is an invalid option |
|
pure virtual |
Send the clock source to an output connector. This call is only applicable on devices with reference outputs. By default, the reference output will be enabled for ease of use. This call may be used to enable or disable the output.
enb | true to output the clock source. |
mboard | which motherboard to set |
|
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.
time_spec | the time at which the next command will activate |
mboard | which motherboard to set the config |
|
pure virtual |
Write back a filter obtained by get_filter() to the signal path. This filter can be a modified version of the originally returned one. The information about Rx or Tx is contained in the path parameter.
path | the name of the filter as returned from get_filter_names(). |
filter | the filter_info_base::sptr of the filter object to be written |
|
pure virtual |
Set a GPIO attribute on a particular GPIO bank. Possible attribute names:
bank | the name of a GPIO bank |
attr | the name of a GPIO attribute |
value | the new value for this GPIO bank |
mask | the bit mask to effect which pins are changed |
mboard | the motherboard index 0 to M-1 |
|
pure virtual |
Set a GPIO attribute on a particular GPIO bank. Possible attribute names:
bank | the name of a GPIO bank |
attr | the name of a GPIO attribute |
value | the new value for this GPIO bank |
mask | the bit mask to effect which pins are changed |
mboard | the motherboard index 0 to M-1 |
|
pure virtual |
Set the master clock rate.
What exactly this changes is device-dependent, but it will always affect the rate at which the ADC/DAC is running.
Like tuning receive or transmit frequencies, this call will do a best effort to change the master clock rate. The device will coerce to the closest clock rate available, and on many devices won't actually change anything at all. Call get_master_clock_rate() to see which rate was actually applied.
Note that changing this value during streaming is not recommended and can have random side effects.
If the device has an 'auto clock rate' setting (e.g. B200, see also Automatic Clock Rate Setting), calling this function will disable the automatic clock rate selection, and the clock rate will be fixed to rate
.
rate | the new master clock rate in Hz |
mboard | the motherboard index 0 to M-1 |
|
pure virtual |
Set the normalized RX gain value.
The normalized gain is a value in [0, 1], where 0 is the smallest gain value available, and 1 is the largest, independent of the device. In between, gains are linearly interpolated.
Check the individual device manual for notes on the gain range.
Note that it is not possible to specify a gain name for this function, it will always set the overall gain.
gain | the normalized gain value |
chan | the channel index 0 to N-1 |
A | uhd::runtime_error if the gain value is outside [0, 1]. |
|
pure virtual |
Set the normalized TX gain value.
See set_normalized_rx_gain() for a discussion on normalized gains.
gain | the normalized gain value |
chan | the channel index 0 to N-1 |
A | uhd::runtime_error if the gain value is outside [0, 1]. |
|
pure virtual |
Enable or disable the RX AGC module. Once this module is enabled manual gain settings will be ignored. The AGC will start in a default configuration which should be good for most use cases. Device specific configuration parameters can be found in the property tree.
enable | Enable or Disable the AGC |
chan | the channel index 0 to N-1 |
|
pure virtual |
Select the RX antenna on the frontend.
ant | the antenna name |
chan | the channel index 0 to N-1 |
|
pure virtual |
Set the RX bandwidth on the frontend.
bandwidth | the bandwidth in Hz |
chan | the channel index 0 to N-1 |
|
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.
enb | true to enable automatic DC offset correction |
chan | the channel index 0 to N-1 |
|
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.
offset | the dc offset (1.0 is full-scale) |
chan | the channel index 0 to N-1 |
|
pure virtual |
Set the RX center frequency.
tune_request | tune request instructions |
chan | the channel index 0 to N-1 |
|
pure virtual |
Set the RX gain value for the specified gain element. For an empty name, distribute across all gain elements.
gain | the gain in dB |
name | the name of the gain element |
chan | the channel index 0 to N-1 |
|
inline |
A convenience wrapper for setting overall RX gain.
|
pure virtual |
Set the RX gain profile.
profile | the profile string option |
chan | the channel index 0 to N-1 |
|
pure virtual |
Enable/disable the automatic IQ imbalance correction.
enb | true to enable automatic IQ balance correction |
chan | the channel index 0 to N-1 |
|
pure virtual |
Set the RX frontend IQ imbalance correction. Use this to adjust the magnitude and phase of I and Q.
correction | the complex correction (1.0 is full-scale) |
chan | the channel index 0 to N-1 |
|
pure virtual |
Set whether the LO used by the device is exported
For USRPs that support exportable LOs, this function configures if the LO used by chan is exported or not.
enabled | if true then export the LO |
name | the name of the LO stage to update |
chan | the channel index 0 to N-1 for the source channel |
uhd::runtime_error | if LO exporting is not enabled |
|
pure virtual |
Set the RX LO frequency (Advanced).
The actual behaviour is device-specific. However, as a rule of thumb, this will coerce the underlying driver into some state. Typical situations include:
freq | the frequency to set the LO to |
name | the name of the LO stage to update |
chan | the channel index 0 to N-1 |
|
pure virtual |
Set the LO source for the USRP device.
For USRPs that support selectable LO sources, this function allows switching between them. Typical options for source: internal, external.
src | a string representing the LO source |
name | the name of the LO stage to update. If the wildcard value ALL_LOS is used, the setting will be applied to all LOs on this channel. |
chan | the channel index 0 to N-1 |
|
pure virtual |
Set the RX sample rate.
rate | the rate in Sps |
chan | the channel index 0 to N-1 |
|
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.
spec | the new frontend specification |
mboard | the motherboard index 0 to M-1 |
|
pure virtual |
Set the reference/synchronization sources for the USRP device
This is a shorthand for calling set_sync_source(device_addr_t("clock_source=$CLOCK_SOURCE,time_source=$TIME_SOURCE"))
clock_source | A string representing the clock source |
time_source | A string representing the time source |
mboard | which motherboard to set the config |
uhd::value_error | if the sources don't actually exist |
|
pure virtual |
Set the reference/synchronization sources for the USRP device
Typically, this will set both clock and time source in a single call. For some USRPs, this may be significantly faster than calling set_time_source() and set_clock_source() individually.
Example:
This function does not force a re-initialization of the underlying hardware when the value does not change. See also set_time_source() and set_clock_source() for more details.
sync_source | A dictionary representing the various source settings. |
mboard | which motherboard to set the config |
uhd::value_error | if the sources don't actually exist or if the combination of clock and time source is invalid. |
|
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.
time_spec | the time to latch into the usrp device |
mboard | the motherboard index 0 to M-1 |
|
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.
time_spec | the time to latch into the usrp device |
mboard | the motherboard index 0 to M-1 |
|
pure virtual |
Set the time source for the USRP device
This sets the method of time synchronization, typically a pulse per second signal. In order to time-align multiple USRPs, it is necessary to connect all of them to a common reference and provide them with the same time source. Typical values for source
are 'internal', 'external'. Refer to the specific device manual for a full list of options.
If the value for for source
is not available for this device, it will throw an exception. Calling get_time_sources() will return a valid list of options for this method.
Side effects: Some devices only support certain combinations of time and clock source. It is possible that the underlying device implementation will change the clock source when the time source changes and vice versa. Reading back the current values of clock and time source using get_clock_source() and get_time_source() is the only certain way of knowing which clock and time source are currently selected.
This function does not force a re-initialization of the underlying hardware when the value does not change. Consider the following snippet:
See also:
source | a string representing the time source |
mboard | which motherboard to set the config |
uhd::value_error | if source is an invalid option |
|
pure virtual |
Send the time source to an output connector. This call is only applicable on devices with PPS outputs. By default, the PPS output will be enabled for ease of use. This call may be used to enable or disable the output.
enb | true to output the time source. |
mboard | which motherboard to set |
|
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.
time_spec | the time to latch at the next pps after catching the edge |
|
pure virtual |
Select the TX antenna on the frontend.
ant | the antenna name |
chan | the channel index 0 to N-1 |
|
pure virtual |
Set the TX bandwidth on the frontend.
bandwidth | the bandwidth in Hz |
chan | the channel index 0 to N-1 |
|
pure virtual |
Set a constant TX DC offset value. The value is complex to control both I and Q.
offset | the dc offset (1.0 is full-scale) |
chan | the channel index 0 to N-1 |
|
pure virtual |
Set the TX center frequency.
tune_request | tune request instructions |
chan | the channel index 0 to N-1 |
|
pure virtual |
Set the TX gain value for the specified gain element. For an empty name, distribute across all gain elements.
gain | the gain in dB |
name | the name of the gain element |
chan | the channel index 0 to N-1 |
|
inline |
A convenience wrapper for setting overall TX gain.
|
pure virtual |
Set the TX gain profile.
profile | the profile string option |
chan | the channel index 0 to N-1 |
|
pure virtual |
Set the TX frontend IQ imbalance correction. Use this to adjust the magnitude and phase of I and Q.
correction | the complex correction (1.0 is full-scale) |
chan | the channel index 0 to N-1 |
|
pure virtual |
Set whether the TX LO used by the device is exported
For USRPs that support exportable LOs, this function configures if the LO used by chan is exported or not.
enabled | if true then export the LO |
name | the name of the LO stage to update |
chan | the channel index 0 to N-1 for the source channel |
uhd::runtime_error | if LO exporting is not enabled |
|
pure virtual |
Set the TX LO frequency (Advanced).
The actual behaviour is device-specific. However, as a rule of thumb, this will coerce the underlying driver into some state. Typical situations include:
freq | the frequency to set the LO to |
name | the name of the LO stage to update |
chan | the channel index 0 to N-1 |
|
pure virtual |
Set the TX LO source for the USRP device.
For USRPs that support selectable LO sources, this function allows switching between them. Typical options for source: internal, external.
src | a string representing the LO source |
name | the name of the LO stage to update. If the wildcard value ALL_LOS is used, the setting will be applied to all LOs on this channel. |
chan | the channel index 0 to N-1 |
|
pure virtual |
Set the TX sample rate.
rate | the rate in Sps |
chan | the channel index 0 to N-1 |
|
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.
spec | the new frontend specification |
mboard | the motherboard index 0 to M-1 |
|
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.
addr | 8-bit register address |
data | 32-bit register value |
mboard | which motherboard to set the user register |
|
pure virtual |
Write a low-level register field for a register in the USRP hardware
path | the full path to the register |
field | the identifier of bitfield to be written (all other bits remain unchanged) |
value | the value to write to the register field |
mboard | the motherboard index 0 to M-1 |
|
static |
A wildcard channel index.
|
static |
A wildcard gain element name.
|
static |
A wildcard LO stage name.
|
static |
A wildcard motherboard index.