1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
#include <stdio.h>
#include <usb.h>
#include <errno.h> // Bibliothèque des erreurs.
struct usb_bus *busses;
struct usb_bus *bus;
struct usb_device *dev,*fdev;
usb_dev_handle *device_handle = 0;
char info[100];
char tram[4] = {0};
char name[20];
char manu[100];
char serial[100];
void driver_init(void)
{
usb_init(); //Initialisation de la librairie (par example determine le chemin du repertoire des bus et peripheriques)
usb_find_busses(); // Enumère tous les bus USB du systemes
usb_find_devices(); // Enumère tous les peripheriques sur tous les Bus présents)
// Parcours de la liste des bus et des périphériques
}
char usb_scan(void)
{
int r,ret,x,y,retour,ret2,num;
for (bus = usb_busses; bus; bus = bus->next)
{
for (dev = bus->devices; dev; dev = dev->next)
{ for (x=0;x<4 && r>0;x++)
printf("%d ",string[x]);
if(dev->config->interface->altsetting->bInterfaceProtocol==2)
{
device_handle=usb_open(dev);
if(device_handle)
{
printf("ouvert \n");
}
else
{
printf("Operation failed :");
exit(1);
}
num = usb_get_driver_np(device_handle, dev->config->interface->altsetting->bInterfaceNumber, name, sizeof(name));
usb_get_string_simple(device_handle,dev->descriptor.iManufacturer,manu,sizeof(manu));
usb_get_string_simple(device_handle,dev->descriptor.iSerialNumber,serial,sizeof(serial));
usb_get_string_simple(device_handle,dev->descriptor.iProduct,info,sizeof(info));
printf("==========\n");
printf("bus : %s Device %s \n",bus->dirname,dev->filename);
printf("id Vendor: %d (%x) \n",dev->descriptor.idVendor,dev->descriptor.idVendor);
printf("id Product : %d\n",dev->descriptor.idProduct);
printf("Device Protocol : %d \n",dev->descriptor.bDeviceProtocol);
printf("Report Length : %d \n",dev->descriptor.bLength);
printf("Decriptor Type : %d \n",dev->descriptor.bDescriptorType);
printf("EndPoints : %d \n",dev->config->interface->altsetting->bNumEndpoints);
printf("Interface Class : %d \n",dev->config->interface->altsetting->bInterfaceClass);
printf("Protocol : %d \n",dev->config->interface->altsetting->bInterfaceProtocol);
printf("Interface Number: %d \n",dev->config->interface->altsetting->bInterfaceNumber);
printf("End point addresses : 0x%x \n",dev->config->interface->altsetting->endpoint->bEndpointAddress);
printf("Device Manfucaturer : %s \n",manu);
printf("Product Name : %s \n",info);
printf("Device Serial Number: %s \n",serial);
printf("usb driver (Default): %s \n",name);
printf("===========\n");
ret2 = usb_detach_kernel_driver_np(device_handle, dev->config->interface->altsetting->bInterfaceNumber);
retour = usb_claim_interface(device_handle, dev->config->interface->altsetting->bInterfaceNumber);
ret = usb_release_interface(device_handle, dev->config->interface->altsetting->bInterfaceNumber);
for (y=0;y<5000;y++)
{
r=usb_interrupt_read(device_handle,0x81,tram,4,0);
for (x=0;x<4 && r>0;x++)
printf("%d ",tram[x]);
}
usb_release_interface(device_handle,dev->config->interface->altsetting->bInterfaceNumber);
usb_close(device_handle);
}
}
}
return 0;
}
int main(void)
{
driver_init();
usb_scan();
return 0;
} |
Partager