UHD
003.001.002
|
#include <multi_usrp.hpp>
Public Types | |
typedef boost::shared_ptr< multi_usrp > | sptr |
Public Member Functions | |
virtual device::sptr | get_device (void)=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 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)=0 |
virtual void | set_time_unknown_pps (const time_spec_t &time_spec)=0 |
virtual bool | get_time_synchronized (void)=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 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 mboard_iface::sptr | get_mboard_iface (size_t mboard)=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 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 |
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_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 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 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 |
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... | |
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 subdevice (RX channel 0) dev->set_rx_subdev_spec(":A", 0);
//set the board on 10.3 to use the B RX subdevice (RX channel 1) dev->set_rx_subdev_spec(":B", 1);
//set both boards to use the AB TX subdevice (TX channels 0 and 1) dev->set_tx_subdev_spec(":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 |
Get the underlying device object. This is needed to get access to the streaming API and properties.
|
pure virtual |
Get the master clock rate.
mboard | the motherboard index 0 to M-1 |
|
pure virtual |
Get a handle to the mboard_iface object which controls peripheral access.
|
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 |
Get the number of USRP motherboards in this configuration.
|
pure virtual |
Get a printable summary for this USRP configuration.
|
pure virtual |
Get the selected RX antenna on the subdevice.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get a list of possible RX antennas on the subdevice.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the RX bandwidth on the subdevice.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the dboard interface object for the RX subdevice. 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 RX center frequency.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the RX center frequency range.
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 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.
|
inline |
Get the locked status of the LO on the subdevice.
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 an RX subdevice sensor value.
name | the name of the sensor |
chan | the channel index 0 to N-1 |
|
pure virtual |
Get a list of possible RX subdevice sensor names.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the name of the RX subdevice.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the RX subdevice specification.
mboard | the motherboard index 0 to M-1 |
|
pure virtual |
Get the time when the last pps pulse occured.
mboard | which motherboard to query |
|
pure virtual |
Get the current time in the usrp time registers.
mboard | which motherboard to query |
|
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 subdevice.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get a list of possible TX antennas on the subdevice.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the TX bandwidth on the subdevice.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the dboard interface object for the TX subdevice. 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 TX center frequency.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the TX center frequency range.
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 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.
|
inline |
Get the locked status of the LO on the subdevice.
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 an TX subdevice sensor value.
name | the name of the sensor |
chan | the channel index 0 to N-1 |
|
pure virtual |
Get a list of possible TX subdevice sensor names.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the name of the TX subdevice.
chan | the channel index 0 to N-1 |
|
pure virtual |
Get the TX subdevice specification.
mboard | the motherboard index 0 to M-1 |
|
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 |
|
inline |
Read the RSSI value on the RX subdevice.
chan | the channel index 0 to N-1 |
exception | if RSSI readback not supported |
|
pure virtual |
Set the clock configuration for the usrp device. 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 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.
rate | the new master clock rate in Hz |
mboard | the motherboard index 0 to M-1 |
|
pure virtual |
Select the RX antenna on the subdevice.
ant | the antenna name |
chan | the channel index 0 to N-1 |
|
pure virtual |
Set the RX bandwidth on the subdevice.
bandwidth | the bandwidth in Hz |
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 sample rate.
rate | the rate in Sps |
chan | the channel index 0 to N-1 |
|
pure virtual |
Set the RX subdevice 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 subdevice specification |
mboard | the motherboard index 0 to M-1 |
|
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 |
|
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 |
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 subdevice.
ant | the antenna name |
chan | the channel index 0 to N-1 |
|
pure virtual |
Set the TX bandwidth on the subdevice.
bandwidth | the bandwidth in Hz |
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 sample rate.
rate | the rate in Sps |
chan | the channel index 0 to N-1 |
|
pure virtual |
Set the TX subdevice 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 subdevice specification |
mboard | the motherboard index 0 to M-1 |
|
static |
A wildcard channel index.
|
static |
A wildcard gain element name.
|
static |
A wildcard motherboard index.