code de la carte IHM avant les bugs et avant le travail effectué avec Melchior

Dependencies:   mbed SerialHalfDuplex SDFileSystem liaison_Bluetooth ident_crac DISCO-F469NI_portrait

Revision:
21:d137ec53c3a9
Parent:
20:2f0b1c48a35f
Child:
22:c7763a7ec6c7
--- a/Strategie/Strategie.cpp	Tue Jun 23 13:31:38 2020 +0000
+++ b/Strategie/Strategie.cpp	Wed Jun 24 09:39:42 2020 +0000
@@ -1,55 +1,16 @@
 #include "global.h"
-#include <string.h>
-#include <sstream>
-#include <math.h>
-#include <vector>
 
 
 #define M_PI 3.14159265358979323846
-#define VERT 0xFF00FF00
-#define ROUGE 0xFFFF0000
-#define BLEU 0xFF0000FF
-#define JAUNE 0xFFFDD835//FEFE00
-#define BLANC 0xFF000000
-#define ORANGE 0xFFFFA500
-#define NOIR 0xFF000000
-#define DIY_GREY 0xFFDFDFDF
-#define VIOLET 0xFF4527A0
 
-char tableau_aff[10][50];
-char tableau_etat[22][50]= {
-    "Check_carte_screen",
-    "Check_carte_screen_wait_ack",
-    "Check_cartes",
-    "Check_cartes_wait_ack",
-    "Wait_force",
-    "Config",
-    "Game_init",
-    "Game_wait_for_jack",
-    "Game_start",
-    "Game_next_instruction",
-    "Game_instruction",
-    "Game_wait_ack",
-    "Game_jump_time",
-    "Game_jump_config",
-    "Game_jump_position",
-    "Game_wait_end_instruction",
-    "Warning_timeout",
-    "Waring_end_balise_wait",
-    "Warning_end_last_instruction",
-    "Warning_switch_strategie",
-    "End",
-    "End_loop",
-};
+E_stratGameEtat gameEtat = ETAT_CHECK_CARTES;
+T_etat strat_etat_s = INIT;
 
 int waitingAckID_FIN;
 int waitingAckFrom_FIN;
 
 Ticker ticker;
-TS_DISCO_F469NI ts;
-LCD_DISCO_F469NI lcd;
 
-TS_StateTypeDef TS_State;
 
 Ticker chrono;
 Timeout AffTime;
@@ -76,10 +37,10 @@
 unsigned short x;
 unsigned short y;
 unsigned char isStopEnable = 1;//Permet de savoir si il faut autoriser le stop via les balises
-int flag = 0, flag_strat = 0, flag_timer;
+unsigned short flag_check_carte = 0, flag_strat = 0, flag_timer;
 int flagReceptionTelemetres = 0, flagNonRepriseErrorMot = 0;
-char Ack_strat = 0;
-signed char Strat = 0;
+
+
 signed char FIFO_lecture=0;//Position du fifo de lecture des messages CAN
 
 signed short x_robot,y_robot,theta_robot;//La position du robot
@@ -92,22 +53,12 @@
 unsigned char checkCurrent = 0;
 unsigned char countAliveCard = 0;
 unsigned char ligne=0;
-
-
 int Fevitement=0;
 int EvitEtat= 0;
 int stop_evitement=0;
-
-
-
-
-
 signed char nbStrat = 0; //N° de la strategie (1-10)
-
 unsigned char ModeDemo = 0; // Si à 1, indique que l'on est dans le mode demo
-
 unsigned char countRobotNear = 0;//Le nombre de robot à proximité
-
 unsigned char ingnorBaliseOnce = 0;//une fois détecté réinitialise
 unsigned char ingnorBalise = 0;//0:balise ignore 1:on ecoute la balise
 short direction;
@@ -121,47 +72,15 @@
 float cptf;
 int cpt,cpt1;
 
-typedef enum {INIT, ATT, CHOIX, DEMO, TEST_MOTEUR, TEST_COULEUR, TEST_SERVO_BRAS, TEST_VENTOUSE, TEST_ELECTROV,TEST_AUD, SELECT_SIDE, TACTIQUE, DETAILS,LECTURE, LAUNCH, AFF_WAIT_JACK, WAIT_JACK, COMPTEUR, FIN} T_etat;
-T_etat etat = INIT;
-E_stratGameEtat     gameEtat  = ETAT_CHECK_CARTES;
+
+
 E_stratGameEtat     memGameEtat= gameEtat;
 E_stratGameEtat     lastEtat  = ETAT_CHECK_CARTES;
 E_Stratposdebut etat_pos=RECALAGE_1;
 
-/////////////////DEFINITION DES BOUTONS////////////////////
-Button COTE_JAUNE(0, 25, 400, 300, "JAUNE");
-Button COTE_VIOLET(0, 350, 400, 300, "VIOLET");
-Button RETOUR  (0, 680, 400, 110, "--Precedent--");
-Button LANCER  (0, 200, 400, 200, "--LANCER--");
-Button CHECK (0, 420, 400, 200, "Valider");
-Button MATCH (0, 50, 400, 320, "Match");
-Button DEMONSTRATION (0, 400, 400, 320, "Demo");
-//menu demo
-Button TEST_VENT(0, 25, 400, 100, "Test ventouses");
-Button TEST_MOT(0, 135, 400, 100, "Test moteur");
-Button TEST_COUL(0,245,400,100,"Test capteurs couleur");
-Button TEST_BRAS(0,355,400,100,"Test Bras");
-Button TEST_AUDIO(0,465,400,100,"Test Audio");
-Button TEST_ELECTRV(0,575,400,100,"Test Divers");
-//menu demo/demo/
-Button TEST_A(0,25,195,100,"A");
-Button TEST_B(205,25,195,100,"B");
-Button TEST_C(0,135,195,100,"C");
-Button TEST_D(205,135,195,100,"D");
-Button TEST_NUM(0,245,400,100,"Bras num");
-Button TEST_PLUS(205,355,195,100,"+");
-Button TEST_MOINS(0,355,195,100,"-");
+void SendRawId (unsigned short id);
+void can2Rx_ISR(void);
 
-
-Button FORCE_LAUNCH(0, 50, 400, 320, "Force Launch");
-Button SUIVANT(0,380,200,100,"Suivant");
-////////////////////////////////////////////////////////////
-
-void SendRawId (unsigned short id);
-void SelectionStrat (unsigned char numeroStrat);
-void Setflag(void);
-void can2Rx_ISR(void);
-signed char Bouton_Strat (void);
 signed char blocage_balise;
 void print_segment(int nombre, int decalage);
 void affichage_compteur (int nombre);
@@ -197,7 +116,7 @@
 {
     SendRawId(ASSERVISSEMENT_STOP);//On stope les moteurs
     SendRawId(GLOBAL_GAME_END);//Indication fin de match
-    etat=FIN;
+    strat_etat_s=FIN;
     gameTimer.stop();//Arret du timer
 
     while(1);//On bloque la programme dans l'interruption
@@ -213,616 +132,11 @@
 {
     if(gameEtat == ETAT_GAME_WAIT_FOR_JACK) {
         gameEtat = ETAT_GAME_START;//On débute le match
-        etat=COMPTEUR;
+        //strat_etat_s=COMPTEUR;
         blocage_balise=1;
     }
 }
 
-/****************************************************************************************/
-/* FUNCTION NAME: SelectionStrat                                                        */
-/* DESCRIPTION  : Affiche la Stratégie sélectionnée sur l'ihm                           */
-/****************************************************************************************/
-
-
-void SelectionStrat (unsigned char Strategie)
-{
-    lcd.SetBackColor(LCD_COLOR_WHITE);
-    lcd.SetTextColor(LCD_COLOR_BLACK);
-
-    switch (Strategie+1) {
-        case 0x1 :
-            //description de Strategie n°1
-            lcd.DisplayStringAt(150, 0, (uint8_t *)strat_sd[Strategie], LEFT_MODE);
-            break;
-
-        case 0x2 :
-            //description de Strategie n°2
-            lcd.DisplayStringAt(150,0, (uint8_t *)strat_sd[Strategie], LEFT_MODE);
-            break;
-
-        case 0x3 :
-            //description de Strategie n°3
-            lcd.DisplayStringAt(150,0, (uint8_t *)strat_sd[Strategie], LEFT_MODE);
-            break;
-
-        case 0x4 :
-            //description de Strategie n°4
-            lcd.DisplayStringAt(150,0, (uint8_t *)strat_sd[Strategie], LEFT_MODE);
-            break;
-
-        case 0x5 :
-            //description de Strategie n°5
-            lcd.DisplayStringAt(150,0, (uint8_t *)strat_sd[Strategie], LEFT_MODE);
-            break;
-
-        case 0x6 :
-            //description de Strategie n°5
-            lcd.DisplayStringAt(150,0, (uint8_t *)strat_sd[Strategie], LEFT_MODE);
-            break;
-
-        case 0x7 :
-            //description de Strategie n°5
-            lcd.DisplayStringAt(150,0, (uint8_t *)strat_sd[Strategie], LEFT_MODE);
-            break;
-
-        case 0x8 :
-            //description de Strategie n°5
-            lcd.DisplayStringAt(150,0, (uint8_t *)strat_sd[Strategie], LEFT_MODE);
-            break;
-
-        case 0x9 :
-            //description de Strategie n°5
-            lcd.DisplayStringAt(150,0, (uint8_t *)strat_sd[Strategie], LEFT_MODE);
-            break;
-
-        case 0xA :
-            //description de Strategie n°5
-            lcd.DisplayStringAt(150,0, (uint8_t *)strat_sd[Strategie], LEFT_MODE);
-            break;
-    }
-}
-
-void Setflag(void)
-{
-    flagSendCan = 1;//gab le zgeg
-}
-
-
-//Affiche une variable sur l'écran tactile//
-void affichage_var(double Var)
-{
-    if(ligne==7)
-        ligne=0;
-    char aff[10]="toto";
-    sprintf(aff,"%lf ",Var);
-    lcd.DisplayStringAt(120, LINE(20+(ligne)), (uint8_t *)aff, LEFT_MODE);
-    //ligne++;
-
-}
-
-
-
-/****************************************************************************************/
-/* FUNCTION NAME: automate_etat_ihm                                                     */
-/* DESCRIPTION  : Automate de gestion de l'affichage                                    */
-/****************************************************************************************/
-void automate_etat_ihm(void)
-{
-    char toto[2]; 
-    int j;
-    unsigned char maximilien=1;
-    if (j==0) {
-        ts.Init(lcd.GetXSize(), lcd.GetYSize());
-        j++;
-    }
-    ts.GetState(&TS_State);
-    switch (etat) {
-        case INIT : //intialise l'écran et passe à l'attente d'initialisation des cartes
-            ts.GetState(&TS_State);
-            canProcessRx();
-            lcd.SetBackColor(LCD_COLOR_WHITE);
-            lcd.SetTextColor(LCD_COLOR_BLACK);
-            lcd.Clear (LCD_COLOR_WHITE);
-            wait(0.15);
-            lcd.DisplayStringAt(0, 10, (uint8_t *)"Verification des cartes", LEFT_MODE);
-            //cartes non verifiées////////////////
-            lcd.SetTextColor(DIY_GREY);
-            lcd.FillRect(0,400,400,150); //carte moteur
-            lcd.FillRect(0,600,400,150); //Balise
-            lcd.SetTextColor(LCD_COLOR_BLACK);
-            lcd.SetBackColor(DIY_GREY);
-            lcd.DisplayStringAt(80, 450, (uint8_t *)"Carte Moteur", LEFT_MODE);
-            lcd.DisplayStringAt(110,650, (uint8_t *)"Balise", LEFT_MODE);
-            ////////////////////////////////////////
-            FORCE_LAUNCH.Draw(0xFFFF0000, 0);
-
-            etat=ATT;
-            break;
-
-        case ATT :  //Si les cartes sont présentes passe directement à choix sinon attente de force Launch (cette partie est encore buggée mais les cartes affichent bien leur présence donc faut juste force launch tout le temps...)
-            if (flag==1) {
-                etat = CHOIX;
-                gameEtat = ETAT_CONFIG;
-            } else if (FORCE_LAUNCH.Touched()) {
-                etat = CHOIX;
-                gameEtat = ETAT_CONFIG;
-                while(FORCE_LAUNCH.Touched());
-            }
-
-            break;
-
-
-        case CHOIX :    //Match ou DEMO
-            lcd.SetBackColor(LCD_COLOR_WHITE);
-            lcd.SetTextColor(LCD_COLOR_BLACK);
-            lcd.Clear (LCD_COLOR_WHITE);
-            lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"Match ou demonstration ?", LEFT_MODE);
-            DEMONSTRATION.Draw(LCD_COLOR_LIGHTGREEN, 0);
-            MATCH.Draw(0xFFF01010, 0);
-            while(etat == CHOIX) {
-                canProcessRx();
-                if(DEMONSTRATION.Touched()) {
-                    etat = DEMO;
-                    while(DEMONSTRATION.Touched());
-                }
-
-                if(MATCH.Touched()) {
-                    etat = SELECT_SIDE;
-                    while(MATCH.Touched());
-                }
-
-            }
-            break;
-
-        case DEMO :
-            lcd.SetBackColor(LCD_COLOR_WHITE);
-            lcd.SetTextColor(LCD_COLOR_BLACK);
-            lcd.Clear (LCD_COLOR_WHITE);
-            lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"DEMO", LEFT_MODE);
-            RETOUR.Draw(0xFFFF0000, 0);
-            TEST_VENT.Draw(VERT, 0);
-            TEST_MOT.Draw(VERT, 0);
-            TEST_COUL.Draw(VERT, 0);
-            TEST_BRAS.Draw(VERT, 0);
-            TEST_AUDIO.Draw(VERT, 0);
-            TEST_ELECTRV.Draw(VERT, 0);
-            maximilien=0;
-            while (etat == DEMO) {
-                canProcessRx();
-                if(TEST_VENT.Touched()) {
-                    while(TEST_VENT.Touched());
-                    etat = TEST_VENTOUSE;
-                } else if(TEST_MOT.Touched()) {
-                    while(TEST_MOT.Touched());
-                    etat = TEST_MOTEUR;
-                } else if(TEST_ELECTRV.Touched()) {
-                    while(TEST_ELECTRV.Touched());
-                    etat = TEST_ELECTROV;
-                } else if (TEST_COUL.Touched()) {
-                    while(TEST_COUL.Touched());
-                    etat =TEST_COULEUR ;
-                } else if (TEST_BRAS.Touched()) {
-                    while(TEST_BRAS.Touched());
-                    etat =TEST_SERVO_BRAS ;
-                } else if(TEST_AUDIO.Touched()) {
-                    while(TEST_AUDIO.Touched());
-                    etat=TEST_AUD;
-                } else if(RETOUR.Touched()) {
-                    while(RETOUR.Touched());
-                    etat = CHOIX;
-                }
-            }
-            break;
-
-
-        case TEST_VENTOUSE:   
-            lcd.SetBackColor(LCD_COLOR_WHITE);
-            lcd.SetTextColor(LCD_COLOR_BLACK);
-            lcd.Clear (LCD_COLOR_WHITE);   
-            lcd.Clear (LCD_COLOR_WHITE);
-            lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"Test Ventouse", LEFT_MODE);
-            sprintf(toto,"%hd",maximilien);
-            lcd.DisplayStringAt(50, LINE(20), (unsigned char *)toto, LEFT_MODE);
-            RETOUR.Draw(0xFFFF0000,0);
-            TEST_A.Draw(BLEU, BLANC);
-            TEST_NUM.Draw(BLEU, BLANC);
-            TEST_PLUS.Draw(BLEU, BLANC);
-            TEST_MOINS.Draw(BLEU, BLANC);
-            while(etat==TEST_VENTOUSE) {
-                if(RETOUR.Touched()) {
-                    while (RETOUR.Touched());
-                    etat=DEMO;
-                } else if(TEST_A.Touched()) {
-                    while (TEST_A.Touched());
-                    //SendRawId(TEST_VENT_A);
-                    TEST_A.Draw(BLEU, BLANC);
-                }  else if(TEST_NUM.Touched()) {
-                    while (TEST_NUM.Touched());
-                    TEST_NUM.Draw(BLEU, BLANC);
-                    switch(maximilien){
-                    case 1:
-                    SendRawId(TEST_VENT_1_ON);
-                    break;
-                    case 2:
-                    SendRawId(TEST_VENT_1_OFF);
-                    break;
-                    case 3:
-                    //SendRawId(TEST_VENT_3);
-                    break;
-                    case 4:
-                    //SendRawId(TEST_VENT_4);
-                    break;
-                    case 5:
-                    //SendRawId(TEST_VENT_5);
-                    break;
-                    case 6:
-                    //SendRawId(TEST_VENT_6);
-                    break;
-                    }
-                } else if(TEST_PLUS.Touched()) {
-                    while (TEST_PLUS.Touched());
-                    TEST_PLUS.Draw(BLEU, BLANC);
-                    if(maximilien!=6)maximilien++;
-                    sprintf(toto,"%hd",maximilien);
-                    lcd.SetBackColor(LCD_COLOR_WHITE);
-                    lcd.SetTextColor(LCD_COLOR_BLACK);
-                    lcd.DisplayStringAt(50, LINE(20), (unsigned char *)toto, LEFT_MODE);
-                } else if(TEST_MOINS.Touched()) {
-                    while (TEST_MOINS.Touched());
-                    TEST_MOINS.Draw(BLEU, BLANC);
-                    if(maximilien!=1)maximilien--;
-                    sprintf(toto,"%hd",maximilien);
-                    lcd.SetBackColor(LCD_COLOR_WHITE);
-                    lcd.SetTextColor(LCD_COLOR_BLACK);
-                    lcd.DisplayStringAt(50, LINE(20), (unsigned char *)toto, LEFT_MODE);
-                }
-            }
-            break;
-        
-        case TEST_ELECTROV:
-            lcd.SetBackColor(LCD_COLOR_WHITE);
-            lcd.SetTextColor(LCD_COLOR_BLACK);
-            lcd.Clear (LCD_COLOR_WHITE);   
-            lcd.Clear (LCD_COLOR_WHITE);
-            lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"A : Manches B : Pavillon", LEFT_MODE);
-            RETOUR.Draw(0xFFFF0000,0);
-            TEST_A.Draw(BLEU, BLANC);
-            TEST_B.Draw(BLEU, BLANC);
-            while(etat==TEST_ELECTROV) {
-                if(RETOUR.Touched()) {
-                    while (RETOUR.Touched());
-                    etat=DEMO;
-                } else if(TEST_A.Touched()) {
-                    while (TEST_A.Touched());
-                    //SendRawId(TEST_ELECTROV_A);
-                    TEST_A.Draw(BLEU, BLANC);
-                }  else if(TEST_B.Touched()) {
-                    while (TEST_B.Touched());
-                    //SendRawId(TEST_ELECTROV_A);
-                    TEST_B.Draw(BLEU, BLANC);
-                }  
-            }
-            break;
-            
-        case TEST_AUD:  
-              
-            lcd.SetBackColor(LCD_COLOR_WHITE);
-            lcd.SetTextColor(LCD_COLOR_BLACK);
-            lcd.Clear (LCD_COLOR_WHITE);   
-            lcd.Clear (LCD_COLOR_WHITE);
-            lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"Test Audio", LEFT_MODE);
-            sprintf(toto,"%hd",maximilien);
-            lcd.DisplayStringAt(50, LINE(20), (unsigned char *)toto, LEFT_MODE);
-            RETOUR.Draw(0xFFFF0000,0);
-            TEST_NUM.Draw(BLEU, BLANC);
-            TEST_PLUS.Draw(BLEU, BLANC);
-            TEST_MOINS.Draw(BLEU, BLANC);
-            while(etat==TEST_AUD) {
-                if(RETOUR.Touched()) {
-                    while (RETOUR.Touched());
-                    etat=DEMO;
-                }  else if(TEST_NUM.Touched()) {
-                    while (TEST_NUM.Touched());
-                    TEST_NUM.Draw(BLEU, BLANC);
-                    Debug_Audio(3,maximilien);
-                } else if(TEST_PLUS.Touched()) {
-                    while (TEST_PLUS.Touched());
-                    TEST_PLUS.Draw(BLEU, BLANC);
-                    if(maximilien!=20)maximilien++;
-                    sprintf(toto,"%hd",maximilien);
-                    lcd.SetBackColor(LCD_COLOR_WHITE);
-                    lcd.SetTextColor(LCD_COLOR_BLACK);
-                    lcd.DisplayStringAt(50, LINE(20), (unsigned char *)toto, LEFT_MODE);
-                } else if(TEST_MOINS.Touched()) {
-                    while (TEST_MOINS.Touched());
-                    TEST_MOINS.Draw(BLEU, BLANC);
-                    if(maximilien!=1)maximilien--;
-                    sprintf(toto,"%hd",maximilien);
-                    lcd.SetBackColor(LCD_COLOR_WHITE);
-                    lcd.SetTextColor(LCD_COLOR_BLACK);
-                    lcd.DisplayStringAt(50, LINE(20), (unsigned char *)toto, LEFT_MODE);
-                }
-            }
-            break;
-            
-        case TEST_SERVO_BRAS:  
-              
-            lcd.SetBackColor(LCD_COLOR_WHITE);
-            lcd.SetTextColor(LCD_COLOR_BLACK);
-            lcd.Clear (LCD_COLOR_WHITE);   
-            lcd.Clear (LCD_COLOR_WHITE);
-            lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"Test Bras", LEFT_MODE);
-            sprintf(toto,"%hd",maximilien);
-            lcd.DisplayStringAt(50, LINE(20), (unsigned char *)toto, LEFT_MODE);
-            RETOUR.Draw(0xFFFF0000,0);
-            TEST_A.Draw(BLEU, BLANC);
-            TEST_B.Draw(BLEU, BLANC);
-            TEST_C.Draw(BLEU, BLANC);
-            TEST_D.Draw(BLEU, BLANC);
-            TEST_NUM.Draw(BLEU, BLANC);
-            TEST_PLUS.Draw(BLEU, BLANC);
-            TEST_MOINS.Draw(BLEU, BLANC);
-            while(etat==TEST_SERVO_BRAS) {
-                if(RETOUR.Touched()) {
-                    while (RETOUR.Touched());
-                    etat=DEMO;
-                } else if(TEST_A.Touched()) {
-                    while (TEST_A.Touched());
-                    SendRawId(TEST_BRAS_A);
-                    TEST_A.Draw(BLEU, BLANC);
-                } else if(TEST_B.Touched()) {
-                    while (TEST_B.Touched());
-                    SendRawId(TEST_BRAS_B);
-                    TEST_B.Draw(BLEU, BLANC);
-                } else if(TEST_C.Touched()) {
-                    while (TEST_C.Touched());
-                    SendRawId(TEST_BRAS_C);
-                    TEST_C.Draw(BLEU, BLANC);
-                } else if(TEST_D.Touched()) {
-                    while (TEST_D.Touched());
-                    SendRawId(TEST_BRAS_D);
-                    TEST_D.Draw(BLEU, BLANC);
-                }  else if(TEST_NUM.Touched()) {
-                    while (TEST_NUM.Touched());
-                    TEST_NUM.Draw(BLEU, BLANC);
-                    switch(maximilien){
-                    case 1:
-                    SendRawId(TEST_BRAS_1);
-                    break;
-                    case 2:
-                    SendRawId(TEST_BRAS_2);
-                    break;
-                    case 3:
-                    SendRawId(TEST_BRAS_3);
-                    break;
-                    case 4:
-                    SendRawId(TEST_BRAS_4);
-                    break;
-                    case 5:
-                    SendRawId(TEST_BRAS_5);
-                    break;
-                    case 6:
-                    SendRawId(TEST_BRAS_6);
-                    break;
-                    }
-                } else if(TEST_PLUS.Touched()) {
-                    while (TEST_PLUS.Touched());
-                    TEST_PLUS.Draw(BLEU, BLANC);
-                    if(maximilien!=6)maximilien++;
-                    sprintf(toto,"%hd",maximilien);
-                    lcd.SetBackColor(LCD_COLOR_WHITE);
-                    lcd.SetTextColor(LCD_COLOR_BLACK);
-                    lcd.DisplayStringAt(50, LINE(20), (unsigned char *)toto, LEFT_MODE);
-                } else if(TEST_MOINS.Touched()) {
-                    while (TEST_MOINS.Touched());
-                    TEST_MOINS.Draw(BLEU, BLANC);
-                    if(maximilien!=1)maximilien--;
-                    sprintf(toto,"%hd",maximilien);
-                    lcd.SetBackColor(LCD_COLOR_WHITE);
-                    lcd.SetTextColor(LCD_COLOR_BLACK);
-                    lcd.DisplayStringAt(50, LINE(20), (unsigned char *)toto, LEFT_MODE);
-                }
-            }
-            break;
-        
-        case TEST_COULEUR:      
-            lcd.Clear (LCD_COLOR_WHITE);
-            lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"Test Couleur", LEFT_MODE);
-            RETOUR.Draw(0xFFFF0000,0);
-            while(etat==TEST_COULEUR) {
-                if(RETOUR.Touched()) {
-                    while (RETOUR.Touched());
-                    etat=DEMO;
-                    lcd.Clear (LCD_COLOR_WHITE);
-                } 
-            }
-            break;
-
-        case TEST_MOTEUR:
-            lcd.SetBackColor(LCD_COLOR_WHITE);
-            lcd.SetTextColor(LCD_COLOR_BLACK);
-            lcd.Clear (LCD_COLOR_WHITE);   
-            lcd.Clear (LCD_COLOR_WHITE);
-            lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"Test Moteur", LEFT_MODE);
-            RETOUR.Draw(0xFFFF0000,0);
-            TEST_A.Draw(BLEU, BLANC);
-            TEST_B.Draw(BLEU, BLANC);
-            while(etat==TEST_MOTEUR) {
-                if(RETOUR.Touched()) {
-                    while (RETOUR.Touched());
-                    etat=DEMO;
-                } else if(TEST_A.Touched()) {
-                    while (TEST_A.Touched());
-                    BendRadius(150,1800,1,0);
-                    TEST_A.Draw(BLEU, BLANC);
-                } else if(TEST_B.Touched()) {
-                    while (TEST_B.Touched());
-                    BendRadius(150,1800,0,0);
-                    TEST_B.Draw(BLEU, BLANC);
-                } 
-            }
-            break;      ///////////////////////////////////////////FIN DES DEMOS/////////////////////////////////////////////////
-
-
-        case SELECT_SIDE :      // CHOIX DU COTE DU TERRAIN + INVERSION DE LA STRAT SI COTE ORANGE+ ENVOI DU COTE A LA CARTE CAPTEUR/ACTIONNEURS
-            lcd.Clear(LCD_COLOR_WHITE);
-            lcd.SetBackColor(LCD_COLOR_WHITE);
-            lcd.SetTextColor(LCD_COLOR_BLACK);
-
-            lcd.DisplayStringAt(70, LINE(0), (uint8_t *)"Choisir le cote", LEFT_MODE);
-            COTE_JAUNE.Draw(JAUNE, 0);
-            COTE_VIOLET.Draw(VIOLET, 0);
-            RETOUR.Draw(LCD_COLOR_RED, 0);
-
-
-            while (etat == SELECT_SIDE) {
-                canProcessRx();
-                if(COTE_JAUNE.Touched()) {
-                    Cote = 0x0;
-                    InversStrat = Cote;
-                    etat = TACTIQUE;
-                    CANMessage trame_Tx = CANMessage();
-                    trame_Tx.len = 1;
-                    trame_Tx.format = CANStandard;
-                    trame_Tx.type = CANData;
-                    trame_Tx.id=CHOICE_COLOR;
-                    trame_Tx.data[0]=Cote;
-                    can2.write(trame_Tx);
-                    while(COTE_JAUNE.Touched());
-
-                }
-
-                if(COTE_VIOLET.Touched()) {
-                    Cote = 0x1;
-                    InversStrat= Cote;
-                    etat = TACTIQUE;
-                    CANMessage trame_Tx = CANMessage();
-                    trame_Tx.len = 1;
-                    trame_Tx.format = CANStandard;
-                    trame_Tx.type = CANData;
-                    trame_Tx.id=CHOICE_COLOR;
-                    trame_Tx.data[0]=Cote;
-                    can2.write(trame_Tx);
-                    while(COTE_VIOLET.Touched());
-                }
-
-                if(RETOUR.Touched()) {
-                    etat = CHOIX;
-                    while(RETOUR.Touched());
-                }
-            }
-
-            break;
-
-        case TACTIQUE : //AFFICHE LA LISTE DES STRATS AFIN DE SELECTIONNER CELLE VOULUE
-            if (Cote == 0) {
-                lcd.Clear(JAUNE);
-                lcd.SetBackColor(JAUNE);
-            } else if (Cote == 1) {
-                lcd.Clear(VIOLET);
-                lcd.SetBackColor(VIOLET);
-            } else {
-                lcd.Clear(BLEU);
-                lcd.SetBackColor(BLEU);
-            }
-
-            lcd.SetTextColor(LCD_COLOR_BLACK);
-
-            lcd.DisplayStringAt(20, LINE(0), (uint8_t *)"Choisir une strategie", LEFT_MODE);
-
-            nbStrat = Bouton_Strat(); // retourne valeur de Strategie si bouton strat renvoi -1 on reviens en arriere
-            if (nbStrat == -1) {
-                etat = SELECT_SIDE;
-            } else {
-                etat = DETAILS;
-            }
-            wait(0.1);
-            break;
-
-        case DETAILS :  //SECONDE VALIDATION DE LA STRAT
-            lcd.Clear(LCD_COLOR_WHITE);
-            lcd.SetBackColor(LCD_COLOR_WHITE);
-            lcd.SetTextColor(LCD_COLOR_BLACK);
-            CHECK.Draw(VERT);
-            RETOUR.Draw(LCD_COLOR_RED);
-
-            SelectionStrat(nbStrat); //affiche la stratégie selectionnée
-
-            while (etat == DETAILS) {
-                canProcessRx();
-                if (CHECK.Touched()) {
-                    if(gameEtat == ETAT_CONFIG) {
-                        gameEtat = ETAT_GAME_INIT;
-                        etat=LECTURE;
-
-                    }
-                    while(CHECK.Touched());
-                }
-
-                if(RETOUR.Touched()) {
-                    etat = TACTIQUE;
-                    while(RETOUR.Touched());
-                }
-            }
-            break;
-
-
-        case LECTURE :
-            break;
-        case AFF_WAIT_JACK : //FONCTIONS D'AFFICHAGE DE L'ATTENTE DU JACK
-            lcd.Clear(BLANC);
-            lcd.SetBackColor(LCD_COLOR_WHITE);
-            lcd.SetTextColor(LCD_COLOR_BLACK);
-
-            if (Cote == 0) {
-                lcd.Clear(VERT);
-                lcd.SetBackColor(VERT);
-            } else if (Cote == 1) {
-                lcd.Clear(ORANGE);
-                lcd.SetBackColor(ORANGE);
-            } else {
-                lcd.Clear(VERT);
-                lcd.SetBackColor(VERT);
-            }
-            canProcessRx();
-            lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"En attente du Jack", CENTER_MODE);
-            etat=WAIT_JACK;
-            break;
-
-        case WAIT_JACK: //VERITABLE ATTENTE DU JACK
-            break;
-
-        case COMPTEUR:  //PEUT AFFICHER UN COMPTEUR DU TEMPS RESTANT AVANT LA FIN DE LA PARTIE OU BIEN TRES UTILE POUR PRINT DES VARIABLES CHAQUE SEC EX: gameEtat
-            cptf=gameTimer.read();
-            lcd.SetTextColor(LCD_COLOR_BLACK);
-            cpt=(int)cptf;
-            if(cpt != cpt1) {
-                lcd.Clear(VERT);
-                // affichage_compteur(100-cpt);
-                //affichage_compteur(SCORE_PR);
-                affichage_var(SCORE_PR);
-            }
-            cpt1=cpt;
-            flag_timer=0;
-
-
-            lcd.SetBackColor(LCD_COLOR_WHITE);
-
-            break;
-
-        case FIN :  //AFFICHAGE DE FIN AVEC LE SCORE FINAL
-            lcd.Clear (LCD_COLOR_WHITE);
-            lcd.SetBackColor(LCD_COLOR_WHITE);
-
-            //affichage_compteur(SCORE_PR);
-            affichage_var(SCORE_PR);
-
-            while(1); // force le redemarage du robot
-            //break;
-
-    }
-}
-
 
 
 /****************************************************************************************/
@@ -844,7 +158,7 @@
         gameTimer.stop();
         gameTimer.reset();
         gameEtat = ETAT_END;//Fin du temps
-        etat=FIN;
+        strat_etat_s=FIN;
     }
 
     if(lastEtat != gameEtat || debugetatTimer.read_ms() >= 1000) {
@@ -885,7 +199,7 @@
                     if(countAliveCard >= NOMBRE_CARTES) {
                         gameEtat = ETAT_CONFIG;
                         SendRawId(ECRAN_ALL_CHECK);
-                        flag=1;
+                        flag_check_carte=1;
 
                         //tactile_printf("Selection couleur et strategie");
                     } else {
@@ -904,7 +218,7 @@
                     if(checkCurrent >= NOMBRE_CARTES) {
                         if(countAliveCard == NOMBRE_CARTES) {
                             gameEtat = ETAT_CONFIG;
-                            flag=1;
+                            flag_check_carte=1;
                         } else {
                             gameEtat = ETAT_WAIT_FORCE;
                             waitingAckFrom = ECRAN_ALL_CHECK;
@@ -943,10 +257,10 @@
 
             gameEtat = ETAT_GAME_WAIT_FOR_JACK;
             Debug_Audio(3,7);
-            if (etat == TEST_MOTEUR|| etat ==TEST_VENTOUSE || etat == TEST_COULEUR || etat ==TEST_SERVO_BRAS) {
+            if (strat_etat_s == TEST_MOTEUR|| strat_etat_s ==TEST_VENTOUSE || strat_etat_s == TEST_COULEUR || strat_etat_s ==TEST_SERVO_BRAS) {
                 SendRawId(DEBUG_FAKE_JAKE);
             } else {
-                etat = AFF_WAIT_JACK;
+                strat_etat_s = AFF_WAIT_JACK;
             }
             //tactile_printf("Attente du JACK.");
             setAsservissementEtat(1);//On réactive l'asservissement
@@ -1124,67 +438,6 @@
 
             actionPrecedente = instruction.order;
             switch(instruction.order) {
-                case MV_BEZIER: {
-                    static vector< vector<short> >P1;
-                    static vector< vector<short> >C1;
-                    static vector< vector<short> >C2;
-                    static int i = 0;
-
-                    //Ajoute une ligne aux tableaux pour chaques courbes de la trajectoire
-                    P1.push_back(vector<short>());    //Nouvelle ligne
-                    C1.push_back(vector<short>());    //Nouvelle ligne
-                    C2.push_back(vector<short>());    //Nouvelle ligne
-
-                    P1[i].push_back(instruction.arg1);   //Nouvelle colonne X
-                    C1[i].push_back(instruction.arg3);   //Nouvelle colonne X
-                    C2[i].push_back(instruction.arg5);   //Nouvelle colonne X
-
-                    if(InversStrat == 1 && ingnorInversionOnce == 0) {
-                        P1[i].push_back(3000-instruction.arg2);   //Nouvelle colonne Y
-                        C1[i].push_back(3000-instruction.arg4);   //Nouvelle colonne Y
-                        C2[i].push_back(3000-instruction.arg6);   //Nouvelle colonne Y
-                    } else {
-                        P1[i].push_back(instruction.arg2);   //Nouvelle colonne Y
-                        C1[i].push_back(instruction.arg4);   //Nouvelle colonne Y
-                        C2[i].push_back(instruction.arg6);   //Nouvelle colonne Y
-                    }
-
-                    i++;
-
-                    if(instruction.nextActionType == WAIT) { //Si il n'y a qu'une seule courbe ou que c'est la dernière courbe de la trajectoire
-                        //Passage des points dans des variables temporaires pour pouvoir clear les vector avant d'être bloqué dans l'attente de l'ack
-                        //Empeche les vector de ne pas être reset si l'ack n'est pas reçu avant la fin du match
-                        int nbCourbes = P1.size();
-                        short P1_temp[nbCourbes][2];
-                        short C1_temp[nbCourbes][2];
-                        short C2_temp[nbCourbes][2];
-
-                        for(int j=0; j<nbCourbes; j++) {
-                            for(int i=0; i<2; i++) {
-                                P1_temp[j][i] = P1[j][i];
-                                C1_temp[j][i] = C1[j][i];
-                                C2_temp[j][i] = C2[j][i];
-                            }
-                        }
-
-                        //Clear des tableaux de points pour la prochaine trajectoire
-                        P1.clear();
-                        C1.clear();
-                        C2.clear();
-                        i = 0;
-
-                        //Calcul de la courbe et envoi des valeurs
-                        if(instruction.direction == FORWARD) {
-                            courbeBezier(nbCourbes, P1_temp, C1_temp, C2_temp, 0);
-                        } else if(instruction.direction == BACKWARD) {
-                            courbeBezier(nbCourbes, P1_temp, C1_temp, C2_temp, 1);
-                        }
-
-                        waitingAckID = ASSERVISSEMENT_BEZIER;
-                        waitingAckFrom = ACKNOWLEDGE_MOTEUR;
-                    }
-                    break;
-                }
                 case MV_COURBURE://C'est un rayon de courbure
                     Debug_Audio(3,6);
                     float alpha=0, theta=0;
@@ -1595,7 +848,7 @@
                     actual_instruction = instruction.nextLineError;
                     gameEtat = ETAT_GAME_LOAD_NEXT_INSTRUCTION;
                 } else {
-                    gameEtat = ETAT_GAME_PROCESS_INSTRUCTION;//On retourne dans l'etat d'envois de l'instruction
+                    gameEtat = ETAT_GAME_PROCESS_INSTRUCTION;//On retourne dans l'strat_etat_s d'envois de l'instruction
                 }
             }
             break;
@@ -1710,7 +963,7 @@
         switch(identifiant) {
 
             case ALIVE_MOTEUR:
-                if (etat == ATT) {
+                if (strat_etat_s == ATT) {
 
                     lcd.SetTextColor(LCD_COLOR_LIGHTGREEN);
                     lcd.FillRect(0,400,400,150);
@@ -1721,7 +974,7 @@
                 break;
 
             case ALIVE_BALISE:
-                if (etat == ATT) {
+                if (strat_etat_s == ATT) {
 
                     lcd.SetTextColor(LCD_COLOR_LIGHTGREEN);
                     lcd.FillRect(0,600,400,150); //carte AX12
@@ -1732,7 +985,7 @@
                 break;
 
             case RESET_IHM:
-                etat = CHOIX;
+                strat_etat_s = CHOIX;
                 break;
 
             case DEBUG_FAKE_JAKE://Permet de lancer le match à distance
@@ -1750,7 +1003,7 @@
                 if(waitingAckFrom == msgRxBuffer[FIFO_lecture].id) {
                     waitingAckFrom = 0;//C'est la bonne carte qui indique qu'elle est en ligne
                 }
-                flag=1;
+                flag_check_carte=1;
                 break;
 
             case ASSERVISSEMENT_ERROR_MOTEUR://erreur asservissement
@@ -1857,7 +1110,7 @@
 
             case BALISE_END_DANGER:
                 SendAck(ACKNOWLEDGE_BALISE, BALISE_END_DANGER);
-                balise_end_danger(&instruction,&dodgeq,&gameEtat,target_x_robot,target_y_robot,target_theta_robot, theta_robot,x_robot,y_robot);
+                balise_end_danger(&instruction,&dodgeq,target_x_robot,target_y_robot,target_theta_robot, theta_robot,x_robot,y_robot);
             break;
 
             case RECEPTION_DATA:
@@ -1945,131 +1198,7 @@
 
 
 
-/****************************************************************************************/
-/* FUNCTION NAME: Bouton_Strat                                                          */
-/* DESCRIPTION  : Sélection de la strat sur le lcd puis envoie sur CAN (à modifier!)    */
-/****************************************************************************************/
-signed char Bouton_Strat (void)
-{
-    Button STRAT_1 (0, 30, 190, 110, strat_sd[0]);
-    Button STRAT_2 (210, 30, 190, 110, strat_sd[1]);
-    Button STRAT_3 (0, 150, 190, 110, strat_sd[2]);
-    Button STRAT_4 (210, 150, 190, 110, strat_sd[3]);
-    Button STRAT_5 (0, 270, 190, 110,strat_sd[4]);
-    Button STRAT_6 (210, 270, 190, 110, strat_sd[5]);
-    Button STRAT_7 (0, 390, 190, 110, strat_sd[6]);
-    Button STRAT_8 (210, 390, 190, 110, strat_sd[7]);
-    Button STRAT_9 (0, 510, 190, 110, strat_sd[8]);
-    Button STRAT_10 (210, 510, 190, 110, strat_sd[9]);
-    Button RETOUR  (0, 680, 400, 110, "--Precedent--");
-    //Definition des boutons
 
-    Ack_strat = 0;
-    Strat = 0;
-    STRAT_1.Draw(0xFFF0F0F0, 0);
-    STRAT_2.Draw(0xFFF0F0F0, 0);
-    STRAT_3.Draw(0xFFF0F0F0, 0);
-    STRAT_4.Draw(0xFFF0F0F0, 0);
-    STRAT_5.Draw(0xFFF0F0F0, 0);
-    STRAT_6.Draw(0xFFF0F0F0, 0);
-    STRAT_7.Draw(0xFFF0F0F0, 0);
-    STRAT_8.Draw(0xFFF0F0F0, 0);
-    STRAT_9.Draw(0xFFF0F0F0, 0);
-    STRAT_10.Draw(0xFFF0F0F0, 0);
-    RETOUR.Draw(0xFFFF0000, 0);
-
-    while(Ack_strat == 0) {
-        canProcessRx();
-        CANMessage msgTx=CANMessage();
-        //msgTx.id=ECRAN_CHOICE_STRAT;
-        if (RETOUR.Touched())
-            return -1;
-        while(RETOUR.Touched());
-        //////////////////////////////STRATEGIE N°1
-        if (STRAT_1.Touched()) {
-            Strat = 0;
-            //msgTx.data[0] = 0x1;
-            //can2.write(msgTx);
-            while(STRAT_1.Touched());
-            Ack_strat =1;
-        }
-        /////////////////////////////STRATEGIE N°2
-        if (STRAT_2.Touched()) {
-            Strat = 1;
-            //msgTx.data[0] = 0x2;
-            //can2.write(msgTx);
-            while(STRAT_2.Touched());
-            Ack_strat =1;
-        }
-        //////////////////////////////STRATEGIE N°3
-        if (STRAT_3.Touched()) {
-            Strat = 2;
-            //msgTx.data[0] = 0x3;
-            //can2.write(msgTx);
-            while(STRAT_3.Touched());
-            Ack_strat =1;
-        }
-        /////////////////////////////STRATEGIE N°4
-        if (STRAT_4.Touched()) {
-            Strat = 3;
-            //msgTx.data[0] = 0x4;
-            //can2.write(msgTx);
-            while(STRAT_4.Touched());
-            Ack_strat =1;
-        }
-        ///////////////////////////////STRATEGIE N°5
-        if (STRAT_5.Touched()) {
-            Strat = 4;
-            //msgTx.data[0] = 0x5;
-            //can2.write(msgTx);
-            while(STRAT_5.Touched());
-            Ack_strat =1;
-        }
-        ////////////////////////////////STRATEGIE N°6
-        if (STRAT_6.Touched()) {
-            Strat = 5;
-            //msgTx.data[0] = 0x6;
-            //can2.write(msgTx);
-            while(STRAT_6.Touched());
-            Ack_strat =1;
-        }
-        /////////////////////////////////STRATEGIE N°7
-        if (STRAT_7.Touched()) {
-            Strat = 6;
-            //msgTx.data[0] = 0x7;
-            //can2.write(msgTx);
-            while(STRAT_7.Touched());
-            Ack_strat =1;
-        }
-        /////////////////////////////////STRATEGIE N°8
-        if (STRAT_8.Touched()) {
-            Strat = 7;
-            //msgTx.data[0] = 0x8;
-            //can2.write(msgTx);
-            while(STRAT_8.Touched());
-            Ack_strat =1;
-        }
-        /////////////////////////////////STRATEGIE N°9
-        if (STRAT_9.Touched()) {
-            Strat = 8;
-            //msgTx.data[0] = 0x9;
-            //can2.write(msgTx);
-            while(STRAT_9.Touched());
-            Ack_strat =1;
-        }
-        ///////////////////////////////////STRATEGIE N°10
-        if (STRAT_10.Touched()) {
-            Strat = 9;
-            //msgTx.data[0] = 0xA;
-            //can2.write(msgTx);
-            while(STRAT_10.Touched());
-            Ack_strat =1;
-        }
-
-    }
-    return Strat;
-
-}
 
 void affichage_compteur (int nombre)
 {