|
GNU Radio 3.4.2 C++ API
|
The C++ interface the receive side of the USRPThis is the recommended interface to USRP receive functionality for applications that use the USRP but not GNU Radio. More...
#include <usrp_standard.h>

Public Types | |
| enum | { FPGA_MODE_NORMAL = 0x00, FPGA_MODE_LOOPBACK = 0x01, FPGA_MODE_COUNTING = 0x02, FPGA_MODE_COUNTING_32BIT = 0x04 } |
Public Member Functions | |
| ~usrp_standard_rx () | |
| bool | set_decim_rate (unsigned int rate) |
Set decimator rate. rate MUST BE EVEN and in [8, 256]. | |
| bool | set_nchannels (int nchannels) |
Set number of active channels. nchannels must be 1, 2 or 4. | |
| bool | set_mux (int mux) |
| Set input mux configuration. | |
| int | determine_rx_mux_value (const usrp_subdev_spec &ss) |
| int | determine_rx_mux_value (const usrp_subdev_spec &ss_a, const usrp_subdev_spec &ss_b) |
| bool | set_rx_freq (int channel, double freq) |
| set the frequency of the digital down converter. | |
| bool | set_fpga_mode (int mode) |
| set fpga mode | |
| bool | set_ddc_phase (int channel, int phase) |
| Set the digital down converter phase register. | |
| bool | set_format (unsigned int format) |
| Specify Rx data format. | |
| bool | tune (int chan, db_base_sptr db, double target_freq, usrp_tune_result *result) |
| High-level "tune" method. Works for the single channel case. | |
| unsigned int | decim_rate () const |
| double | rx_freq (int channel) const |
| int | nchannels () const |
| int | mux () const |
| unsigned int | format () const |
| bool | start () |
| Start data transfers. Called in base class to derived class order. | |
| bool | stop () |
| Stop data transfers. Called in base class to derived class order. | |
Static Public Member Functions | |
| static usrp_standard_rx_sptr | make (int which_board, unsigned int decim_rate, int nchan=1, int mux=-1, int mode=0, int fusb_block_size=0, int fusb_nblocks=0, const std::string fpga_filename="", const std::string firmware_filename="") |
| invokes constructor, returns shared_ptr or shared_ptr equivalent of 0 if trouble | |
| static unsigned int | make_format (int width=16, int shift=0, bool want_q=true, bool bypass_halfband=false) |
| static int | format_width (unsigned int format) |
| static int | format_shift (unsigned int format) |
| static bool | format_want_q (unsigned int format) |
| static bool | format_bypass_halfband (unsigned int format) |
Protected Member Functions | |
| usrp_standard_rx (int which_board, unsigned int decim_rate, int nchan=1, int mux=-1, int mode=0, int fusb_block_size=0, int fusb_nblocks=0, const std::string fpga_filename="", const std::string firmware_filename="") | |
| bool | write_hw_mux_reg () |
The C++ interface the receive side of the USRP
This is the recommended interface to USRP receive functionality for applications that use the USRP but not GNU Radio.
| anonymous enum |
| usrp_standard_rx::usrp_standard_rx | ( | int | which_board, |
| unsigned int | decim_rate, | ||
| int | nchan = 1, |
||
| int | mux = -1, |
||
| int | mode = 0, |
||
| int | fusb_block_size = 0, |
||
| int | fusb_nblocks = 0, |
||
| const std::string | fpga_filename = "", |
||
| const std::string | firmware_filename = "" |
||
| ) | [protected] |
| usrp_standard_rx::~usrp_standard_rx | ( | ) |
| unsigned int usrp_standard_rx::decim_rate | ( | ) | const |
| int usrp_standard_rx::determine_rx_mux_value | ( | const usrp_subdev_spec & | ss | ) |
Determine the appropriate Rx mux value as a function of the subdevice choosen and the characteristics of the respective daughterboard.
| int usrp_standard_rx::determine_rx_mux_value | ( | const usrp_subdev_spec & | ss_a, |
| const usrp_subdev_spec & | ss_b | ||
| ) |
| unsigned int usrp_standard_rx::format | ( | ) | const |
| static bool usrp_standard_rx::format_bypass_halfband | ( | unsigned int | format | ) | [static] |
| static int usrp_standard_rx::format_shift | ( | unsigned int | format | ) | [static] |
| static bool usrp_standard_rx::format_want_q | ( | unsigned int | format | ) | [static] |
| static int usrp_standard_rx::format_width | ( | unsigned int | format | ) | [static] |
| static usrp_standard_rx_sptr usrp_standard_rx::make | ( | int | which_board, |
| unsigned int | decim_rate, | ||
| int | nchan = 1, |
||
| int | mux = -1, |
||
| int | mode = 0, |
||
| int | fusb_block_size = 0, |
||
| int | fusb_nblocks = 0, |
||
| const std::string | fpga_filename = "", |
||
| const std::string | firmware_filename = "" |
||
| ) | [static] |
invokes constructor, returns shared_ptr or shared_ptr equivalent of 0 if trouble
| which_board | Which USRP board on usb (not particularly useful; use 0) |
| decim_rate | decimation factor |
| nchan | number of channels |
| mux | Rx mux setting, |
| mode | mode |
| fusb_block_size | fast usb xfer block size. Must be a multiple of 512. Use zero for a reasonable default. |
| fusb_nblocks | number of fast usb URBs to allocate. Use zero for a reasonable default. |
| fpga_filename | Name of rbf file to load |
| firmware_filename | Name of ihx file to load |
| static unsigned int usrp_standard_rx::make_format | ( | int | width = 16, |
| int | shift = 0, |
||
| bool | want_q = true, |
||
| bool | bypass_halfband = false |
||
| ) | [static] |
| int usrp_standard_rx::mux | ( | ) | const |
| int usrp_standard_rx::nchannels | ( | ) | const |
| double usrp_standard_rx::rx_freq | ( | int | channel | ) | const |
| bool usrp_standard_rx::set_ddc_phase | ( | int | channel, |
| int | phase | ||
| ) |
Set the digital down converter phase register.
| channel | which ddc channel [0, 3] |
| phase | 32-bit integer phase value. |
| bool usrp_standard_rx::set_decim_rate | ( | unsigned int | rate | ) |
Set decimator rate. rate MUST BE EVEN and in [8, 256].
The final complex sample rate across the USB is adc_freq () / decim_rate () * nchannels ()
| bool usrp_standard_rx::set_format | ( | unsigned int | format | ) |
Specify Rx data format.
| format | format specifier |
Rx data format control register
3 2 1 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +-----------------------------------------+-+-+---------+-------+ | Reserved (Must be zero) |B|Q| WIDTH | SHIFT | +-----------------------------------------+-+-+---------+-------+
SHIFT specifies arithmetic right shift [0, 15] WIDTH specifies bit-width of I & Q samples across the USB [1, 16] (not all valid) Q if set deliver both I & Q, else just I B if set bypass half-band filter.
Right now the acceptable values are:
B Q WIDTH SHIFT 0 1 16 0 0 1 8 8
More valid combos to come.
Default value is 0x00000300 16-bits, 0 shift, deliver both I & Q.
| bool usrp_standard_rx::set_fpga_mode | ( | int | mode | ) |
set fpga mode
| bool usrp_standard_rx::set_mux | ( | int | mux | ) |
Set input mux configuration.
This determines which ADC (or constant zero) is connected to each DDC input. There are 4 DDCs. Each has two inputs.
Mux value:
3 2 1 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +-------+-------+-------+-------+-------+-------+-------+-------+ | Q3 | I3 | Q2 | I2 | Q1 | I1 | Q0 | I0 | +-------+-------+-------+-------+-------+-------+-------+-------+
Each 4-bit I field is either 0,1,2,3 Each 4-bit Q field is either 0,1,2,3 or 0xf (input is const zero) All Q's must be 0xf or none of them may be 0xf
| bool usrp_standard_rx::set_nchannels | ( | int | nchannels | ) |
Set number of active channels. nchannels must be 1, 2 or 4.
The final complex sample rate across the USB is adc_freq () / decim_rate () * nchannels ()
| bool usrp_standard_rx::set_rx_freq | ( | int | channel, |
| double | freq | ||
| ) |
set the frequency of the digital down converter.
channel must be in the range [0,3]. freq is the center frequency in Hz. freq may be either negative or postive. The frequency specified is quantized. Use rx_freq to retrieve the actual value used.
| bool usrp_standard_rx::start | ( | ) |
Start data transfers. Called in base class to derived class order.
Reimplemented from usrp_basic_rx.
| bool usrp_standard_rx::stop | ( | ) |
Stop data transfers. Called in base class to derived class order.
Reimplemented from usrp_basic_rx.
| bool usrp_standard_rx::tune | ( | int | chan, |
| db_base_sptr | db, | ||
| double | target_freq, | ||
| usrp_tune_result * | result | ||
| ) |
High-level "tune" method. Works for the single channel case.
This method adjusts both the daughterboard LO and the DDC so that target_freq ends up at DC in the complex baseband samples.
| chan | which DDC channel we're controlling (almost always 0). | |
| db | the daughterboard we're controlling. | |
| target_freq | the RF frequency we want at DC in the complex baseband. | |
| [out] | result | details how the hardware was configured. |
| bool usrp_standard_rx::write_hw_mux_reg | ( | ) | [protected] |