code avec modifs, programme mit dans les robots pour les derniers matchs

Dependencies:   mbed SerialHalfDuplex SDFileSystem liaison_Bluetooth ident_crac DISCO-F469NI_portrait

Files at this revision

API Documentation at this revision

Comitter:
gabrieltetar
Date:
Wed Jun 24 09:39:42 2020 +0000
Parent:
20:2f0b1c48a35f
Child:
22:c7763a7ec6c7
Commit message:
SPLIT - A TEST

Changed in this revision

Asservissement/Asservissement.cpp Show annotated file Show diff for this revision Revisions of this file
Asservissement/Asservissement.h Show annotated file Show diff for this revision Revisions of this file
Evitement/Evitement.cpp Show annotated file Show diff for this revision Revisions of this file
Evitement/Evitement.h Show annotated file Show diff for this revision Revisions of this file
Globals/global.h Show annotated file Show diff for this revision Revisions of this file
Globals/ident_crac_2.h Show diff for this revision Revisions of this file
IHM/DISCO-F469NI_portrait.lib Show annotated file Show diff for this revision Revisions of this file
IHM/ihm.cpp Show annotated file Show diff for this revision Revisions of this file
IHM/ihm.h Show annotated file Show diff for this revision Revisions of this file
Strategie/DISCO-F469NI_portrait.lib Show diff for this revision Revisions of this file
Strategie/Strategie.cpp Show annotated file Show diff for this revision Revisions of this file
Strategie/Strategie.h Show annotated file Show diff for this revision Revisions of this file
Strategie/liaison_Bluetooth.lib Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/Asservissement/Asservissement.cpp	Tue Jun 23 13:31:38 2020 +0000
+++ b/Asservissement/Asservissement.cpp	Wed Jun 24 09:39:42 2020 +0000
@@ -1,5 +1,4 @@
-
-#include "Asservissement.h"
+#include "global.h"
 
 /*********************************************************************************************************/
 /* FUNCTION NAME: SendRawId                                                                              */
--- a/Asservissement/Asservissement.h	Tue Jun 23 13:31:38 2020 +0000
+++ b/Asservissement/Asservissement.h	Wed Jun 24 09:39:42 2020 +0000
@@ -1,8 +1,6 @@
 #ifndef CRAC_ASSERVISSEMENT
 #define CRAC_ASSERVISSEMENT
 
-#include "global.h"
-
 void Send2Short(unsigned short id, unsigned short d1, unsigned short d2);
 void SendMsgCan(unsigned short id, unsigned char* data, int len);
 void SendCharCan(unsigned short id, unsigned char data);
--- a/Evitement/Evitement.cpp	Tue Jun 23 13:31:38 2020 +0000
+++ b/Evitement/Evitement.cpp	Wed Jun 24 09:39:42 2020 +0000
@@ -73,29 +73,29 @@
 /* FUNCTION NAME: Balise end Danger                                                     */
 /* DESCRIPTION  : FIFO -> BALISE_END_DANGER                                             */
 /****************************************************************************************/
-unsigned short balise_end_danger(S_Instruction* instruction,S_Dodge_queue* dodgeq, E_stratGameEtat* gameEtat, signed short target_x_robot, signed short target_y_robot, signed short target_theta_robot, signed short theta_robot,signed short x_robot,signed short y_robot){
+unsigned short balise_end_danger(S_Instruction* instruction,S_Dodge_queue* dodgeq, signed short target_x_robot, signed short target_y_robot, signed short target_theta_robot, signed short theta_robot,signed short x_robot,signed short y_robot){
     Debug_Audio(3,1);
     switch(instruction->order){
         case MV_LINE:
-            *gameEtat=ETAT_GAME_PROCESS_INSTRUCTION;
+            gameEtat=ETAT_GAME_PROCESS_INSTRUCTION;
             instruction->order = MV_XYT;
             instruction->arg1 = target_x_robot;// X
             instruction->arg2 = target_y_robot;// Y
             instruction->arg3 = target_theta_robot;// T
         break;
         case MV_TURN:
-            *gameEtat=ETAT_GAME_PROCESS_INSTRUCTION;
+            gameEtat=ETAT_GAME_PROCESS_INSTRUCTION;
             instruction->order = MV_XYT;
             instruction->arg1 = target_x_robot;// X
             instruction->arg2 = target_y_robot;// Y
             instruction->arg3 = target_theta_robot;// T
         break;
         case MV_XYT:
-            *gameEtat=ETAT_GAME_PROCESS_INSTRUCTION;
+            gameEtat=ETAT_GAME_PROCESS_INSTRUCTION;
         break;
         case MV_COURBURE:
             unsigned short alpha;
-            *gameEtat=ETAT_GAME_PROCESS_INSTRUCTION;
+            gameEtat=ETAT_GAME_PROCESS_INSTRUCTION;
             instruction->order=MV_XYT;
             if(instruction->direction==LEFT) alpha=(dodgeq->inst[0].arg3-theta_robot);
             else alpha=(theta_robot-dodgeq->inst[0].arg3);   
--- a/Evitement/Evitement.h	Tue Jun 23 13:31:38 2020 +0000
+++ b/Evitement/Evitement.h	Wed Jun 24 09:39:42 2020 +0000
@@ -11,7 +11,7 @@
 
 unsigned short balise_danger(void);
 unsigned short balise_stop(signed char FIFO_lecture);
-unsigned short balise_end_danger(S_Instruction* instruction,S_Dodge_queue* dodgeq, E_stratGameEtat* gameEtat, signed short target_x_robot, signed short target_y_robot, signed short target_theta_robot, signed short theta_robot,signed short x_robot,signed short y_robot);
+unsigned short balise_end_danger(S_Instruction* instruction,S_Dodge_queue* dodgeq, signed short target_x_robot, signed short target_y_robot, signed short target_theta_robot, signed short theta_robot,signed short x_robot,signed short y_robot);
 
 
 
--- a/Globals/global.h	Tue Jun 23 13:31:38 2020 +0000
+++ b/Globals/global.h	Wed Jun 24 09:39:42 2020 +0000
@@ -2,14 +2,15 @@
 #define GLOBAL_H
 
 #include "mbed.h"
+
 #include "ident_crac.h"
-
+#include "constantes.h"
 
 #include <CAN.h>
 #include <DirHandle.h>
 #include "SDFileSystem.h"
 #include "conv_data.h"
-#include "constantes.h"
+
 #include "Instruction.h"
 #include "Strategie.h"
 #include "lecture_repertoire.h"
@@ -20,12 +21,13 @@
 #include "LCD_DISCO_F469NI.h"
 #include "fonts.h"
 #include "F469_GUI.hpp"
-#include "LiaisonBluetooth.h"
 #include "Evitement.h"
+#include "ihm.h"
+
 
-//#include "peripheriques.h"
 extern Serial pc;
-
+//extern E_stratGameEtat gameEtat = ETAT_CHECK_CARTES;
+//extern T_etat strat_etat_s = INIT;
 extern CAN can1;
 extern CAN can2;
 extern CANMessage msgRxBuffer[SIZE_FIFO];
@@ -34,9 +36,9 @@
 extern char PATH[10][SIZE+8];
 
 extern signed char nbStrat;
-
+extern unsigned short flag_check_carte;
 extern int ack_bluetooth;
-
+extern unsigned char Cote;
 extern DigitalOut led1,led2,led3,led4;
 extern LCD_DISCO_F469NI lcd;
 extern char cheminFileStart[SIZE+8]; //Le chemin du fichier de strat, utiliser strcpy(cheminFileStart,"/local/strat.txt");
--- a/Globals/ident_crac_2.h	Tue Jun 23 13:31:38 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,207 +0,0 @@
-#ifndef CRAC_IDENTH
-#define CRAC_IDENTH
-
-#define GLOBAL_GAME_END 0x004  // Stop fin du match
-#define GLOBAL_START 0x002  // Start
-#define GLOBAL_END_INIT_POSITION 0x005  // Fin positionnement robot avant depart
-#define GLOBAL_FUNNY_ACTION 0x007  // Funny action start  (0: start, 1: stop)
-#define GLOBAL_JACK 0x008
-#define ACKNOWLEDGE_JACK 0X009
-
-//#define BALISE_STOP 0x003  // Trame stop
-
-#define BALISE_DANGER 0xA  // Trame danger
-
-#define BALISE_END_DANGER 0xB  // Trame fin de danger
-
-
-#define ASSERVISSEMENT_STOP 0x001  // Stop moteur
-#define ASSERVISSEMENT_SPEED_DANGER 0x006  // Vitesse de danger
-
-#define ASSERVISSEMENT_XYT 0x020  // Asservissement (x,y,theta)  (0 : au choix 1 : avant -1 : arrière)
-#define ASSERVISSEMENT_XYT_ROTATE 0x030//premiere rotation durant xy theta
-#define ASSERVISSEMENT_XYT_LINE 0x040//ligne droite durant xy theta
-
-
-#define ASSERVISSEMENT_COURBURE 0x021  // Asservissement rayon de courbure  (+ gauche, - droite , sens : 1avt , -1arr; enchainement => 1 oui, 0 => non, 2=>derniére instruction de l'enchainement)
-#define ASSERVISSEMENT_CONFIG 0x022  // Asservissement paramètre  (définir les valeurs de vitesse max et d'eccélération max)
-#define ASSERVISSEMENT_ROTATION 0x023  // Asservissement rotation
-#define ASSERVISSEMENT_RECALAGE 0x024  // Moteur tout droit  (recalage : 0 mouvement seul, 1 x, 2y valeur : coordonnée à laquelle est recalé x/y; enchainement => 1 oui, 0 => non)
-#define ACTION_BIG_DEMARRAGE 0x025  // Action de départ du GR  (Lancement de la trajectoire de départ du GR)
-#define ODOMETRIE_BIG_POSITION 0x026  // Odométrie position robot  (Position actuel du robot)
-#define ODOMETRIE_BIG_VITESSE 0x027  // Odométrie vitesse  (Indication sur l'état actuel)
-#define ODOMETRIE_SMALL_POSITION 0x028  // Odométrie position robot  (Position actuel du robot)
-#define ODOMETRIE_SMALL_VITESSE 0x029  // Odométrie vitesse  (Indication sur l'état actuel)
-
-
-
-#define ASSERVISSEMENT_CONFIG_DECEL 0x019 // Asservissement paramètre  (définir les valeurs de vitesse max et de decélération max)
-
-
-//////////////////////////////////////////////////////////RESETS///////////////////////////////////////////////////
-#define RESET_BALISE 0x030  // Reset balise
-#define RESET_MOTEUR 0x031  // Reset moteur
-#define RESET_IHM 0x032  // Reset écran tactile
-#define RESET_ACTIONNEURS 0x033  // Reset actionneurs
-#define RESET_POMPES 0x034  // Reset pompes
-#define RESET_AX12 0x035  // Reset AX12
-#define RESET_TELEMETRE 0x036 // Reset telemetre
-
-
-
-#define RESET_STRAT 0x3A  // Reset stratégie
-
-//////////////////////////////////////////////////////////CHECK CARTES/////////////////////////////////////////////////
-#define CHECK_BALISE 0x060  // Check balise
-#define CHECK_MOTEUR 0x061  // Check moteur
-#define CHECK_IHM 0x062  // Check écran tactile
-#define CHECK_ACTIONNEURS_AVANT 0x063  // Check actionneurs
-#define CHECK_ACTIONNEURS_ARRIERE 0x064  // Check pompes
-#define CHECK_AX12 0x065  // Check AX12
-#define CHECK_OK_TELEMETRE 0x066 // Check telemetre
-
-//////////////////////////////////////////////////////////ACK CARTES///////////////////////////////////////////////////
-#define ALIVE_BALISE 0x070  // Alive balise
-#define ALIVE_MOTEUR 0x071  // Alive moteur
-#define ALIVE_IHM 0x072  // Alive écran tactile
-#define ALIVE_ACTIONNEURS_AVANT 0x073  // Alive actionneurs
-#define ALIVE_ACTIONNEURS_ARRIERE 0x074  // Alive pompes
-#define ALIVE_HERKULEX 0x075  // Alive AX12
-#define ALIVE_TELEMETRE 0x076 // Alive telemetre
-
-
-/////////////////////////////////////////////////////ACTIONS COMPLEXES/////////////////////////////////////////////////
-#define MONTER_IMMEUBLE_DOUBLE 0x090  // Monte deux immeubles selon un code couleur
-#define MONTER_IMMEUBLE 0x091
-#define ACK_ACTION 0x99 //autre action possible via les herkulex, ne peut pas passer en sendrawid
-
-
-
-/////////////////////////////////////////////////////////ACKS////////////////////////////////////////////////////////////
-#define ACKNOWLEDGE_BALISE 0x100  // Acknowledge balise
-#define ACKNOWLEDGE_MOTEUR 0x101  // Acknowledge moteur
-#define ACKNOWLEDGE_IHM 0x102  // Acknowledge ecran tactile
-#define ACKNOWLEDGE_ACTIONNEURS 0x103  // Acknowledge actionneurs
-#define ACKNOWLEDGE_POMPES 0x104  // Acknowledge pompes
-#define ACKNOWLEDGE_TELEMETRE 0x105 // Acknowledge telemetre
-#define ACKNOWLEDGE_HERKULEX 0x106 // Ack ax12
-#define ACKNOWLEDGE_STRAT 0x10A  // Acknowledge pompes
-#define ACKNOWLEDGE_CAMERA 0x108 //Acknowledge couleur caméra
-
-
-#define INSTRUCTION_END_BALISE 0x110  // Fin instruction balise  (Indique que l'instruction est terminée)
-#define INSTRUCTION_END_MOTEUR 0x111  // Fin instruction moteur  (Indique que l'instruction est terminée)
-#define INSTRUCTION_END_IHM 0x112  // Fin instruction ecran tactile  (Indique que l'instruction est terminée)
-#define INSTRUCTION_END_ACTIONNEURS 0x113  // Fin instruction actionneurs  (Indique que l'instruction est terminée)
-#define ACK_FIN_ACTION 0x116
-
-
-
-/////////////////////////////////////////////////////////ERREURS////////////////////////////////////////////////////////
-#define ERROR_OVERFLOW_BALISE 0x040  // Overflow odométrie
-#define ERROR_OVERFLOW_MOTEUR 0x041  // Overflow asservissement
-#define ERROR_OVERFLOW_IHM 0x042  // Overflow balise
-#define ERROR_OVERFLOW_STRAT 0x043  // Overflow stratégie
-#define ERROR_BALISE 0x785  // Bug balise
-#define ERROR_RTC 0x786  // Bug RTC
-#define ERROR_MOTEUR 0x787  // Bug moteur
-#define ERROR_TELEMETRIE 0x788  // Bug télémètre
-#define ERROR_STRATEGIE 0x789  // Bug stratégie
-
-
-
-/////////////////////////////////////////////////ACTIONS SIMPLES DU ROBOT/////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-
-#define GABARIT 0x200
-#define GABARIT_D 0x201
-#define PRESENTOIR 0x202
-
-
-
-//commande pompe
-#define HACHEUR_GET_ATOM            0x520
-#define HACHEUR_GET_ATOM_ACK        0x521
-
-#define HACHEUR_RELEASE_ATOM 0x522
-#define HACHEUR_RELEASE_ATOM_ACK 0x523
-
-#define HACHEUR_GET_PRESENTOIR_AV   0x524
-#define HACHEUR_RELEASE_AV          0x525
-
-#define HACHEUR_GET_PRESENTOIR_AR   0x526
-#define HACHEUR_RELEASE_AR          0x527
-
-#define HACHEUR_STATUT_VENTOUSES    0x528
-
-//#define BAISSER_ATTRAPE_BLOC_AvG 0x222
-#define RELEVER_ATTRAPE_BLOC_AvG 0x223
-
-#define BAISSER_ATTRAPE_BLOC_AvD 0x224
-#define RELEVER_ATTRAPE_BLOC_AvD 0x225
-
-#define INTER_BAISSER_ATTRAPE_BLOC_AvG 0x226
-#define INTER_BAISSER_ATTRAPE_BLOC_AvD 0x227
-
-#define RANGER_ATTRAPE_BLOC_AvD 0x228
-#define RANGER_ATTRAPE_BLOC_AvG 0x229
-
-#define BRAS_VENTOUSE_1 0x22A
-#define BRAS_VENTOUSE_2 0x22B
-
-#define BRAS_ABEILLE_UP 0x202
-#define BRAS_ABEILLE_DOWN 0x203
-#define INCLINAISON_CHATEAU 0x204
-#define INCLINAISON_EPURATION 0x205
-#define ALLUMER_PANNEAU_UP 0x206
-#define ALLUMER_PANNEAU_DOWN 0x207
-#define BLOCAGE_BALLE 0x208
-#define LANCEMENT_MOTEUR_TIR_ON 0x209
-#define LANCEMENT_MOTEUR_TIR_OFF 0x20A
-#define AIGUILLEUR_CENTRE 0x20B
-#define AIGUILLEUR_GAUCHE 0x20C
-#define AIGUILLEUR_DROITE 0x20D
-#define TRI_BALLE 0x20E
-#define NO_BLOC 0x20F
-
-///////////////////////////////////////////CAPTEURS///////////////////////////////////////////////////////////////////
-#define DATA_TELEMETRE 0x310        // Demande sa valeur à un télémètre parmis les 
-#define RECEPTION_DATA 0x311        // envoi de la valeur d'un des télémètres
-#define TELEMETRE_OBJET 0x312
-#define OBJET_SUR_TABLE 0x313
-#define RECEPTION_RECALAGE 0x315    //Valeur des télémètres 
-#define DATA_RECALAGE 0x316         //Demande de la valeur de tous les télémètres afin de procèder au récalage
-#define LIRE_PANNEAU 0x317
-#define VIBRO 0x318
-
-
-#define DATA_TELEMETRE_LOGIQUE 0x319
-#define RECEPTION_TELEMETRE_LOGIQUE 0x320
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////ENVOI DE PARAMETRES//////////////////////////////////////////////////
-#define CHOICE_COLOR 0x602  // Couleur  (0->VERT;1->ORANGE)
-#define RECEPTION_COULEUR 0x603 //Code Couleur
-#define ECRAN_ALL_CHECK 0x620  // Carte all check  (Si provient de carte strat => toutes les cartes sont en ligne, Si provient IHM => forcer le lancement)
-
-///////////////////////////////////////////////////////////DEBUGS///////////////////////////////////////////////////////
-#define DEBUG_STRATEGIE_AUTOMATE 0x760  // Etat automate stratégie  (Permet de savoir l'etat de l'automate)
-#define DEBUG_FAKE_JAKE 0x761  // Fake jack  (Permet d'outre passerr le JACk du robot)
-#define DEBUG_ASSERV 0x762  // Info debug carte moteur
-
-
-
-#define POMPE_PWM 0x9A  // pwm des pompes  (pwm entre 0 et 100)
-
-
-#define ASSERVISSEMENT_INFO_CONSIGNE 0x1F0  // Info Consigne et Commande moteur
-#define ASSERVISSEMENT_CONFIG_KPP_DROITE 0x1F1  // Config coef KPP_Droit
-#define ASSERVISSEMENT_CONFIG_KPI_DROITE 0x1F2  // Config coef KPI_Droit
-#define ASSERVISSEMENT_CONFIG_KPD_DROITE 0x1F3  // Config coef KPD_Droit
-#define ASSERVISSEMENT_CONFIG_KPP_GAUCHE 0x1F4  // Config coef KPP_Gauche
-#define ASSERVISSEMENT_CONFIG_KPI_GAUCHE 0x1F5  // Config coef KPI_Gauche
-#define ASSERVISSEMENT_CONFIG_KPD_GAUCHE 0x1F6  // Config coef KPD_Gauche
-#define ASSERVISSEMENT_ENABLE 0x1F7  // Activation asservissement  (0 : désactivation, 1 : activation)
-    
-#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IHM/DISCO-F469NI_portrait.lib	Wed Jun 24 09:39:42 2020 +0000
@@ -0,0 +1,1 @@
+http://os.mbed.com/teams/CRAC-Team/code/DISCO-F469NI_portrait/#d84fc295915e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IHM/ihm.cpp	Wed Jun 24 09:39:42 2020 +0000
@@ -0,0 +1,741 @@
+#include "global.h"
+
+#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
+TS_DISCO_F469NI ts;
+LCD_DISCO_F469NI lcd;
+
+
+TS_StateTypeDef TS_State;
+
+
+/////////////////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,"-");
+
+
+Button FORCE_LAUNCH(0, 50, 400, 320, "Force Launch");
+Button SUIVANT(0,380,200,100,"Suivant");
+////////////////////////////////////////////////////////////
+
+signed char Bouton_Strat (void);
+
+void SelectionStrat (unsigned char numeroStrat);
+
+/****************************************************************************************/
+/* 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 (strat_etat_s) {
+        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);
+
+            strat_etat_s=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_check_carte==1) {
+                strat_etat_s = CHOIX;
+                gameEtat = ETAT_CONFIG;
+            } else if (FORCE_LAUNCH.Touched()) {
+                strat_etat_s = 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(strat_etat_s == CHOIX) {
+                canProcessRx();
+                if(DEMONSTRATION.Touched()) {
+                    strat_etat_s = DEMO;
+                    while(DEMONSTRATION.Touched());
+                }
+
+                if(MATCH.Touched()) {
+                    strat_etat_s = 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 (strat_etat_s == DEMO) {
+                canProcessRx();
+                if(TEST_VENT.Touched()) {
+                    while(TEST_VENT.Touched());
+                    strat_etat_s = TEST_VENTOUSE;
+                } else if(TEST_MOT.Touched()) {
+                    while(TEST_MOT.Touched());
+                    strat_etat_s = TEST_MOTEUR;
+                } else if(TEST_ELECTRV.Touched()) {
+                    while(TEST_ELECTRV.Touched());
+                    strat_etat_s = TEST_ELECTROV;
+                } else if (TEST_COUL.Touched()) {
+                    while(TEST_COUL.Touched());
+                    strat_etat_s =TEST_COULEUR ;
+                } else if (TEST_BRAS.Touched()) {
+                    while(TEST_BRAS.Touched());
+                    strat_etat_s =TEST_SERVO_BRAS ;
+                } else if(TEST_AUDIO.Touched()) {
+                    while(TEST_AUDIO.Touched());
+                    strat_etat_s=TEST_AUD;
+                } else if(RETOUR.Touched()) {
+                    while(RETOUR.Touched());
+                    strat_etat_s = 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(strat_etat_s==TEST_VENTOUSE) {
+                if(RETOUR.Touched()) {
+                    while (RETOUR.Touched());
+                    strat_etat_s=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(strat_etat_s==TEST_ELECTROV) {
+                if(RETOUR.Touched()) {
+                    while (RETOUR.Touched());
+                    strat_etat_s=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(strat_etat_s==TEST_AUD) {
+                if(RETOUR.Touched()) {
+                    while (RETOUR.Touched());
+                    strat_etat_s=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(strat_etat_s==TEST_SERVO_BRAS) {
+                if(RETOUR.Touched()) {
+                    while (RETOUR.Touched());
+                    strat_etat_s=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(strat_etat_s==TEST_COULEUR) {
+                if(RETOUR.Touched()) {
+                    while (RETOUR.Touched());
+                    strat_etat_s=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(strat_etat_s==TEST_MOTEUR) {
+                if(RETOUR.Touched()) {
+                    while (RETOUR.Touched());
+                    strat_etat_s=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 (strat_etat_s == SELECT_SIDE) {
+                canProcessRx();
+                if(COTE_JAUNE.Touched()) {
+                    Cote = 0x0;
+                    InversStrat = Cote;
+                    strat_etat_s = 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;
+                    strat_etat_s = 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()) {
+                    strat_etat_s = 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) {
+                strat_etat_s = SELECT_SIDE;
+            } else {
+                strat_etat_s = 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 (strat_etat_s == DETAILS) {
+                canProcessRx();
+                if (CHECK.Touched()) {
+                    if(gameEtat == ETAT_CONFIG) {
+                        gameEtat = ETAT_GAME_INIT;
+                        strat_etat_s=LECTURE;
+
+                    }
+                    while(CHECK.Touched());
+                }
+
+                if(RETOUR.Touched()) {
+                    strat_etat_s = 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);
+            strat_etat_s=WAIT_JACK;
+            break;
+
+        case WAIT_JACK: //VERITABLE ATTENTE DU JACK
+            break;
+
+        case FIN :  //AFFICHAGE DE FIN AVEC LE SCORE FINAL
+            lcd.Clear (LCD_COLOR_WHITE);
+            lcd.SetBackColor(LCD_COLOR_WHITE);
+
+
+            while(1); // force le redemarage du robot
+            //break;
+
+    }
+    }
+/****************************************************************************************/
+/* FUNCTION NAME: Bouton_Strat                                                          */
+/* DESCRIPTION  : Sélection de la strat sur le lcd puis envoie sur CAN (à modifier!)    */
+/****************************************************************************************/
+signed char Bouton_Strat (void)
+{
+    char Ack_strat = 0;
+    signed char Strat = 0;
+    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;
+
+}
+/****************************************************************************************/
+/* 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;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IHM/ihm.h	Wed Jun 24 09:39:42 2020 +0000
@@ -0,0 +1,6 @@
+#ifndef CRAC_IHM
+#define CRAC_IHM
+
+void automate_etat_ihm(void);
+
+#endif
\ No newline at end of file
--- a/Strategie/DISCO-F469NI_portrait.lib	Tue Jun 23 13:31:38 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://os.mbed.com/teams/CRAC-Team/code/DISCO-F469NI_portrait/#d84fc295915e
--- 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)
 {
--- a/Strategie/Strategie.h	Tue Jun 23 13:31:38 2020 +0000
+++ b/Strategie/Strategie.h	Wed Jun 24 09:39:42 2020 +0000
@@ -12,6 +12,26 @@
     FIN_POS,
 }E_Stratposdebut;
     
+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,
+    FIN} T_etat;
+    
 typedef enum
 {
     ETAT_CHECK_CARTE_SCREEN, //Envoie check carte screen
@@ -33,11 +53,10 @@
     ETAT_END,
     ETAT_END_LOOP,
 } E_stratGameEtat;
-
+extern E_stratGameEtat gameEtat;
+extern T_etat strat_etat_s;
 void canProcessRx(void);
 void Strategie(void);
-void automate_etat_ihm(void);
-void init_lcd(void);
 short recalageAngulaireCapteur(void);
 short recalageDistanceX(void);
 short recalageDistanceY(void);
--- a/Strategie/liaison_Bluetooth.lib	Tue Jun 23 13:31:38 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://os.mbed.com/teams/CRAC-Team/code/liaison_Bluetooth/#1c3ff1ff1bc0
--- a/main.cpp	Tue Jun 23 13:31:38 2020 +0000
+++ b/main.cpp	Wed Jun 24 09:39:42 2020 +0000
@@ -16,7 +16,6 @@
 unsigned short waitingAckFrom=0;//La provenance du ack attendu
 unsigned short waitingId=0;
 char modeTelemetre; // Si à 1, indique que l'on attend une reponse du telemetre
-
 DigitalOut led1(LED1);//Led d'indication de problème, si elle clignote, c'est pas bon
 DigitalOut led2(LED2);//Led d'indication de problème, si elle clignote, c'est pas bon
 DigitalOut led3(LED3);//Led d'indication de problème, si elle clignote, c'est pas bon