Commit 0fd27a37e7cd495112f24958b18d3c939ed0468c

Authored by rguillom
1 parent c22ab230

fix

Showing 2 changed files with 41 additions and 68 deletions   Show diff stats
@@ -12,27 +12,6 @@ libusb_device *device=NULL; @@ -12,27 +12,6 @@ libusb_device *device=NULL;
12 libusb_device *found=NULL; //notre périphérique 12 libusb_device *found=NULL; //notre périphérique
13 libusb_context *context; 13 libusb_context *context;
14 14
15 -/*  
16 -struct TABLEAU{  
17 - struct EP *tableau[3]; //tableau des points d'accès en interruption  
18 - int dernier;  
19 -};  
20 -  
21 -struct EP {  
22 - uint8_t ep; //adresse d'accès de l'endpoint  
23 - unsigned char io; //décrit si c'est une entrée ou une sortie  
24 -};  
25 -  
26 -//init structure tableau  
27 -struct TABLEAU tab_pa;  
28 -  
29 -void init_tableau(){  
30 - for (int i=0;i<3;i++){  
31 - tab_pa.tableau[i]=NULL;  
32 - }  
33 - tab_pa.dernier=0;  
34 -}  
35 -*/  
36 15
37 /*énumération des périphériques USB*/ 16 /*énumération des périphériques USB*/
38 void enum_periph(){ 17 void enum_periph(){
@@ -60,7 +39,8 @@ void enum_periph(){ @@ -60,7 +39,8 @@ void enum_periph(){
60 /* Recherche de notre périphérique et sauvegarde dans 'found' */ 39 /* Recherche de notre périphérique et sauvegarde dans 'found' */
61 if(desc.idVendor == VENDOR_ID && desc.idProduct == PRODUCT_ID){ 40 if(desc.idVendor == VENDOR_ID && desc.idProduct == PRODUCT_ID){
62 found = device; 41 found = device;
63 - printf("\nPériphérique trouvé @ (Bus:Adresse) %d:%d\n", bus, address); //test si le "found" reste le meme 42 + printf("\nPériphérique trouvé @ (Bus:Adresse) %d:%d\n", bus, address);
  43 + //printf("handle %d\n",found);
64 break; 44 break;
65 } 45 }
66 } 46 }
@@ -128,22 +108,6 @@ void config_periph(unsigned char tab_PA[TAB_PA_SIZE]){ @@ -128,22 +108,6 @@ void config_periph(unsigned char tab_PA[TAB_PA_SIZE]){
128 dernier_PA++; 108 dernier_PA++;
129 tab_PA[dernier_PA] = adresse_PA; 109 tab_PA[dernier_PA] = adresse_PA;
130 printf("\t\tPoint d'accès numéro %d sauvegardé. Adresse : %d\n", dernier_PA, adresse_PA); 110 printf("\t\tPoint d'accès numéro %d sauvegardé. Adresse : %d\n", dernier_PA, adresse_PA);
131 -  
132 - /*  
133 - ep1.ep=config_desc->interface[indice_intf].altsetting[0].endpoint->bEndpointAddress;  
134 - if (indice_intf==0){  
135 - tab_pa.tableau[indice_intf]->ep=ep1.ep;  
136 - tab_pa.tableau[indice_intf]->io=1;  
137 - tab_pa.dernier++;  
138 - }  
139 - else{  
140 - tab_pa.tableau[indice_intf]->ep=ep1.ep;  
141 - tab_pa.tableau[indice_intf]->io=0;  
142 - tab_pa.dernier++;  
143 - if (num_ep >2)break; //entrée => io=0  
144 -  
145 - // Le if et else ci-dessus doivent pouvoir être simplifiés.  
146 - */  
147 } 111 }
148 112
149 } 113 }
@@ -181,7 +145,7 @@ void send_data(unsigned char tab_PA[TAB_PA_SIZE], unsigned char data){ @@ -181,7 +145,7 @@ void send_data(unsigned char tab_PA[TAB_PA_SIZE], unsigned char data){
181 unsigned char PA = tab_PA[0]; //LEDs sur le premier point d'accès 145 unsigned char PA = tab_PA[0]; //LEDs sur le premier point d'accès
182 printf("adresse PA %d\n", tab_PA[0]); 146 printf("adresse PA %d\n", tab_PA[0]);
183 int transferred = 1; //nombre d'octets transférés 147 int transferred = 1; //nombre d'octets transférés
184 - unsigned int timeout = 1000; //temps avant un timeout 148 + unsigned int timeout = 100; //temps avant un timeout
185 int status = libusb_interrupt_transfer(handle, PA, &data, sizeof(data), &transferred, timeout); 149 int status = libusb_interrupt_transfer(handle, PA, &data, sizeof(data), &transferred, timeout);
186 if(status!=0){perror("libusb_interrupt_transfer");exit(-1);} 150 if(status!=0){perror("libusb_interrupt_transfer");exit(-1);}
187 } 151 }
@@ -189,28 +153,36 @@ void send_data(unsigned char tab_PA[TAB_PA_SIZE], unsigned char data){ @@ -189,28 +153,36 @@ void send_data(unsigned char tab_PA[TAB_PA_SIZE], unsigned char data){
189 153
190 /* Lis le contenu des points d'accès de l'interface IN (boutons et joystick) */ 154 /* Lis le contenu des points d'accès de l'interface IN (boutons et joystick) */
191 void receive_data(unsigned char tab_PA[TAB_PA_SIZE], unsigned char *boutons, unsigned char *joystick_x, unsigned char *joystick_y){ 155 void receive_data(unsigned char tab_PA[TAB_PA_SIZE], unsigned char *boutons, unsigned char *joystick_x, unsigned char *joystick_y){
192 - 156 +
  157 + unsigned char PA;
  158 + int length, transferred;
  159 + unsigned int timeout;
  160 +
193 /* Lecture du point d'accès des boutons */ 161 /* Lecture du point d'accès des boutons */
194 - unsigned char PA = tab_PA[1]; //LEDs sur le premier point d'accès  
195 - printf("adresse PA %d\n", tab_PA[1]);  
196 - int transferred = 1; //nombre d'octets transférés  
197 - unsigned int timeout = 1000; //temps avant un timeout 162 + PA = tab_PA[1]; //LEDs sur le premier point d'accès
198 163
199 - int status = libusb_interrupt_transfer(handle, PA, boutons, sizeof(boutons), &transferred, timeout);  
200 - if(status!=0){perror("libusb_interrupt_transfer");printf("erreur lecture boutons, adresse PA %d\n",tab_PA[1]);exit(-1);} 164 + //printf("adresse PA %d\n", tab_PA[1]);
  165 + //printf("handle %d\n",found);
  166 + //printf("boutons %p\n", boutons);
  167 +
  168 + length = 1;
  169 + timeout = 100; //temps avant un timeout
  170 +
  171 + int status = libusb_interrupt_transfer(handle, PA, boutons, length, &transferred, timeout);
  172 + if(status!=0){perror("libusb_interrupt_transfer");exit(-1);}
201 173
202 /* Lecture du point d'accès du joystick */ 174 /* Lecture du point d'accès du joystick */
203 - unsigned char *joystick_xy=NULL; //stocke la donnée du point d'accès (1 octet pour chaque axe) 175 + unsigned char joystick_xy[2]; //stocke la donnée du point d'accès (1 octet pour chaque axe)
204 176
205 PA = tab_PA[2]; //LEDs sur le premier point d'accès 177 PA = tab_PA[2]; //LEDs sur le premier point d'accès
206 - printf("adresse PA %d\n", tab_PA[2]);  
207 - transferred = 2; //nombre d'octets transférés  
208 - timeout = 1000; //temps avant un timeout 178 + //printf("adresse PA %d\n", tab_PA[2]);
  179 + length = 2;
  180 + timeout = 100; //temps avant un timeout
209 181
210 - status = libusb_interrupt_transfer(handle, PA, joystick_xy, sizeof(joystick_xy), &transferred, timeout); 182 + status = libusb_interrupt_transfer(handle, PA, joystick_xy, length, &transferred, timeout);
211 if(status!=0){perror("libusb_interrupt_transfer");exit(-1);} 183 if(status!=0){perror("libusb_interrupt_transfer");exit(-1);}
212 184
213 - //TODO Pas sûr !!! 185 + //TODO Pas sûr !
214 if (joystick_xy !=NULL){ 186 if (joystick_xy !=NULL){
215 *joystick_x = joystick_xy[0]; //On sépare la data de chaque axe 187 *joystick_x = joystick_xy[0]; //On sépare la data de chaque axe
216 *joystick_y = joystick_xy[1]; 188 *joystick_y = joystick_xy[1];
@@ -239,9 +211,9 @@ int main(){ @@ -239,9 +211,9 @@ int main(){
239 unsigned char tab_PA[TAB_PA_SIZE]; 211 unsigned char tab_PA[TAB_PA_SIZE];
240 config_periph(tab_PA); 212 config_periph(tab_PA);
241 213
242 - unsigned char *boutons = NULL, *boutons_anc = NULL;  
243 - unsigned char *joystick_x = NULL, *joystick_x_anc = NULL;  
244 - unsigned char *joystick_y = NULL, *joystick_y_anc = NULL; 214 + unsigned char boutons, boutons_anc=0xff;
  215 + unsigned char joystick_x, joystick_x_anc=0xff;
  216 + unsigned char joystick_y, joystick_y_anc=0xff;
245 unsigned char caractere; 217 unsigned char caractere;
246 218
247 219
@@ -249,21 +221,22 @@ int main(){ @@ -249,21 +221,22 @@ int main(){
249 //TODO "pas d'arrêt" = appui sur 's' par exemple 221 //TODO "pas d'arrêt" = appui sur 's' par exemple
250 222
251 while(1){ 223 while(1){
252 - /*if (appui sur une touche){ 224 + /*// si un caractère intéressant est tapé au clavier, l'envoie à la carte.
  225 + if (((c=getchar())>='a' && (c=getchar())<='f') || ((c=getchar())>='A' && (c=getchar())<='F')) {
253 //récupération caractère 226 //récupération caractère
254 - send_data(tab_PA, caractere); //Envoi de la commande des leds 227 + send_data(tab_PA, c); //Envoi de la commande des leds
255 } 228 }
256 else { 229 else {
257 */ 230 */
258 - printf("début rcpt\n");  
259 - receive_data(tab_PA, boutons, joystick_x, joystick_y); //Réception des boutons et joystick  
260 - printf("fin rcpt\n");  
261 - if ((boutons == NULL) || (joystick_x == NULL) || (joystick_y == NULL)) printf("Erreur réception : pointeurs boutons ou joystick nul\n");  
262 - if ((*boutons != *boutons_anc) || (joystick_x != joystick_x_anc) || (joystick_y != joystick_y_anc)) printf("Boutons : %c, Joystick_x : %c, Joystick_y :%c\n", *boutons, *joystick_x, *joystick_y); //Affichage si changement 231 + //printf("début rcpt\n");
  232 + receive_data(tab_PA, &boutons, &joystick_x, &joystick_y); //Réception des boutons et joystick
  233 + //printf("fin rcpt\n");
  234 + printf("Boutons : %02x, Joystick_x : %02x, Joystick_y :%02x\n", boutons, joystick_x, joystick_y); //Affichage si changement
  235 + if ((boutons != boutons_anc) || (joystick_x != joystick_x_anc) || (joystick_y != joystick_y_anc)) printf("Boutons : %02x, Joystick_x : %02x, Joystick_y :%c\n", boutons, joystick_x, joystick_y); //Affichage si changement
263 236
264 - *boutons_anc = *boutons;  
265 - *joystick_x_anc = *joystick_x;  
266 - *joystick_y_anc = *joystick_y; 237 + boutons_anc = boutons;
  238 + joystick_x_anc = joystick_x;
  239 + joystick_y_anc = joystick_y;
267 //} 240 //}
268 241
269 } 242 }
lufa-master/PolytechLille/PAD/PAD.c
@@ -40,9 +40,9 @@ @@ -40,9 +40,9 @@
40 40
41 #define debut_rcpt 0x40 //valeur arbitraire pour détecter un début de trame 41 #define debut_rcpt 0x40 //valeur arbitraire pour détecter un début de trame
42 42
43 -uint8_t boutons;  
44 -uint8_t joystick_x;  
45 -uint8_t joystick_y; 43 +uint8_t boutons=0xaa;
  44 +uint8_t joystick_x=0xbb;
  45 +uint8_t joystick_y=0xcc;
46 46
47 47
48 /** Main program entry point. This routine contains the overall program flow, including initial 48 /** Main program entry point. This routine contains the overall program flow, including initial