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