Web lists-archives.com

Re: where is usb.h?




Mark Copper wrote:
> On Tue, Apr 4, 2017 at 2:36 PM, songbird <songbird@xxxxxxxxxxx> wrote:
>> Mark Copper wrote:
>>>>
>>>>   is it missing a build dependency or something?
>>>>
>>>>   what does apt-get build-dep libinline-c-perl do?
>>>>
>>>
>>>
>>> The following NEW packages will be installed:
>>>   libfile-sharedir-install-perl libio-all-perl libspiffy-perl
>>>   libsub-uplevel-perl libtest-warn-perl
>>>
>>> I wasn't expecting that.
>>>
>>> The package libdevice-usb-perl seemed to install without difficulty.
>>> It works in the sense that the main constructor functions, but other
>>> things don't work.  I know it's old code but I just need to read a
>>> number from an interrupt endpoint so I was just trying chase down
>>> whether it was an easy-to-fix problem.
>>
>>   remember that installing a package for use
>> is different than installing a package for
>> building.
>>
>>   did you try the same command for libdevice-usb-perl?
>>
>>   aka:
>>
>> apt-get build-dep libdevice-usb-perl
>>
>>   ?
>
> Nothing at all there.  I'm thinking it must be something simple.  This
> test produces the output below which made me think not all the C code
> was getting read in properly.
>
> #!/usr/bin/perl
>
> use warnings;
> use strict;
> use Device::USB;
> use Carp;
> use Data::Dumper;
> $Data::Dumper::Indent = 1;
>
> my $data;
> my $VENDOR=0x0b67;
> my $PRODUCT=0x555e;
> my $usb = Device::USB->new();
> my $dev = $usb->find_device( $VENDOR, $PRODUCT );
> croak "Device not found.\n" unless defined $dev;
> print "Device found: ", $dev->filename(), ": ";
> printf "Device: %04X:%04X\n", $dev->idVendor(), $dev->idProduct();
> if($dev->open())
>     {
>         print "\t", $dev->manufacturer(), ": ", $dev->product(), "\n";
>         print Dumper( $dev );
>     }
> print "Bytes read: " . $dev->interrupt_read(129, $data, 64, 1000) . "\n";
> print "Data read: " . $data . "\n";
> my $cfg = $dev->config()->[0];
> print "Config:", $cfg->iConfiguration(), ": interface count: ",
> $cfg->nNumInterfaces(), "\n";
> __END__
>
>
> Output:
> Use of uninitialized value in concatenation (.) or string at
> /usr/lib/x86_64-linux-gnu/perl5/5.20/Device/USB.pm line 10.
> Use of uninitialized value in concatenation (.) or string at
> /usr/lib/x86_64-linux-gnu/perl5/5.20/Device/USB.pm line 10.
> Use of uninitialized value in concatenation (.) or string at
> /usr/lib/x86_64-linux-gnu/perl5/5.20/Device/USB.pm line 10.
> Device found: 003: Device: 0B67:555E
>     :
> $VAR1 = bless( {
>   'descriptor' => {
>     'idVendor' => 2919,
>     'iProduct' => 2,
>     'bcdDevice' => '0.04',
>     'bcdUSB' => '1.10',
>     'idProduct' => 21854,
>     'bDeviceSubClass' => 0,
>     'iSerialNumber' => 3,
>     'bNumConfigurations' => 1,
>     'bDeviceProtocol' => 0,
>     'bMaxPacketSize0' => 64,
>     'iManufacturer' => 1,
>     'bDescriptorType' => 1,
>     'bDeviceClass' => 0
>   },
>   'config' => [
>     bless( {
>       'bConfigurationValue' => 1,
>       'bNumInterfaces' => 1,
>       'MaxPower' => 100,
>       'bmAttributes' => 128,
>       'wTotalLength' => 41,
>       'interfaces' => [
>         [
>           bless( {
>             'bAlternateSetting' => 0,
>             'endpoints' => [
>               bless( {
>                 'bDescriptorType' => 5,
>                 'bSynchAddress' => 0,
>                 'bRefresh' => 0,
>                 'wMaxPacketSize' => 6,
>                 'bEndpointAddress' => 129,
>                 'bInterval' => 50,
>                 'bmAttributes' => 3
>               }, 'Device::USB::DevEndpoint' ),
>               bless( {
>                 'bmAttributes' => 3,
>                 'bInterval' => 100,
>                 'bEndpointAddress' => 2,
>                 'bSynchAddress' => 0,
>                 'wMaxPacketSize' => 14,
>                 'bRefresh' => 0,
>                 'bDescriptorType' => 5
>               }, 'Device::USB::DevEndpoint' )
>             ],
>             'bInterfaceNumber' => 0,
>             'bInterfaceSubClass' => 141,
>             'bNumEndpoints' => 2,
>             'bInterfaceClass' => 3,
>             'bDescriptorType' => 4,
>             'bInterfaceProtocol' => 141,
>             'iInterface' => 0
>           }, 'Device::USB::DevInterface' )
>         ]
>       ],
>       'bDescriptorType' => 2,
>       'iConfiguration' => 4
>     }, 'Device::USB::DevConfig' )
>   ],
>   'handle' => 16283552,
>   'device' => 21499456,
>   'filename' => '003'
> }, 'Device::USB::Device' );
> Bytes read: -2
> Data read:
> Can't locate object method "nNumInterfaces" via package
> "Device::USB::DevConfig" at ./read_usb.pl line 26, <DATA> line 1.


hmm, in the docs i see:

===
       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.
===

  but i don't see any references above to the Inline
or Inline::C so i'm not sure if that's the problem or
not?

  i'm not familiar enough with perl to otherwise
debug this.


  songbird