Cross Reference: testlibusb.c
xref
: /
solaris-userland
/
components
/
libusb
/
wrapper
/
src
/
testlibusb.c
Home
History
Annotate
Line#
Navigate
Download
Search
only in
./
229
N/A
/*
229
N/A
*
testlibusb.c
229
N/A
*
229
N/A
* Test suite program
229
N/A
*/
229
N/A
229
N/A
#
include
<
stdio.h
>
229
N/A
#
include
"
usb.h
"
229
N/A
229
N/A
void
229
N/A
dump_data
(
unsigned
char
*
data
,
int
size
)
229
N/A
{
229
N/A
int
i;
229
N/A
229
N/A
if
(
size
) {
229
N/A
printf
(
"data dump:"
);
229
N/A
for
(i = 0; i <
size
; i++) {
229
N/A
if
(i %
16
== 0) {
229
N/A
printf
(
"\n%08x "
, i);
229
N/A
}
229
N/A
printf
(
"%02x "
, (
uchar_t
)
data
[i]);
229
N/A
}
229
N/A
printf
(
"\n"
);
229
N/A
}
229
N/A
}
229
N/A
229
N/A
void
print_endpoint
(
struct
usb_endpoint_descriptor
*
endpoint
)
229
N/A
{
229
N/A
printf
(
" Endpoint descriptor:\n"
);
229
N/A
printf
(
" bEndpointAddress: %02xh\n"
,
endpoint
->
bEndpointAddress
);
229
N/A
printf
(
" bmAttributes: %02xh\n"
,
endpoint
->
bmAttributes
);
229
N/A
printf
(
" wMaxPacketSize: %d\n"
,
endpoint
->
wMaxPacketSize
);
229
N/A
printf
(
" bInterval: %d\n"
,
endpoint
->
bInterval
);
229
N/A
printf
(
" bRefresh: %d\n"
,
endpoint
->
bRefresh
);
229
N/A
printf
(
" bSynchAddress: %d\n"
,
endpoint
->
bSynchAddress
);
229
N/A
printf
(
" extralen: %d\n"
,
endpoint
->
extralen
);
229
N/A
dump_data
(
endpoint
->
extra
,
endpoint
->
extralen
);
229
N/A
}
229
N/A
229
N/A
void
print_altsetting
(
struct
usb_interface_descriptor
*
interface
)
229
N/A
{
229
N/A
int
i;
229
N/A
229
N/A
printf
(
" Interface descriptor:\n"
);
229
N/A
printf
(
" bInterfaceNumber: %d\n"
,
interface
->
bInterfaceNumber
);
229
N/A
printf
(
" bAlternateSetting: %d\n"
,
interface
->
bAlternateSetting
);
229
N/A
printf
(
" bNumEndpoints: %d\n"
,
interface
->
bNumEndpoints
);
229
N/A
printf
(
" bInterfaceClass: %d\n"
,
interface
->
bInterfaceClass
);
229
N/A
printf
(
" bInterfaceSubClass: %d\n"
,
interface
->
bInterfaceSubClass
);
229
N/A
printf
(
" bInterfaceProtocol: %d\n"
,
interface
->
bInterfaceProtocol
);
229
N/A
printf
(
" iInterface: %d\n"
,
interface
->
iInterface
);
229
N/A
printf
(
" extralen: %d\n"
,
interface
->
extralen
);
229
N/A
dump_data
(
interface
->
extra
,
interface
->
extralen
);
229
N/A
229
N/A
for
(i = 0; i <
interface
->
bNumEndpoints
; i++)
229
N/A
print_endpoint
(&
interface
->
endpoint
[i]);
229
N/A
}
229
N/A
229
N/A
void
print_interface
(
struct
usb_interface
*
interface
)
229
N/A
{
229
N/A
int
i;
229
N/A
printf
(
"num_altsetting: %d\n"
,
interface
->
num_altsetting
);
229
N/A
229
N/A
for
(i = 0; i <
interface
->
num_altsetting
; i++)
229
N/A
print_altsetting
(&
interface
->
altsetting
[i]);
229
N/A
229
N/A
printf
(
"\n"
);
229
N/A
}
229
N/A
229
N/A
void
print_configuration
(
struct
usb_config_descriptor
*
config
)
229
N/A
{
229
N/A
int
i;
229
N/A
229
N/A
printf
(
" Configuration descriptor:\n"
);
229
N/A
printf
(
" wTotalLength: %d\n"
,
config
->
wTotalLength
);
229
N/A
printf
(
" bNumInterfaces: %d\n"
,
config
->
bNumInterfaces
);
229
N/A
printf
(
" bConfigurationValue: %d\n"
,
config
->
bConfigurationValue
);
229
N/A
printf
(
" iConfiguration: %d\n"
,
config
->
iConfiguration
);
229
N/A
printf
(
" bmAttributes: %02xh\n"
,
config
->
bmAttributes
);
229
N/A
printf
(
" MaxPower: %d\n"
,
config
->
MaxPower
);
229
N/A
229
N/A
printf
(
" extralen: %d\n"
,
config
->
extralen
);
229
N/A
dump_data
(
config
->
extra
,
config
->
extralen
);
229
N/A
229
N/A
for
(i = 0; i <
config
->
bNumInterfaces
; i++)
229
N/A
print_interface
(&
config
->
interface
[i]);
229
N/A
229
N/A
printf
(
"\n"
);
229
N/A
}
229
N/A
229
N/A
void
print_device_descriptor
(
struct
usb_device_descriptor
*
dev
)
229
N/A
{
229
N/A
printf
(
" Device descriptor:\n"
);
229
N/A
printf
(
" bLength: %d\n"
,
dev
->
bLength
);
229
N/A
printf
(
" bDescriptorType: %xh\n"
,
dev
->
bDescriptorType
);
229
N/A
printf
(
" bcdUSB: %xh\n"
,
dev
->
bcdUSB
);
229
N/A
printf
(
" bDeviceClass: %xh\n"
,
dev
->
bDeviceClass
);
229
N/A
printf
(
" bDeviceSubClass: %xh\n"
,
dev
->
bDeviceSubClass
);
229
N/A
printf
(
" bDeviceProtocol: %xh\n"
,
dev
->
bDeviceProtocol
);
229
N/A
printf
(
" bMaxPacketSize0: %xh\n"
,
dev
->
bMaxPacketSize0
);
229
N/A
printf
(
" idVendor: %xh\n"
,
dev
->
idVendor
);
229
N/A
printf
(
" idProduct: %xh\n"
,
dev
->
bcdDevice
);
229
N/A
printf
(
" bcdDevice: %xh\n"
,
dev
->
bcdDevice
);
229
N/A
printf
(
" iManufacturer: %xh\n"
,
dev
->
iManufacturer
);
229
N/A
printf
(
" iProduct: %xh\n"
,
dev
->
iProduct
);
229
N/A
printf
(
" iSerialNumber: %xh\n"
,
dev
->
iSerialNumber
);
229
N/A
printf
(
" bNumConfigurations: %xh\n"
,
dev
->
bNumConfigurations
);
229
N/A
229
N/A
printf
(
"\n"
);
229
N/A
}
229
N/A
229
N/A
int
main
(
void
)
229
N/A
{
229
N/A
struct
usb_bus
*
bus
;
229
N/A
struct
usb_device
*
dev
;
229
N/A
229
N/A
usb_init
();
229
N/A
229
N/A
usb_find_busses
();
229
N/A
usb_find_devices
();
229
N/A
229
N/A
printf
(
"
bus
/
device
idVendor
/
idProduct
\n"
);
229
N/A
229
N/A
for
(
bus
=
usb_busses
;
bus
;
bus
=
bus
->
next
) {
229
N/A
for
(
dev
=
bus
->
devices
;
dev
;
dev
=
dev
->
next
) {
229
N/A
int
i,
ret
;
229
N/A
char
string
[
256
];
229
N/A
usb_dev_handle
*
udev
;
229
N/A
229
N/A
printf
(
"%s/%s %04X/%04X\n"
,
bus
->
dirname
,
dev
->
filename
,
229
N/A
dev
->
descriptor
.
idVendor
,
dev
->
descriptor
.
idProduct
);
229
N/A
229
N/A
udev
=
usb_open
(
dev
);
229
N/A
if
(
udev
) {
229
N/A
if
(
dev
->
descriptor
.
iManufacturer
) {
229
N/A
ret
=
usb_get_string_simple
(
udev
,
dev
->
descriptor
.
iManufacturer
,
string
,
sizeof
(
string
));
229
N/A
if
(
ret
> 0)
229
N/A
printf
(
"- Manufacturer : %s\n"
,
string
);
229
N/A
else
229
N/A
printf
(
"- Unable to fetch manufacturer string %d\n"
,
ret
);
229
N/A
}
229
N/A
229
N/A
229
N/A
if
(
dev
->
descriptor
.
iProduct
) {
229
N/A
ret
=
usb_get_string_simple
(
udev
,
dev
->
descriptor
.
iProduct
,
string
,
sizeof
(
string
));
229
N/A
if
(
ret
> 0)
229
N/A
printf
(
"- Product : %s\n"
,
string
);
229
N/A
else
229
N/A
printf
(
"- Unable to fetch product string\n"
);
229
N/A
}
229
N/A
229
N/A
if
(
dev
->
descriptor
.
iSerialNumber
) {
229
N/A
ret
=
usb_get_string_simple
(
udev
,
dev
->
descriptor
.
iSerialNumber
,
string
,
sizeof
(
string
));
229
N/A
if
(
ret
> 0)
229
N/A
printf
(
"- Serial Number: %s\n"
,
string
);
229
N/A
else
229
N/A
printf
(
"- Unable to fetch serial number string\n"
);
229
N/A
}
229
N/A
usb_close
(
udev
);
229
N/A
}
229
N/A
229
N/A
if
(!
dev
->
config
) {
229
N/A
printf
(
" Couldn't retrieve descriptors\n"
);
229
N/A
continue
;
229
N/A
}
229
N/A
229
N/A
print_device_descriptor
(&
dev
->
descriptor
);
229
N/A
229
N/A
for
(i = 0; i <
dev
->
descriptor
.
bNumConfigurations
; i++) {
229
N/A
print_configuration
(&
dev
->
config
[i]);
229
N/A
}
229
N/A
229
N/A
}
229
N/A
}
229
N/A
229
N/A
return
0;
229
N/A
}
229
N/A