NAME
Device::USB - Use libusb to access USB devices.
VERSION
Version 0.14
SYNOPSIS
Device::USB provides a Perl wrapper around the libusb library. This supports Perl code controlling and accessing USB devices.
use Device::USB;
my $usb = Device::USB->new();
my $dev = $usb->find_device( $VENDOR, $PRODUCT );
printf "Device: %04X:%04X\n", $dev->idVendor(), $dev->idProduct();
$dev->open();
print "Manufactured by ", $dev->manufacturer(), "\n",
" Product: ", $dev->product(), "\n";
$dev->set_configuration( $CFG );
$dev->control_msg( @params );
...
See the libusb manual for more information about most of the methods. The functionality is generally the same as the libusb function whose name is the method name prepended with "usb_".
DESCRIPTION
This module provides a Perl interface to the C library libusb. This library supports a relatively full set of functionality to access a USB device. In addition to the libusb, functioality, Device::USB provides a few convenience features that are intended to produce a more Perl-ish interface.
These features include:
Using the library initializes it, no need to call the underlying usb_init function.
Object interface reduces namespace pollution and provides a better interface to the library.
The find_device method finds the device associated with a vendor id and product id and creates an appropriate Device::USB::Device object to manipulate the USB device.
Object interfaces to the bus and device data structures allowing read access to information about each.
Device::USB
This class provides an interface to the non-bus and non-device specific functions of the libusb library. In particular, it provides interfaces to find busses and devices. It also provides convenience methods that simplify some of the tasks above.
FUNCTIONS
- new
-
Create a new Device::USB object for accessing the library.
- debug_mode
-
This class method enables low-level debugging messages from the library interface code.
A true argument enables debug mode, a false argument disables it.
- find_busses
-
Returns the number of changes since previous call to the function: the number of busses added or removed.
- find_devices
-
Returns the number of changes since previous call to the function: the number of devices added or removed. Should be called after find_busses.
- find_device
-
Find and a particular USB device based on the vendor and product ids. If more than one device has the same product id from the same vendor, the fist one found will be returned.
- vendor
-
the vendor id
- product
-
product id for that vendor
returns a device reference or undef if none was found.
- list_devices
-
Find all devices matching a vendor id and optional product id. If no product id is given, returns all devices found with the supplied vendor id. If a product id is given, returns all devices matching both the vendor id and product id.
- vendor
-
the vendor id
- product
-
optional product id for that vendor
returns a list of devices matching the supplied criteria or a reference to that array in scalar context
- list_busses
-
Return the complete list of information after finding busses and devices.
By using this function, you do not need to do the find_* calls yourself.
returns a reference to an array of busses.
- get_busses
-
Return the complete list of information after finding busses and devices.
Before calling this function, remember to call find_busses and find_devices.
returns a reference to an array of busses.
DIAGNOSTICS
This is an explanation of the diagnostic and error messages this module can generate.
DEPENDENCIES
This module depends on the Carp, Inline and Inline::C modules, as well as the strict and warnings pragmas. Obviously, libusb must be available since that is the entire reason for the module's existence.
AUTHOR
G. Wade Johnson (wade at anomaly dot org) Paul Archer (paul at paularcher dot org)
Houston Perl Mongers Group
Original author: David Davis
BUGS
Please report any bugs or feature requests to bug-device-usb@rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Device::USB. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
LIMITATIONS
So far, this module has only been tested on Linux. It should work on any OS that supports the libusb library. Several people have reported problems compiling the module on Windows.
ACKNOWLEDGEMENTS
Thanks go to various members of the Houston Perl Mongers group for input on the module. But thanks mostly go to Paul Archer who proposed the project and helped with the development.
Thanks to Josep Monés Teixidor for fixing the \bInterfaceClass
bug.
COPYRIGHT & LICENSE
Copyright 2006 Houston Perl Mongers
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 329:
Non-ASCII character seen before =encoding in 'Monés'. Assuming UTF-8