summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorttsou <ttsou@vt.edu>2009-09-14 14:43:37 -0400
committerttsou <ttsou@vt.edu>2009-09-16 17:08:52 -0400
commit68b0364367f8d99a34f0c38e8a0db0a290f297fc (patch)
treedd4e01d9ace7e8bd7cc34976dd31a4d949e142fa
parent55e8ef7a4f94e7b6562ed29626a578cca1fcec34 (diff)
Commonized more usrp_prims code and renamed libusb-0.12 files to libusb0
-rw-r--r--usrp/host/include/usrp/usrp_prims.h.in28
-rw-r--r--usrp/host/lib/Makefile.am8
-rw-r--r--usrp/host/lib/fusb.h6
-rw-r--r--usrp/host/lib/fusb_libusb1.cc6
-rw-r--r--usrp/host/lib/fusb_linux.cc6
-rw-r--r--usrp/host/lib/usrp_basic_libusb0.cc (renamed from usrp/host/lib/usrp_basic_libusb.cc)0
-rw-r--r--usrp/host/lib/usrp_prims_common.cc45
-rw-r--r--usrp/host/lib/usrp_prims_libusb0.cc (renamed from usrp/host/lib/usrp_prims_libusb.cc)43
-rw-r--r--usrp/host/lib/usrp_prims_libusb1.cc48
9 files changed, 98 insertions, 92 deletions
diff --git a/usrp/host/include/usrp/usrp_prims.h.in b/usrp/host/include/usrp/usrp_prims.h.in
index 49a9d3d62a..7f5457afc2 100644
--- a/usrp/host/include/usrp/usrp_prims.h.in
+++ b/usrp/host/include/usrp/usrp_prims.h.in
@@ -260,20 +260,26 @@ std::string usrp_serial_number(libusb_device_handle *udh);
* Internal functions
*/
-libusb_device_handle *usrp_open_interface(libusb_device *dev,
- int interface,
- int altinterface);
+libusb_device_handle *
+usrp_open_interface(libusb_device *dev, int interface, int altinterface);
-int write_cmd (libusb_device_handle *udh, int request, int value,
- int index, unsigned char *bytes, int len);
+int write_cmd (libusb_device_handle *udh, int request, int value, int index,
+ unsigned char *bytes, int len);
-libusb_device_descriptor get_usb_device_descriptor (libusb_device *q);
+/*
+ * Compatibility functions
+ */
+
+libusb_device *_get_usb_device (libusb_device_handle *udh);
+
+libusb_device_descriptor _get_usb_device_descriptor (libusb_device *q);
-libusb_device *get_usb_device (libusb_device_handle *udh);
+int _get_usb_string_descriptor (libusb_device_handle *udh, int index,
+ unsigned char* data, int length);
-int usb_control_transfer (struct usb_dev_handle *udh, int request_type,
- int request, int value, int index,
- unsigned char *data, int length,
- unsigned int timeout);
+int _usb_control_transfer (struct usb_dev_handle *udh, int request_type,
+ int request, int value, int index,
+ unsigned char *data, int length,
+ unsigned int timeout);
#endif /* _USRP_PRIMS_H_ */
diff --git a/usrp/host/lib/Makefile.am b/usrp/host/lib/Makefile.am
index 7c5dc25a5c..7455b15369 100644
--- a/usrp/host/lib/Makefile.am
+++ b/usrp/host/lib/Makefile.am
@@ -75,15 +75,15 @@ darwin_CODE = \
win32_CODE = \
fusb_win32.cc \
fusb_sysconfig_win32.cc \
- usrp_prims_libusb.cc \
- usrp_basic_libusb.cc
+ usrp_prims_libusb0.cc \
+ usrp_basic_libusb0.cc
linux_CODE = \
fusb_linux.cc \
fusb_sysconfig_linux.cc \
- usrp_prims_libusb.cc \
- usrp_basic_libusb.cc
+ usrp_prims_libusb0.cc \
+ usrp_basic_libusb0.cc
ra_wb_CODE = \
fusb_ra_wb.cc \
diff --git a/usrp/host/lib/fusb.h b/usrp/host/lib/fusb.h
index 341e570a43..2ff7dc89fa 100644
--- a/usrp/host/lib/fusb.h
+++ b/usrp/host/lib/fusb.h
@@ -25,6 +25,10 @@
#ifndef _FUSB_H_
#define _FUSB_H_
+/*
+ * This is bad, but it works for now. The fusb header files are not installed.
+ */
+
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@@ -33,7 +37,7 @@
struct libusb_device_handle;
#else
struct usb_dev_handle;
-typedef struct usb_dev_handle libusb_device_handle;
+typedef usb_dev_handle libusb_device_handle;
#endif
struct libusb_context;
diff --git a/usrp/host/lib/fusb_libusb1.cc b/usrp/host/lib/fusb_libusb1.cc
index e50e440817..9d79cfe52a 100644
--- a/usrp/host/lib/fusb_libusb1.cc
+++ b/usrp/host/lib/fusb_libusb1.cc
@@ -20,9 +20,9 @@
* Boston, MA 02110-1301, USA.
*/
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
+//#ifdef HAVE_CONFIG_H
+//#include "config.h"
+//#endif
#include <fusb_libusb1.h>
#include <libusb-1.0/libusb.h>
diff --git a/usrp/host/lib/fusb_linux.cc b/usrp/host/lib/fusb_linux.cc
index 6c484569f3..0b3aaed714 100644
--- a/usrp/host/lib/fusb_linux.cc
+++ b/usrp/host/lib/fusb_linux.cc
@@ -20,9 +20,9 @@
* Boston, MA 02110-1301, USA.
*/
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
+//#ifdef HAVE_CONFIG_H
+//#include "config.h"
+//#endif
#include <fusb_linux.h>
#include <usb.h> // libusb header
diff --git a/usrp/host/lib/usrp_basic_libusb.cc b/usrp/host/lib/usrp_basic_libusb0.cc
index bd22d6ad4f..bd22d6ad4f 100644
--- a/usrp/host/lib/usrp_basic_libusb.cc
+++ b/usrp/host/lib/usrp_basic_libusb0.cc
diff --git a/usrp/host/lib/usrp_prims_common.cc b/usrp/host/lib/usrp_prims_common.cc
index c71ba90b0f..c9fcf80df5 100644
--- a/usrp/host/lib/usrp_prims_common.cc
+++ b/usrp/host/lib/usrp_prims_common.cc
@@ -67,7 +67,6 @@ static const int hash_slot_addr[2] = {
static const char *default_firmware_filename = "std.ihx";
static const char *default_fpga_filename = "std_2rxhb_2tx.rbf";
-
static char *
find_file (const char *filename, int hw_rev)
{
@@ -117,7 +116,7 @@ static void power_down_9862s (libusb_device_handle *udh);
int
usrp_hw_rev (libusb_device *q)
{
- libusb_device_descriptor desc = get_usb_device_descriptor(q);
+ libusb_device_descriptor desc = _get_usb_device_descriptor(q);
return desc.bcdDevice & 0x00FF;
}
@@ -127,14 +126,14 @@ usrp_hw_rev (libusb_device *q)
static bool
_usrp_configured_p (libusb_device *q)
{
- libusb_device_descriptor desc = get_usb_device_descriptor(q);
+ libusb_device_descriptor desc = _get_usb_device_descriptor(q);
return (desc.bcdDevice & 0xFF00) != 0;
}
bool
usrp_usrp_p (libusb_device *q)
{
- libusb_device_descriptor desc = get_usb_device_descriptor(q);
+ libusb_device_descriptor desc = _get_usb_device_descriptor(q);
return (desc.idVendor == USB_VID_FSF
&& desc.idProduct == USB_PID_FSF_USRP);
}
@@ -142,7 +141,7 @@ usrp_usrp_p (libusb_device *q)
bool
usrp_fx2_p (libusb_device *q)
{
- libusb_device_descriptor desc = get_usb_device_descriptor(q);
+ libusb_device_descriptor desc = _get_usb_device_descriptor(q);
return (desc.idVendor == USB_VID_CYPRESS
&& desc.idProduct == USB_PID_CYPRESS_FX2);
}
@@ -218,7 +217,7 @@ write_internal_ram (libusb_device_handle *udh, unsigned char *buf,
if (n > quanta)
n = quanta;
- a = usb_control_transfer (udh, 0x40, 0xA0, addr, 0,
+ a = _usb_control_transfer (udh, 0x40, 0xA0, addr, 0,
(unsigned char*)(buf + (addr - start_addr)), n, 1000);
if (a < 0){
@@ -424,7 +423,7 @@ usrp_set_hash (libusb_device_handle *udh, int which,
which &= 1;
// we use the Cypress firmware down load command to jam it in.
- int r = usb_control_transfer (udh, 0x40, 0xa0, hash_slot_addr[which], 0,
+ int r = _usb_control_transfer (udh, 0x40, 0xa0, hash_slot_addr[which], 0,
(unsigned char *) hash, USRP_HASH_SIZE, 1000);
return r == USRP_HASH_SIZE;
}
@@ -436,7 +435,7 @@ usrp_get_hash (libusb_device_handle *udh, int which,
which &= 1;
// we use the Cypress firmware upload command to fetch it.
- int r = usb_control_transfer (udh, 0xc0, 0xa0, hash_slot_addr[which], 0,
+ int r = _usb_control_transfer (udh, 0xc0, 0xa0, hash_slot_addr[which], 0,
(unsigned char *) hash, USRP_HASH_SIZE, 1000);
return r == USRP_HASH_SIZE;
}
@@ -489,7 +488,7 @@ usrp1_fpga_read (libusb_device_handle *udh,
bool
usrp_write_fpga_reg (libusb_device_handle *udh, int reg, int value)
{
- switch (usrp_hw_rev (get_usb_device (udh))){
+ switch (usrp_hw_rev (_get_usb_device (udh))){
case 0: // not supported ;)
abort();
@@ -501,7 +500,7 @@ usrp_write_fpga_reg (libusb_device_handle *udh, int reg, int value)
bool
usrp_read_fpga_reg (libusb_device_handle *udh, int reg, int *value)
{
- switch (usrp_hw_rev (get_usb_device (udh))){
+ switch (usrp_hw_rev (_get_usb_device (udh))){
case 0: // not supported ;)
abort();
@@ -935,12 +934,12 @@ static void
power_down_9862s (libusb_device_handle *udh)
{
static const unsigned char regs[] = {
- REG_RX_PWR_DN, 0x01, // everything
- REG_TX_PWR_DN, 0x0f, // pwr dn digital and analog_both
- REG_TX_MODULATOR, 0x00 // coarse & fine modulators disabled
+ REG_RX_PWR_DN, 0x01, // everything
+ REG_TX_PWR_DN, 0x0f, // pwr dn digital and analog_both
+ REG_TX_MODULATOR, 0x00 // coarse & fine modulators disabled
};
- switch (usrp_hw_rev (get_usb_device (udh))){
+ switch (usrp_hw_rev (_get_usb_device (udh))){
case 0:
break;
@@ -1214,6 +1213,24 @@ usrp_write_dboard_offsets (libusb_device_handle *udh, int slot_id,
0, buf, sizeof (buf));
}
+// ----------------------------------------------------------------
+
+std::string
+usrp_serial_number(libusb_device_handle *udh)
+{
+ libusb_device_descriptor desc =
+ _get_usb_device_descriptor (_get_usb_device (udh));
+
+ unsigned char iserial = desc.iSerialNumber;
+ if (iserial == 0)
+ return "";
+
+ unsigned char buf[1024];
+ if (_get_usb_string_descriptor (udh, iserial, buf, sizeof(buf)) < 0)
+ return "";
+
+ return (char*) buf;
+}
diff --git a/usrp/host/lib/usrp_prims_libusb.cc b/usrp/host/lib/usrp_prims_libusb0.cc
index 999dc58979..7ff8310644 100644
--- a/usrp/host/lib/usrp_prims_libusb.cc
+++ b/usrp/host/lib/usrp_prims_libusb0.cc
@@ -42,27 +42,35 @@ extern "C" {
using namespace ad9862;
+/*
+ * libusb 0.12 / 1.0 compatibility
+ */
+
+struct usb_device *
+_get_usb_device (struct usb_dev_handle *udh)
+{
+ return usb_device (udh);
+}
+
struct usb_device_descriptor
-get_usb_device_descriptor (struct usb_device *q)
+_get_usb_device_descriptor (struct usb_device *q)
{
return q->descriptor;
}
-
-struct usb_device *
-get_usb_device (struct usb_dev_handle *udh)
+int
+_get_usb_string_descriptor (struct usb_dev_handle *udh, int index,
+ unsigned char* data, int length)
{
- return usb_device (udh);
+ return usb_get_string_simple (udh, index, (char*) data, length);
}
int
-usb_control_transfer (struct usb_dev_handle *udh, int request_type,
+_usb_control_transfer (struct usb_dev_handle *udh, int request_type,
int request, int value, int index,
unsigned char *data, int length, unsigned int timeout)
{
- return usb_control_msg (udh, request_type,
- request, value, index,
+ return usb_control_msg (udh, request_type,request, value, index,
(char*) data, length, (int) timeout);
-
}
@@ -197,20 +205,3 @@ write_cmd (struct usb_dev_handle *udh,
return r;
}
-
-// ----------------------------------------------------------------
-
-
-std::string
-usrp_serial_number(struct usb_dev_handle *udh)
-{
- unsigned char iserial = usb_device(udh)->descriptor.iSerialNumber;
- if (iserial == 0)
- return "";
-
- char buf[1024];
- if (usb_get_string_simple(udh, iserial, buf, sizeof(buf)) < 0)
- return "";
-
- return buf;
-}
diff --git a/usrp/host/lib/usrp_prims_libusb1.cc b/usrp/host/lib/usrp_prims_libusb1.cc
index 5cea97d8bb..4ce81509bf 100644
--- a/usrp/host/lib/usrp_prims_libusb1.cc
+++ b/usrp/host/lib/usrp_prims_libusb1.cc
@@ -49,9 +49,18 @@ extern "C" {
using namespace ad9862;
+/*
+ * libusb 0.12 / 1.0 compatibility
+ */
+
+struct libusb_device *
+_get_usb_device (struct libusb_device_handle *udh)
+{
+ return libusb_get_device (udh);
+}
struct libusb_device_descriptor
-get_usb_device_descriptor(struct libusb_device *q)
+_get_usb_device_descriptor(struct libusb_device *q)
{
int ret;
struct libusb_device_descriptor desc;
@@ -62,21 +71,20 @@ get_usb_device_descriptor(struct libusb_device *q)
return desc;
}
-struct libusb_device *
-get_usb_device (struct libusb_device_handle *udh)
+int
+_get_usb_string_descriptor (struct libusb_device_handle *udh, int index,
+ unsigned char* data, int length)
{
- return libusb_get_device (udh);
+ return libusb_get_string_descriptor_ascii (udh, (uint8_t) index, data, length);
}
int
-usb_control_transfer (struct usb_dev_handle *udh, uint8_t request_type,
- uint8_t request, uint16_t value, uint16_t index,
- unsigned char *data, uint16_t length,
- unsigned int timeout)
+_usb_control_transfer (struct libusb_dev_handle *udh, int request_type,
+ int request, int value, int index,
+ unsigned char *data, int length, unsigned int timeout)
{
return libusb_control_transfer (udh, request_type, request, value, index,
- *data, length, timeout);
-
+ data, length, timeout);
}
@@ -199,23 +207,3 @@ write_cmd (struct libusb_device_handle *udh,
return r;
}
-
-// ----------------------------------------------------------------
-
-std::string
-usrp_serial_number(struct libusb_device_handle *udh)
-{
- struct libusb_device_descriptor desc;
- if (libusb_get_device_descriptor(libusb_get_device(udh), &desc) < 0)
- fprintf (stderr, "usrp: libusb_get_device_descriptor failed\n");
-
- unsigned char iserial = desc.iSerialNumber;
- if (iserial == 0)
- return "";
-
- unsigned char buf[1024];
- if (libusb_get_string_descriptor_ascii(udh, iserial, buf, sizeof(buf)) < 0)
- return "";
-
- return (char*) buf;
-}