aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/transport/libusb1_device_handle.cpp
diff options
context:
space:
mode:
authorNick Foster <nick@nerdnetworks.org>2010-08-31 16:44:30 -0700
committerNick Foster <nick@nerdnetworks.org>2010-08-31 16:44:30 -0700
commitb96088b692a5c44974919ee36e253b6ea8c51972 (patch)
tree5200ca3a1b589a83aca06e91c559154ddea82249 /host/lib/transport/libusb1_device_handle.cpp
parentad55e25aeb273fb7278c6d5175cd0df01fc90924 (diff)
downloaduhd-b96088b692a5c44974919ee36e253b6ea8c51972.tar.gz
uhd-b96088b692a5c44974919ee36e253b6ea8c51972.tar.bz2
uhd-b96088b692a5c44974919ee36e253b6ea8c51972.zip
EEPROM burning in UHD. Changed some USB device handle stuff. Added usrp_init_eeprom.cpp. Hacked up the firmware makefile to behave and to generate .bin EEPROM images instead of IHX.
Diffstat (limited to 'host/lib/transport/libusb1_device_handle.cpp')
-rw-r--r--host/lib/transport/libusb1_device_handle.cpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/host/lib/transport/libusb1_device_handle.cpp b/host/lib/transport/libusb1_device_handle.cpp
index 5d9d8faf0..43d0f0e26 100644
--- a/host/lib/transport/libusb1_device_handle.cpp
+++ b/host/lib/transport/libusb1_device_handle.cpp
@@ -17,6 +17,7 @@
#include "libusb1_base.hpp"
#include <uhd/utils/assert.hpp>
+#include <iostream>
using namespace uhd::transport;
@@ -91,19 +92,24 @@ usb_device_handle::sptr make_usb_device_handle(libusb_device *dev)
device_addr));
}
-std::vector<usb_device_handle::sptr> usb_device_handle::get_device_list()
+std::vector<usb_device_handle::sptr> usb_device_handle::get_device_list(boost::uint16_t vid, boost::uint16_t pid)
{
libusb_context *ctx = NULL;
- std::vector<libusb_device *> libusb_device_list;
+ libusb_device** libusb_device_list;
std::vector<usb_device_handle::sptr> device_handle_list;
+ libusb_device_descriptor desc;
libusb::init(&ctx, libusb_debug_level);
- libusb_device_list = libusb::get_fsf_device_list(ctx);
-
- for (size_t i = 0; i < libusb_device_list.size(); i++) {
+ size_t dev_size = libusb_get_device_list(ctx, &libusb_device_list);
+ for (size_t i = 0; i < dev_size; i++) {
libusb_device *dev = libusb_device_list[i];
- device_handle_list.push_back(make_usb_device_handle(dev));
+ if(libusb_get_device_descriptor(dev, &desc) < 0) {
+ UHD_ASSERT_THROW("USB: failed to get device descriptor");
+ }
+ if(desc.idVendor == vid && desc.idProduct == pid) {
+ device_handle_list.push_back(make_usb_device_handle(dev));
+ }
}
libusb_exit(ctx);