summaryrefslogtreecommitdiff
path: root/usrp/host/swig
diff options
context:
space:
mode:
authorJohnathan Corgan2009-08-17 23:46:30 -0400
committerttsou2009-09-15 18:06:27 -0400
commitb5aa407ec2b1bdebc1c950a9428789fe50327776 (patch)
treeecbc04220951ee75640cdcc17048d81525f54d0c /usrp/host/swig
parent895f2e04a9d962cfe56d416691600b5c619ea180 (diff)
downloadgnuradio-b5aa407ec2b1bdebc1c950a9428789fe50327776.tar.gz
gnuradio-b5aa407ec2b1bdebc1c950a9428789fe50327776.tar.bz2
gnuradio-b5aa407ec2b1bdebc1c950a9428789fe50327776.zip
Applied libusb-1.0 patch set from Thomas Tsou <ttsou@vt.edu>:
This patch set updates the usrp to support libusb-1.0. Asynchronous I/O through libusb is added with fusb_libusb1.*, which is heavily based on fusb_linux.*. In short, URB's and ioctl calls are replaced with libusb_transfer structs and native calls. Transfer reaping is handled by libusb and associated callbacks. I get 32Mb/s on all of my machines using test_usrp_standard_rx or tx. Due to the API rewrite in 1.0 from 0.12, there are alot of changes, many are simply name changes. Known Issues: Transmit and receive both work, but not at same time (e.g. usrp_benchmark_usb.py). libusb does not create any internal threads, so for a single session fusb_libusb1 works in the same manner as fusb_linux with the callback called at controlled times. With multiple libusb sessions the callback may occur at any time and threading issues come into play causing behavior to become undefined. The use of separate libusb_contexts _might_ solve this issue; I have not had the time to look into it.
Diffstat (limited to 'usrp/host/swig')
-rw-r--r--usrp/host/swig/usrp_prims.i78
1 files changed, 39 insertions, 39 deletions
diff --git a/usrp/host/swig/usrp_prims.i b/usrp/host/swig/usrp_prims.i
index 78a775cf1..25a3968a8 100644
--- a/usrp/host/swig/usrp_prims.i
+++ b/usrp/host/swig/usrp_prims.i
@@ -42,8 +42,8 @@
enum usrp_load_status_t { ULS_ERROR = 0, ULS_OK, ULS_ALREADY_LOADED };
-struct usb_dev_handle;
-struct usb_device;
+struct libusb_device_handle;
+struct libusb_device;
/*!
* \brief initialize libusb; probe busses and devices.
@@ -63,20 +63,20 @@ void usrp_rescan ();
* configured USRP (firmware loaded)
* unconfigured Cypress FX2 (only if fx2_ok_p is true)
*/
-struct usb_device *usrp_find_device (int nth, bool fx2_ok_p = false);
+struct libusb_device *usrp_find_device (int nth, bool fx2_ok_p = false);
-bool usrp_usrp_p (struct usb_device *q); //< is this a USRP
-bool usrp_usrp0_p (struct usb_device *q); //< is this a USRP Rev 0
-bool usrp_usrp1_p (struct usb_device *q); //< is this a USRP Rev 1
-bool usrp_usrp2_p (struct usb_device *q); //< is this a USRP Rev 2
-int usrp_hw_rev (struct usb_device *q); //< return h/w rev code
-bool usrp_fx2_p (struct usb_device *q); //< is this an unconfigured Cypress FX2
+bool usrp_usrp_p (struct libusb_device *q); //< is this a USRP
+bool usrp_usrp0_p (struct libusb_device *q); //< is this a USRP Rev 0
+bool usrp_usrp1_p (struct libusb_device *q); //< is this a USRP Rev 1
+bool usrp_usrp2_p (struct libusb_device *q); //< is this a USRP Rev 2
+int usrp_hw_rev (struct libusb_device *q); //< return h/w rev code
+bool usrp_fx2_p (struct libusb_device *q); //< is this an unconfigured Cypress FX2
-bool usrp_unconfigured_usrp_p (struct usb_device *q); //< some kind of unconfigured USRP
-bool usrp_configured_usrp_p (struct usb_device *q); //< some kind of configured USRP
+bool usrp_unconfigured_usrp_p (struct libusb_device *q); //< some kind of unconfigured USRP
+bool usrp_configured_usrp_p (struct libusb_device *q); //< some kind of configured USRP
/*!
- * \brief given a usb_device return an instance of the appropriate usb_dev_handle
+ * \brief given a libusb_device return an instance of the appropriate libusb_device_handle
*
* These routines claim the specified interface and select the
* correct alternate interface. (USB nomenclature is totally screwed!)
@@ -84,14 +84,14 @@ bool usrp_configured_usrp_p (struct usb_device *q); //< some kind of configured
* If interface can't be opened, or is already claimed by some other
* process, 0 is returned.
*/
-struct usb_dev_handle *usrp_open_cmd_interface (struct usb_device *dev);
-struct usb_dev_handle *usrp_open_rx_interface (struct usb_device *dev);
-struct usb_dev_handle *usrp_open_tx_interface (struct usb_device *dev);
+struct libusb_device_handle *usrp_open_cmd_interface (struct libusb_device *dev);
+struct libusb_device_handle *usrp_open_rx_interface (struct libusb_device *dev);
+struct libusb_device_handle *usrp_open_tx_interface (struct libusb_device *dev);
/*!
* \brief close interface.
*/
-bool usrp_close_interface (struct usb_dev_handle *udh);
+bool usrp_close_interface (struct libusb_device_handle *udh);
/*!
* \brief load intel hex format file into USRP/Cypress FX2 (8051).
@@ -103,7 +103,7 @@ bool usrp_close_interface (struct usb_dev_handle *udh);
*/
usrp_load_status_t
-usrp_load_firmware (struct usb_dev_handle *udh, const char *filename, bool force);
+usrp_load_firmware (struct libusb_device_handle *udh, const char *filename, bool force);
/*!
* \brief load intel hex format file into USRP FX2 (8051).
@@ -122,7 +122,7 @@ usrp_load_firmware_nth (int nth, const char *filename, bool force);
* \brief load fpga configuration bitstream
*/
usrp_load_status_t
-usrp_load_fpga (struct usb_dev_handle *udh, const char *filename, bool force);
+usrp_load_fpga (struct libusb_device_handle *udh, const char *filename, bool force);
/*!
* \brief load the regular firmware and fpga bitstream in the Nth USRP.
@@ -136,12 +136,12 @@ bool usrp_load_standard_bits (int nth, bool force);
%include <fpga_regs_standard.h>
-bool usrp_write_fpga_reg (struct usb_dev_handle *udh, int reg, int value);
+bool usrp_write_fpga_reg (struct libusb_device_handle *udh, int reg, int value);
%inline %{
int
-usrp_read_fpga_reg (struct usb_dev_handle *udh, int reg)
+usrp_read_fpga_reg (struct libusb_device_handle *udh, int reg)
{
int value;
bool ok = usrp_read_fpga_reg (udh, reg, &value);
@@ -153,37 +153,37 @@ usrp_read_fpga_reg (struct usb_dev_handle *udh, int reg)
%}
-bool usrp_set_fpga_reset (struct usb_dev_handle *udh, bool on);
-bool usrp_set_fpga_tx_enable (struct usb_dev_handle *udh, bool on);
-bool usrp_set_fpga_rx_enable (struct usb_dev_handle *udh, bool on);
-bool usrp_set_fpga_tx_reset (struct usb_dev_handle *udh, bool on);
-bool usrp_set_fpga_rx_reset (struct usb_dev_handle *udh, bool on);
-bool usrp_set_led (struct usb_dev_handle *udh, int which, bool on);
+bool usrp_set_fpga_reset (struct libusb_device_handle *udh, bool on);
+bool usrp_set_fpga_tx_enable (struct libusb_device_handle *udh, bool on);
+bool usrp_set_fpga_rx_enable (struct libusb_device_handle *udh, bool on);
+bool usrp_set_fpga_tx_reset (struct libusb_device_handle *udh, bool on);
+bool usrp_set_fpga_rx_reset (struct libusb_device_handle *udh, bool on);
+bool usrp_set_led (struct libusb_device_handle *udh, int which, bool on);
-bool usrp_check_rx_overrun (struct usb_dev_handle *udh, bool *overrun_p);
-bool usrp_check_tx_underrun (struct usb_dev_handle *udh, bool *underrun_p);
+bool usrp_check_rx_overrun (struct libusb_device_handle *udh, bool *overrun_p);
+bool usrp_check_tx_underrun (struct libusb_device_handle *udh, bool *underrun_p);
// i2c_read and i2c_write are limited to a maximum len of 64 bytes.
-bool usrp_i2c_write (struct usb_dev_handle *udh, int i2c_addr,
+bool usrp_i2c_write (struct libusb_device_handle *udh, int i2c_addr,
void *buf, int len);
-bool usrp_i2c_read (struct usb_dev_handle *udh, int i2c_addr,
+bool usrp_i2c_read (struct libusb_device_handle *udh, int i2c_addr,
void *buf, int len);
// spi_read and spi_write are limited to a maximum of 64 bytes
// See usrp_spi_defs.h for more info
-bool usrp_spi_write (struct usb_dev_handle *udh,
+bool usrp_spi_write (struct libusb_device_handle *udh,
int optional_header, int enables, int format,
unsigned char *buf, int len);
-bool usrp_spi_read (struct usb_dev_handle *udh,
+bool usrp_spi_read (struct libusb_device_handle *udh,
int optional_header, int enables, int format,
unsigned char *buf, int len);
-bool usrp_9862_write (struct usb_dev_handle *udh,
+bool usrp_9862_write (struct libusb_device_handle *udh,
int which_codec, // [0, 1]
int regno, // [0, 63]
int value); // [0, 255]
@@ -191,7 +191,7 @@ bool usrp_9862_write (struct usb_dev_handle *udh,
%inline %{
int
-usrp_9862_read (struct usb_dev_handle *udh, int which_codec, int reg)
+usrp_9862_read (struct libusb_device_handle *udh, int which_codec, int reg)
{
unsigned char value;
bool ok = usrp_9862_read (udh, which_codec, reg, &value);
@@ -206,7 +206,7 @@ usrp_9862_read (struct usb_dev_handle *udh, int which_codec, int reg)
%inline %{
bool
-usrp_eeprom_write (struct usb_dev_handle *udh, int i2c_addr,
+usrp_eeprom_write (struct libusb_device_handle *udh, int i2c_addr,
int eeprom_offset, const std::string buf)
{
return usrp_eeprom_write (udh, i2c_addr, eeprom_offset,
@@ -214,7 +214,7 @@ usrp_eeprom_write (struct usb_dev_handle *udh, int i2c_addr,
}
std::string
-usrp_eeprom_read (struct usb_dev_handle *udh, int i2c_addr,
+usrp_eeprom_read (struct libusb_device_handle *udh, int i2c_addr,
int eeprom_offset, int len)
{
if (len <= 0)
@@ -230,12 +230,12 @@ usrp_eeprom_read (struct usb_dev_handle *udh, int i2c_addr,
%}
-bool usrp_write_aux_dac (struct usb_dev_handle *uhd, int slot,
+bool usrp_write_aux_dac (struct libusb_device_handle *uhd, int slot,
int which_dac, int value);
%inline %{
-int usrp_read_aux_adc (struct usb_dev_handle *udh, int slot, int which_adc)
+int usrp_read_aux_adc (struct libusb_device_handle *udh, int slot, int which_adc)
{
int value;
bool ok = usrp_read_aux_adc (udh, slot, which_adc, &value);
@@ -253,7 +253,7 @@ int usrp_read_aux_adc (struct usb_dev_handle *udh, int slot, int which_adc)
* Note that this only works on a configured usrp.
* \returns non-zero length string iff successful.
*/
-std::string usrp_serial_number(struct usb_dev_handle *udh);
+std::string usrp_serial_number(struct libusb_device_handle *udh);
/*!
* \brief usrp daughterboard id to name mapping