Provided by: libusb-libusb-perl_0.09-2build3_amd64
NAME
USB::LibUSB::XS - Raw XS bindings to the libusb-1.0 <http://libusb.info/> API.
SYNOPSIS
# import all the constants and non-method subroutines use USB::LibUSB::XS; my ($rv, $ctx) = USB::LibUSB::XS->init(); $ctx->set_debug(LIBUSB_LOG_LEVEL_WARNING); my ($vendor_id, $product_id) = (0x1234, 0x5678); my $handle = $ctx->open_device_with_vid_pid($vendor_id, $product_id); $rv = $handle->set_auto_detach_kernel_driver(1); $rv = $handle->claim_interface($interface); $rv = $handle->bulk_transfer_write($endpoint, "some data", $timeout); ($rv, my $data) = $handle->bulk_transfer_read($endpoint, $length, $timeout);
DESCRIPTION
USB::LibUSB::XS provides the raw XS access to the libusb-1.0 API, which can then be used by modules like USB::LibUSB, which is a more user frienly interface.
METHODS/FUNCTIONS
The following API is documented in the excellent libusb documentation <http://libusb.sourceforge.net/api-1.0/>. Library initialization/deinitialization Implementation status: complete. set_debug $ctx->set_debug(LIBUSB_LOG_LEVEL_DEBUG); init my ($rv, $ctx) = USB::LibUSB::XS->init(); exit $ctx->exit(); Device handling and enumeration Implementation status: complete. get_device_list my ($rv, @device_list) = $ctx->get_device_list(); @device_list contains USB::LibUSB::XS::Device objects. get_bus_number my $bus_number = $dev->get_bus_number(); get_port_number my $port_number = $dev->get_port_number(); get_port_numbers my ($rv, @port_numbers) = $dev->get_port_numbers(); get_parent my $parent_dev = $dev->get_parent(); get_device_address my $address = $dev->get_device_address(); get_device_speed my $speed = $dev->get_device_speed(); get_max_packet_size my $size = $dev->get_max_packet_size($endpoint); get_max_iso_packet_size my $size = $dev->get_max_iso_packet_size($endpoint); ref_device $dev = $dev->ref_device(); unref_device $dev->unref_device(); open my ($rv, $handle) = $dev->open(); Return a USB::LibUSB::XS::Device::Handle object in $handle if $rv is 0. open_device_with_vid_pid my $handle = $ctx->open_device_with_vid_pid(0x1111, 0x2222); Return undef on error. close $handle->close(); get_device my $dev = $hanlde->get_device(); get_configuration my $config = $handle->get_configuration(); set_configuration my $rv = $handle->set_configuration($config); claim_interface my $rv = $handle->claim_interface($interface_number); release_interface my $rv = $handle->release_interface($interface_number); set_interface_alt_setting my $rv = $handle->set_interface_alt_setting($interface_number, $alternate_setting); clear_halt my $rv = $handle->clear_halt($endpoint); reset_device my $rv = $handle->reset_device(); kernel_driver_active my $is_active = $handle->kernelt_driver_active($interface_number); detach_kernel_driver my $rv = $handle->detach_kernel_driver($interface_number); attach_kernel_driver my $rv = $handle->attach_kernel_driver($interface_number); set_auto_detach_kernel_driver my $rv = $handle->set_auto_detach_kernel_driver($enable); Miscellaneous Implementation status: complete. libusb_has_capability my $has_cap = libusb_has_capability($capability); libusb_error_name my $error_name = libusb_error_name($error_code); libusb_get_version my $version_hash = libusb_get_version(); my $major = $version_hash->{major}; libusb_setlocale my $rv = libusb_setlocale($locale); libusb_strerror my $strerror = libusb_strerror($error_code); USB descriptors Implementation status: complete. All descriptors are returned as hash references. get_device_descriptor my ($rv, $desc) = $dev->get_device_descriptor(); my $iSerialNumber = $desc->{iSerialNumber}; get_active_config_descriptor my ($rv, $config) = $dev->get_active_config_descriptor($ctx); my $iConfiguration = $config->{iConfiguration}; get_config_descriptor my ($rv, $config) = $dev->get_config_descriptor($ctx, $config_index); get_config_descriptor_by_value my ($rv, $config) = $dev->get_config_descriptor_by_value($ctx, $bConfigurationValue); get_bos_descriptor my ($rv, $bos) = $handle->get_bos_descriptor($ctx); get_string_descriptor_ascii my ($rv, $data) = $handle->get_string_descriptor_ascii($desc_index, $length); get_descriptor my ($rv, $data) = $handle->get_descriptor($desc_type, $desc_index, $length); get_string_descriptor my ($rv, $data) = $handle->get_string_descriptor($desc_index, $langid, $length); Device hotplug event notification Implementation status: To be implemented. Asynchronous device I/O Implementation status: To be implemented. Polling and timing Implementation status: To be implemented. Synchronous device I/O Implementation status: complete. Timeouts are given in milliseconds. control_transfer_write my $rv = $handle->control_transfer_write($bmRequestType, $bRequest, $wValue, $wIndex, $data, $timeout); control_transfer_read my ($rv, $data) = $handle->control_transfer_read($bmRequestType, $bRequest, $wValue, $wIndex, $length, $timeout); bulk_tranfer_write my $rv = $handle->bulk_transfer_write($endpoint, $data, $timeout); bulk_transfer_read my ($rv, $data) = $handle->bulk_transfer_read($endpoint, $length, $timeout); interrupt_transfer_write my $rv = $handle->interrupt_transfer_write($endpoint, $data, $timeout); interrupt_transfer_read my ($rv, $data) = $handle->interrupt_transfer_read($endpoint, $length, $timeout);
REPORTING BUGS
Please report bugs at <https://github.com/lab-measurement/USB-LibUSB/issues>.
CONTACT
Feel free to contact us at the #labmeasurement channel on Freenode IRC.
AUTHOR
Simon Reinhardt, <simon.reinhardt@physik.uni-r.de>
COPYRIGHT AND LICENSE
Copyright (C) 2017 by Simon Reinhardt This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.24.0 or, at your option, any later version of Perl 5 you may have available.