Previous Up

5  Récupération des informations

L’objectif est d’utiliser la bibliothèque USB libusb-1.0 pour écrire un programme C permettant de récupérer des informations de votre périphérique USB.

Vous avez le manuel complet de la bibliothèque à l’URL http://libusb.sourceforge.net/api-1.0/modules.html. Vous trouverez un résumé de la bibliothèque à l’URL http://rex.plil.fr/Enseignement/Systeme/Systeme.IMA4/. Pour cette utilisation assez basique nous utiliserons les fonctions de communication bloquantes.

5.1  Recherche du périphérique USB

Pour simplifier la programmation vous utiliserez la fonction libusb_open_device_with_vid_pid pour trouver votre périphérique USB.  
 
Faites afficher le numéro du bus sur lequel se trouve le périphérique ainsi que son adresse sur ce bus.

5.2  Réclamer l’interface spécifique

Commencez par récupérer la configuration courante du périphérique. La fonction libusb_get_active_config_descriptor qui permet cela nécessite un pointeur sur périphérique de type libusb_device *. Vous pouvez obtenir ce pointeur en fonction de la "poignée" dont vous disposez par la fonction libusb_get_device. Faites afficher la valeur de cette configuration.  
 
Il vous reste ensuite à réclamer l’interface de type "spécifique vendeur" pour votre usage. Attention, la fonction libusb_claim_interface nécessite le numéro de l’interface et pas son indice. Vous allez donc parcourir la structure arborescente de description de configuration du périphérique de la façon suivante :

Affichez l’indice et le numéro de l’interface détectée et réclamée. Affichez aussi les numéros et directions des points d’accès trouvés.

5.3  Fermeture du périphérique USB

Ecrivez une fonction qui libère le périphérique détecté. Pour cela, relachez l’interface réclamée puis fermez la "poignée". Pour faire cela facilement, vous aurez besoin du couple "poignée" et numéro d’interface. Prévoyez donc une structure pour pouvoir passer facilement ce couple de fonction en fonction. Affichez l’indice et le numéro de l’interface libérée.

5.4  Fonctionnalité de l’utilitaire

Votre programme doit pouvoir s’utiliser dans deux modes différents, initialisation des informations et récupération des informations. Le mode est déterminé par la valeur du premier paramètre passé au programme.  
 
Dans le mode initialisation, votre programme va juste envoyer un octet au périphérique sur le point d’accès "OUT" de l’interface spécifique. A minima, le programme doit permettre de remettre à zéro les compteurs de lecture et d’écriture des pages.  
 
Dans le mode récupération, votre programme doit simplement lancer une requête sur le point d’accès "IN". Les quelques octets retournés doivent contenir les informations sur votre "mémoire de masse", a minima le nombre de pages écrites et lues. Votre programme doit afficher ces informations de façon claire pour un humain.  
 
La fonction de la bibliothèque à utiliser pour les communications est libusb_interrupt_transfer.


Previous Up