Revision b96088b6 host/lib/transport/libusb1_device_handle.cpp
| b/host/lib/transport/libusb1_device_handle.cpp | ||
|---|---|---|
| 17 | 17 |
|
| 18 | 18 |
#include "libusb1_base.hpp" |
| 19 | 19 |
#include <uhd/utils/assert.hpp> |
| 20 |
#include <iostream> |
|
| 20 | 21 |
|
| 21 | 22 |
using namespace uhd::transport; |
| 22 | 23 |
|
| ... | ... | |
| 91 | 92 |
device_addr)); |
| 92 | 93 |
} |
| 93 | 94 |
|
| 94 |
std::vector<usb_device_handle::sptr> usb_device_handle::get_device_list() |
|
| 95 |
std::vector<usb_device_handle::sptr> usb_device_handle::get_device_list(boost::uint16_t vid, boost::uint16_t pid)
|
|
| 95 | 96 |
{
|
| 96 | 97 |
libusb_context *ctx = NULL; |
| 97 |
std::vector<libusb_device *> libusb_device_list;
|
|
| 98 |
libusb_device** libusb_device_list;
|
|
| 98 | 99 |
std::vector<usb_device_handle::sptr> device_handle_list; |
| 100 |
libusb_device_descriptor desc; |
|
| 99 | 101 |
|
| 100 | 102 |
libusb::init(&ctx, libusb_debug_level); |
| 101 | 103 |
|
| 102 |
libusb_device_list = libusb::get_fsf_device_list(ctx); |
|
| 103 |
|
|
| 104 |
for (size_t i = 0; i < libusb_device_list.size(); i++) {
|
|
| 104 |
size_t dev_size = libusb_get_device_list(ctx, &libusb_device_list); |
|
| 105 |
for (size_t i = 0; i < dev_size; i++) {
|
|
| 105 | 106 |
libusb_device *dev = libusb_device_list[i]; |
| 106 |
device_handle_list.push_back(make_usb_device_handle(dev)); |
|
| 107 |
if(libusb_get_device_descriptor(dev, &desc) < 0) {
|
|
| 108 |
UHD_ASSERT_THROW("USB: failed to get device descriptor");
|
|
| 109 |
} |
|
| 110 |
if(desc.idVendor == vid && desc.idProduct == pid) {
|
|
| 111 |
device_handle_list.push_back(make_usb_device_handle(dev)); |
|
| 112 |
} |
|
| 107 | 113 |
} |
| 108 | 114 |
|
| 109 | 115 |
libusb_exit(ctx); |
Also available in: Unified diff