Device-USB
view release on metacpan or search on metacpan
lib/Device/USB/DevEndpoint.pm view on Meta::CPAN
package Device::USB::DevEndpoint;
require 5.006;
use warnings;
use strict;
use Carp;
=encoding utf8
=head1 Device::USB::DevEndpoint
This class encapsulates a USB Device endpoint and the methods that object
would support.
=head1 NAME
Device::USB::DevEndpoint - Access a device endpoint returned by libusb.
=head1 VERSION
Version 0.38
=cut
our $VERSION=0.38;
=head1 SYNOPSIS
Device::USB:DevEndpoint provides a Perl object for accessing an endpoint
of an interface of a USB device using the libusb library.
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();
my $cfg = $dev->config()->[0];
my $inter = $cfg->interfaces()->[0]->[0];
my $ep = $inter->endpoints()->[0];
print "Endpoint:", $inter->bEndpointAddress(),
" name: ", $dev->get_string_simple($iter->iInterface()), "\n";
See USB specification for an explanation of the attributes of an
endpoint.
=head1 DESCRIPTION
This module defines a Perl object that represents the data associated with
a USB interface endpoint. The object provides read-only access to the
important data associated with the endpoint.
=head2 METHODS
There are several accessor methods that return data from the interface.
Each is named after the field that they return. These accessors include:
=cut
# I need to build a lot of accessors
sub _make_descr_accessor
{
my $name = shift;
## no critic (ProhibitStringyEval)
return eval <<"EOE";
sub $name
{
my \$self = shift;
return \$self->{$name};
}
EOE
}
=over 4
=item bEndpointAddress
=item bmAttributes
=item wMaxPacketSize
=item bInterval
=item bRefresh
=item bSynchAddress
=cut
_make_descr_accessor( 'bEndpointAddress' );
_make_descr_accessor( 'bmAttributes' );
_make_descr_accessor( 'wMaxPacketSize' );
_make_descr_accessor( 'bInterval' );
_make_descr_accessor( 'bRefresh' );
_make_descr_accessor( 'bSynchAddress' );
=back
=head1 DIAGNOSTICS
This is an explanation of the diagnostic and error messages this module
can generate.
=head1 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.
=head1 AUTHOR
( run in 1.756 second using v1.01-cache-2.11-cpan-39bf76dae61 )