Commit 58268c729ae4227f1c8abe0547e0fef4d0c4947c

Authored by rguillom
1 parent 142ecdaf

Qq modifs mineurs

Showing 1 changed file with 50 additions and 49 deletions   Show diff stats
init_USB.c
... ... @@ -12,7 +12,7 @@ struct TABLEAU{
12 12 };
13 13  
14 14 struct EP {
15   - uint8_t ep; //adresse d'accès de l'endpoint
  15 + uint8_t ep; //adresse d'accès de l'endpoint
16 16 unsigned char io; //décrit si c'est une entrée ou une sortie
17 17 };
18 18  
... ... @@ -26,7 +26,7 @@ void init_tableau(){
26 26 tab_pa.dernier=0;
27 27 }
28 28  
29   -//énumération des périphériques USB
  29 +/*énumération des périphériques USB*/
30 30 void enum_periph(libusb_context *context){
31 31 libusb_device **list;
32 32 ssize_t count=libusb_get_device_list(context,&list);
... ... @@ -43,90 +43,91 @@ void enum_periph(libusb_context *context){
43 43 printf("Vendor ID 0x0%x\n",desc.idVendor);
44 44 printf("Product ID 0x0%x\n",desc.idProduct);
45 45  
  46 + /* PEUT VARIER D'UNE CARTE A L'AUTRE ?*/
46 47 if(desc.idVendor == 0x413c && desc.idProduct == 0x2003) found = device; //recherche de notre périphérique et sauvegarde dans found
47 48 //printf("device :%d \n handle : %d\n", device, found); //test si le "found" reste le meme
48 49 }
49 50 libusb_free_device_list(list,1);
50 51 }
51 52  
  53 +
52 54 void config_periph(){
53   -
54 55 struct libusb_config_descriptor *config=NULL;
55 56 libusb_get_active_config_descriptor(found,&config); //on récupère la structure config_descriptor config dans found
56 57  
57 58 for(int num_intf=0;num_intf < config->bNumInterfaces ;num_intf++){
58 59  
59 60 //Si le méchant noyau est passé avant nous
60   - int interface; //on récupère ttes les numéros des alt_settings numéro 0 => for et détach
  61 + int interface; //on récupère tous les numéros des alt_settings numéro 0 => for et détach
61 62  
62 63 interface=config->interface[num_intf].altsetting[0].bInterfaceNumber;
63 64  
64   - // on detach cette interface
  65 + // on detache cette interface
65 66 if(libusb_kernel_driver_active(handle,interface)){
66   - int status=libusb_detach_kernel_driver(handle,config->interface);
  67 + int status=libusb_detach_kernel_driver(handle,interface);
67 68 if(status!=0){ perror("libusb_detach_kernel_driver"); exit(-1); } //si status!=0 il y a une erreur
68 69 }
69 70 printf("indice intf trouvée %d\n",interface);
70 71 }
71 72  
72 73  
73   - //Utilisation d'une configuration du périphérique
74   - int configuration=config->bConfigurationValue;
75   - int status=libusb_set_configuration(handle,configuration);
76   - if(status!=0){ perror("libusb_set_configuration"); exit(-1); }
  74 + //Utilisation d'une configuration du périphérique
  75 + int configuration=config->bConfigurationValue;
  76 + int status=libusb_set_configuration(handle,configuration);
  77 + if(status!=0){ perror("libusb_set_configuration"); exit(-1); }
77 78  
78   - //Appropriation d'une interface (fonctionnalité USB)
79   - status=libusb_claim_interface(handle,interface);
80   - if(status!=0){ perror("libusb_claim_interface"); exit(-1); } //si status!=0 il y a une erreur
81   -
82   - printf("indice interface claim %d",interface);
  79 + //Appropriation d'une interface (fonctionnalité USB)
  80 + status=libusb_claim_interface(handle,interface);
  81 + if(status!=0){ perror("libusb_claim_interface"); exit(-1); } //si status!=0 il y a une erreur
83 82  
  83 + printf("indice interface claim %d",interface);
  84 +
84 85  
85   - //Sauvegarde des points d'accès
86   - for(int num_intf=0;num_intf < config->bNumInterfaces ;num_intf++){
87   - for(num_ep=0;num_ep<config->interface[num_intf].altsetting[0].bNumEndpoints ;num_ep++){
88   - int eptype = config->interface[num_intf].altsetting[0].endpoint.bDescriptorType;
89   - if(eptype & 0b11==LIBUSB_TRANSFER_TYPE_INTERRUPT){ //sauvegarde dans tab_pa du point d'accès qui est une interruption
90   - struct EP ep1;
  86 + //Sauvegarde des points d'accès
  87 + for(int num_intf=0;num_intf < config->bNumInterfaces ;num_intf++){
  88 + for(num_ep=0;num_ep<config->interface[num_intf].altsetting[0].bNumEndpoints ;num_ep++){
  89 + int eptype = config->interface[num_intf].altsetting[0].endpoint.bDescriptorType;
  90 + if(eptype & 0b11==LIBUSB_TRANSFER_TYPE_INTERRUPT){ //sauvegarde dans tab_pa du point d'accès qui est une interruption
  91 + struct EP ep1;
91 92  
92   - //LAISSER TOMBER INPUT OUTPUT
93   - ep1.ep=config->interface[num_intf].altsetting[0].endpoint.bEndpointAddress;
94   - if (num_intf==0){
95   - if (eptype & 0b10000000 == LIBUSB_ENDPOINT_OUT){
96   - tab_pa.tableau[num_intf].ep=ep1.ep;
97   - tab_pa.tableau[num_intf].io=1;
98   - tab_pa.dernier++;
99   - break;
100   - } //sortie => io=1
101   - }
102   - else{
103   - if (eptype & 0b10000000 == LIBUSB_ENDPOINT_IN) {
104   - tab_pa.tableau[num_intf].ep=ep1.ep;
105   -
106   - tab_pa.tableau[num_intf].io=0;
107   - tab_pa.dernier++;
108   - if (num_ep >2)break;//entrée => io=0
109   - }
110   - }
  93 + //LAISSER TOMBER INPUT OUTPUT
  94 + ep1.ep=config->interface[num_intf].altsetting[0].endpoint.bEndpointAddress;
  95 + if (num_intf==0){
  96 + if (eptype & 0b10000000 == LIBUSB_ENDPOINT_OUT){
  97 + tab_pa.tableau[num_intf].ep=ep1.ep;
  98 + tab_pa.tableau[num_intf].io=1;
  99 + tab_pa.dernier++;
  100 + break;
  101 + } //sortie => io=1
111 102 }
  103 + else{
  104 + if (eptype & 0b10000000 == LIBUSB_ENDPOINT_IN) {
  105 + tab_pa.tableau[num_intf].ep=ep1.ep;
  106 + tab_pa.tableau[num_intf].io=0;
  107 + tab_pa.dernier++;
  108 + if (num_ep >2)break;//entrée => io=0
  109 + }
  110 + }
112 111 }
113   - if (num_intf = 3) break;
114 112 }
  113 + if (num_intf = 3) break;
  114 + }
115 115  
116   - //release des interfaces
117   - for(int num_intf=0;num_intf < config->bNumInterfaces ;num_intf++){
118   - status=libusb_release_interface(handle,interface);
119   - if(status!=0){ perror("libusb_release_interface"); exit(-1); }
  116 + //release des interfaces
  117 + for(int num_intf=0;num_intf < config->bNumInterfaces ;num_intf++){
  118 + status=libusb_release_interface(handle,interface);
  119 + if(status!=0){ perror("libusb_release_interface"); exit(-1); }
120 120  
121   - }
  121 + }
122 122 }
  123 +
123 124 int main(){
124 125 init_tableau(); // initialisation tableau point d'accès endpoint
125 126 //initialisation de la bibliothèque libusb-1.0
126 127 libusb_context *context;
127 128 int status=libusb_init(&context);
128 129 if(status!=0) {perror("libusb_init"); exit(-1);}
129   - //fin init
  130 + //fin inititialisation
130 131  
131 132 enum_periph(context); //énumération périphériques USB
132 133  
... ... @@ -138,9 +139,9 @@ int main(){
138 139  
139 140  
140 141  
141   -
  142 + /*fermeture du périphérique*/
142 143 libusb_close(handle);
143 144  
144   - libusb_exit(context);
  145 + libusb_exit(context); //fermeture de la bibliothèque
145 146 return 0;
146 147 }
... ...