-
Utilisation de la bibliothèque libusb-0.1.
- Documentation sommaire à http://libusb.sourceforge.net/doc/index.html.
- Enumeration des périphériques USB :
struct usb_bus *bus;
struct usb_device *dev;
usb_find_busses();
usb_find_devices();
for(bus=usb_busses;bus;bus=bus->next){
for(dev=bus->devices;dev;dev=dev->next){
printf("Device Found @ Address %s\n",dev->filename);
printf("Vendor ID 0x0%x\n",dev->descriptor.idVendor);
printf("Product ID 0x0%x\n",dev->descriptor.idProduct);
}
}
- Ouverture/fermeture du périphérique à la sauce Unix :
usb_dev_handle *handle=usb_open(dev);
if(handle==NULL){ perror("usb_open"); exit(-1); }
/* ... some ... code */
int status=usb_close(handle);
if(status<0){ perror("usb_close"); exit(-1); }
- Si le méchant noyau est passé avant vous :
usb_detach_kernel_driver_np(handle,interface);
/* Warning; code specific to Linux */
- Utilisation d'une configuration du périphérique :
int configuration=valueof("bConfigurationValue");
int status=usb_set_configuration(handle,configuration);
if(status<0){ perror("usb_set_configuration"); exit(-1); }
- Appropriation d'une interface (fonctionnalité USB) :
int interface=valueof("bInterfaceNumber");
int status=usb_claim_interface(handle,interface);
if(status<0){ perror("usb_claim_interface"); exit(-1); }
/* ... some code ... */
status=usb_release_interface(handle,interface);
if(status<0){ perror("usb_release_interface"); exit(-1); }