73 XsLibUsb::XsLibUsb(
void)
79 XsLibUsb::~XsLibUsb(
void)
81 delete m_libraryLoader;
84 void XsLibUsb::tryLoadLibrary()
86 if (m_libraryLoader->isLoaded())
88 if (m_libraryLoader->load(
"libusb-1.0.so"))
90 if (m_libraryLoader->load(
"libusb1.0.so"))
94 void XsLibUsb::initLibrary()
98 memset(&m_libUsb, 0,
sizeof(m_libUsb));
100 if (m_libraryLoader->isLoaded())
102 m_libUsb.init = (libUSB_init*)m_libraryLoader->resolve(
"libusb_init");
103 m_libUsb.exit = (libUSB_exit*)m_libraryLoader->resolve(
"libusb_exit");
104 m_libUsb.open = (libUSB_open*)m_libraryLoader->resolve(
"libusb_open");
105 m_libUsb.close = (libUSB_close*)m_libraryLoader->resolve(
"libusb_close");
106 m_libUsb.kernel_driver_active = (libUSB_kernel_driver_active*)m_libraryLoader->resolve(
"libusb_kernel_driver_active");
107 m_libUsb.attach_kernel_driver = (libUSB_attach_kernel_driver*)m_libraryLoader->resolve(
"libusb_attach_kernel_driver");
108 m_libUsb.detach_kernel_driver = (libUSB_detach_kernel_driver*)m_libraryLoader->resolve(
"libusb_detach_kernel_driver");
109 m_libUsb.ref_device = (libUSB_ref_device*)m_libraryLoader->resolve(
"libusb_ref_device");
110 m_libUsb.unref_device = (libUSB_unref_device*)m_libraryLoader->resolve(
"libusb_unref_device");
111 m_libUsb.claim_interface = (libUSB_claim_interface*)m_libraryLoader->resolve(
"libusb_claim_interface");
112 m_libUsb.release_interface = (libUSB_release_interface*)m_libraryLoader->resolve(
"libusb_release_interface");
113 m_libUsb.get_active_config_descriptor = (libUSB_get_active_config_descriptor*)m_libraryLoader->resolve(
"libusb_get_active_config_descriptor");
114 m_libUsb.free_config_descriptor = (libUSB_free_config_descriptor*)m_libraryLoader->resolve(
"libusb_free_config_descriptor");
115 m_libUsb.get_bus_number = (libUSB_get_bus_number*)m_libraryLoader->resolve(
"libusb_get_bus_number");
116 m_libUsb.get_device = (libUSB_get_device*)m_libraryLoader->resolve(
"libusb_get_device");
117 m_libUsb.get_device_address = (libUSB_get_device_address*)m_libraryLoader->resolve(
"libusb_get_device_address");
118 m_libUsb.get_device_descriptor = (libUSB_get_device_descriptor*)m_libraryLoader->resolve(
"libusb_get_device_descriptor");
119 m_libUsb.get_device_list = (libUSB_get_device_list*)m_libraryLoader->resolve(
"libusb_get_device_list");
120 m_libUsb.free_device_list = (libUSB_free_device_list*)m_libraryLoader->resolve(
"libusb_free_device_list");
121 m_libUsb.get_string_descriptor_ascii = (libUSB_get_string_descriptor_ascii*)m_libraryLoader->resolve(
"libusb_get_string_descriptor_ascii");
122 m_libUsb.bulk_transfer = (libUSB_bulk_transfer*)m_libraryLoader->resolve(
"libusb_bulk_transfer");
123 m_libUsb.set_debug = (libUSB_set_debug*)m_libraryLoader->resolve(
"libusb_set_debug");
137 int XsLibUsb::init(libusb_context** ctx)
140 return m_libUsb.init(ctx);
142 return LIBUSB_ERROR_NOT_SUPPORTED;
148 void XsLibUsb::exit(libusb_context* ctx)
170 int XsLibUsb::open(libusb_device* dev, libusb_device_handle** handle)
173 return m_libUsb.open(dev, handle);
175 return LIBUSB_ERROR_NOT_SUPPORTED;
184 void XsLibUsb::close(libusb_device_handle* dev_handle)
187 m_libUsb.close(dev_handle);
205 int XsLibUsb::kernel_driver_active(libusb_device_handle* dev,
int interface_number)
207 if (m_libUsb.kernel_driver_active)
208 return m_libUsb.kernel_driver_active(dev, interface_number);
210 return LIBUSB_ERROR_NOT_SUPPORTED;
230 int XsLibUsb::attach_kernel_driver(libusb_device_handle* dev,
int interface_number)
232 if (m_libUsb.attach_kernel_driver)
233 return m_libUsb.attach_kernel_driver(dev, interface_number);
235 return LIBUSB_ERROR_NOT_SUPPORTED;
253 int XsLibUsb::detach_kernel_driver(libusb_device_handle* dev,
int interface_number)
255 if (m_libUsb.detach_kernel_driver)
256 return m_libUsb.detach_kernel_driver(dev, interface_number);
258 return LIBUSB_ERROR_NOT_SUPPORTED;
265 libusb_device* XsLibUsb::ref_device(libusb_device* dev)
267 if (m_libUsb.ref_device)
268 return m_libUsb.ref_device(dev);
277 void XsLibUsb::unref_device(libusb_device* dev)
279 if (m_libUsb.unref_device)
280 m_libUsb.unref_device(dev);
304 int XsLibUsb::claim_interface(libusb_device_handle* dev,
int interface_number)
306 if (m_libUsb.claim_interface)
307 return m_libUsb.claim_interface(dev, interface_number);
309 return LIBUSB_ERROR_NOT_SUPPORTED;
325 int XsLibUsb::release_interface(libusb_device_handle* dev,
int interface_number)
327 if (m_libUsb.release_interface)
328 return m_libUsb.release_interface(dev, interface_number);
330 return LIBUSB_ERROR_NOT_SUPPORTED;
346 int XsLibUsb::get_active_config_descriptor(libusb_device* dev,
struct libusb_config_descriptor** config)
348 if (m_libUsb.get_active_config_descriptor)
349 return m_libUsb.get_active_config_descriptor(dev, config);
351 return LIBUSB_ERROR_NOT_SUPPORTED;
360 void XsLibUsb::free_config_descriptor(
struct libusb_config_descriptor* config)
362 if (m_libUsb.free_config_descriptor)
363 m_libUsb.free_config_descriptor(config);
370 uint8_t XsLibUsb::get_bus_number(libusb_device* dev)
372 if (m_libUsb.get_bus_number)
373 return m_libUsb.get_bus_number(dev);
385 libusb_device* XsLibUsb::get_device(libusb_device_handle* dev_handle)
387 if (m_libUsb.get_device)
388 return m_libUsb.get_device(dev_handle);
397 uint8_t XsLibUsb::get_device_address(libusb_device* dev)
399 if (m_libUsb.get_device_address)
400 return m_libUsb.get_device_address(dev);
413 int XsLibUsb::get_device_descriptor(libusb_device* dev,
struct libusb_device_descriptor* desc)
415 if (m_libUsb.get_device_descriptor)
416 return m_libUsb.get_device_descriptor(dev, desc);
418 return LIBUSB_ERROR_NOT_SUPPORTED;
438 ssize_t XsLibUsb::get_device_list(libusb_context* ctx, libusb_device*** list)
440 if (m_libUsb.get_device_list)
441 return m_libUsb.get_device_list(ctx, list);
443 return LIBUSB_ERROR_NOT_SUPPORTED;
451 void XsLibUsb::free_device_list(libusb_device** list,
int unref_devices)
453 if (m_libUsb.free_device_list)
454 m_libUsb.free_device_list(list, unref_devices);
467 int XsLibUsb::get_string_descriptor_ascii(libusb_device_handle* dev, uint8_t desc_index,
unsigned char* data,
int length)
469 if (m_libUsb.get_string_descriptor_ascii)
470 return m_libUsb.get_string_descriptor_ascii(dev, desc_index, data, length);
472 return LIBUSB_ERROR_NOT_SUPPORTED;
506 int XsLibUsb::bulk_transfer(libusb_device_handle* dev_handle,
unsigned char endpoint,
unsigned char* data,
int length,
int* actual_length,
unsigned int timeout)
508 if (m_libUsb.bulk_transfer)
509 return m_libUsb.bulk_transfer(dev_handle, endpoint, data, length, actual_length, timeout);
511 return LIBUSB_ERROR_NOT_SUPPORTED;
541 void XsLibUsb::set_debug(libusb_context* ctx,
int level)
543 if (m_libUsb.set_debug)
544 m_libUsb.set_debug(ctx, level);
551 bool haveWinUsb =
false;
554 #endif // HAVE_LIBUSB