code avec la sortie d'évitement en plus géré par un ticker, ce code et le code "avec_modifs" buggent en match avec seulement la stratégie agressive.

Dependencies:   mbed SerialHalfDuplex SDFileSystem liaison_Bluetooth ident_crac DISCO-F469NI_portrait

Committer:
goldmas
Date:
Sat Jul 17 11:07:17 2021 +0000
Revision:
37:9d6a3ccc0582
Parent:
1:7e925468f9d9
Dernier code de la coupe de fracne 2021

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gabrieltetar 1:7e925468f9d9 1 #ifndef CRAC_INSTRUCTION
gabrieltetar 1:7e925468f9d9 2 #define CRAC_INSTRUCTION
gabrieltetar 1:7e925468f9d9 3
gabrieltetar 1:7e925468f9d9 4 #define caca 40
gabrieltetar 1:7e925468f9d9 5
gabrieltetar 1:7e925468f9d9 6 enum E_InstructionType
gabrieltetar 1:7e925468f9d9 7 {
gabrieltetar 1:7e925468f9d9 8 MV_BEZIER,
gabrieltetar 1:7e925468f9d9 9 MV_COURBURE, // C -> Courbure
gabrieltetar 1:7e925468f9d9 10 MV_LINE, // L -> Ligne droite
gabrieltetar 1:7e925468f9d9 11 MV_TURN, // T -> Rotation sur place
gabrieltetar 1:7e925468f9d9 12 MV_XYT, // X -> Aller à
gabrieltetar 1:7e925468f9d9 13 MV_RECALAGE, // R -> Recalage bordure
gabrieltetar 1:7e925468f9d9 14 ACTION, // A -> Action
gabrieltetar 1:7e925468f9d9 15 UNKNOWN, // Erreur, instruction inconnue
gabrieltetar 1:7e925468f9d9 16 POSITION_DEBUT // P
gabrieltetar 1:7e925468f9d9 17 };
gabrieltetar 1:7e925468f9d9 18 enum E_InstructionDirection
gabrieltetar 1:7e925468f9d9 19 {
gabrieltetar 1:7e925468f9d9 20 NODIRECTION, // N -> Parametre absent
gabrieltetar 1:7e925468f9d9 21 BACKWARD,
gabrieltetar 1:7e925468f9d9 22 FORWARD,
gabrieltetar 1:7e925468f9d9 23 RELATIVE,
gabrieltetar 1:7e925468f9d9 24 ABSOLUTE,
gabrieltetar 1:7e925468f9d9 25 LEFT,
gabrieltetar 1:7e925468f9d9 26 RIGHT
gabrieltetar 1:7e925468f9d9 27 };
gabrieltetar 1:7e925468f9d9 28 enum E_InstructionPrecisionOuRecalage
gabrieltetar 1:7e925468f9d9 29 {
gabrieltetar 1:7e925468f9d9 30 NOPRECISION,// N -> Parametre absent
gabrieltetar 1:7e925468f9d9 31 PRECISION, // P -> Precision, verifier la position à la fin du mouvement et refaire un XYT si erreur > 1cm
gabrieltetar 1:7e925468f9d9 32 RECALAGE_X, // X -> Recalage en X, indique un recalage sur l'axe X
gabrieltetar 1:7e925468f9d9 33 RECALAGE_Y, // Y -> Recalage en Y, indique un recalage sur l'axe Y
gabrieltetar 1:7e925468f9d9 34 RECALAGE_T
gabrieltetar 1:7e925468f9d9 35 };
gabrieltetar 1:7e925468f9d9 36 enum E_InstructionNextActionType
gabrieltetar 1:7e925468f9d9 37 {
gabrieltetar 1:7e925468f9d9 38 NONEXTACTION, // N -> Parametre absent
gabrieltetar 1:7e925468f9d9 39 JUMP,
gabrieltetar 1:7e925468f9d9 40 WAIT,
gabrieltetar 1:7e925468f9d9 41 ENCHAINEMENT,
gabrieltetar 1:7e925468f9d9 42 MECANIQUE,
gabrieltetar 1:7e925468f9d9 43 CAPTEUR
gabrieltetar 1:7e925468f9d9 44 };
gabrieltetar 1:7e925468f9d9 45 enum E_InstructionNextActionJumpType
gabrieltetar 1:7e925468f9d9 46 {
gabrieltetar 1:7e925468f9d9 47 NONEXTACTIONJUMPTYPE, // N -> Parametre absent
gabrieltetar 1:7e925468f9d9 48 JUMP_TIME,
gabrieltetar 1:7e925468f9d9 49 JUMP_POSITION
gabrieltetar 1:7e925468f9d9 50 };
gabrieltetar 1:7e925468f9d9 51 struct S_Instruction
gabrieltetar 1:7e925468f9d9 52 {
gabrieltetar 1:7e925468f9d9 53 short lineNumber;//Numéro de la ligne
gabrieltetar 1:7e925468f9d9 54 enum E_InstructionType order; //Type de l'instruction
gabrieltetar 1:7e925468f9d9 55 enum E_InstructionDirection direction; //BackWard ou Forward || Relative ou Absolu
gabrieltetar 1:7e925468f9d9 56
gabrieltetar 1:7e925468f9d9 57 unsigned short arg1;
gabrieltetar 1:7e925468f9d9 58 unsigned short arg2;
gabrieltetar 1:7e925468f9d9 59 signed short arg3;
gabrieltetar 1:7e925468f9d9 60
gabrieltetar 1:7e925468f9d9 61 enum E_InstructionPrecisionOuRecalage precision;
gabrieltetar 1:7e925468f9d9 62 enum E_InstructionNextActionType nextActionType;
gabrieltetar 1:7e925468f9d9 63 enum E_InstructionNextActionJumpType jumpAction;
gabrieltetar 1:7e925468f9d9 64 unsigned short JumpTimeOrX;
gabrieltetar 1:7e925468f9d9 65 unsigned short JumpY;
gabrieltetar 1:7e925468f9d9 66 unsigned short nextLineOK;
gabrieltetar 1:7e925468f9d9 67 unsigned short nextLineError;
gabrieltetar 1:7e925468f9d9 68
gabrieltetar 1:7e925468f9d9 69 unsigned short arg4;
gabrieltetar 1:7e925468f9d9 70 unsigned short arg5;
gabrieltetar 1:7e925468f9d9 71 signed short arg6;
gabrieltetar 1:7e925468f9d9 72 };
gabrieltetar 1:7e925468f9d9 73
gabrieltetar 1:7e925468f9d9 74 struct S_Dodge_queue
gabrieltetar 1:7e925468f9d9 75 {
gabrieltetar 1:7e925468f9d9 76 unsigned short nb;//Nombre d action en file dattente [0,9]
gabrieltetar 1:7e925468f9d9 77 struct S_Instruction inst[10];
gabrieltetar 1:7e925468f9d9 78 };
gabrieltetar 1:7e925468f9d9 79
gabrieltetar 1:7e925468f9d9 80 /**
gabrieltetar 1:7e925468f9d9 81 * Convertir un char en type d'instruction
gabrieltetar 1:7e925468f9d9 82 **/
gabrieltetar 1:7e925468f9d9 83 enum E_InstructionType charToInstructionType(char type);
gabrieltetar 1:7e925468f9d9 84
gabrieltetar 1:7e925468f9d9 85 /**
gabrieltetar 1:7e925468f9d9 86 *
gabrieltetar 1:7e925468f9d9 87 **/
gabrieltetar 1:7e925468f9d9 88 enum E_InstructionDirection charToInstructionDirection(char type);
gabrieltetar 1:7e925468f9d9 89
gabrieltetar 1:7e925468f9d9 90 /**
gabrieltetar 1:7e925468f9d9 91 * Convertir un char
gabrieltetar 1:7e925468f9d9 92 **/
gabrieltetar 1:7e925468f9d9 93 enum E_InstructionPrecisionOuRecalage charToInstructionPrecisionOuRecalage(char type);
gabrieltetar 1:7e925468f9d9 94
gabrieltetar 1:7e925468f9d9 95 /**
gabrieltetar 1:7e925468f9d9 96 *
gabrieltetar 1:7e925468f9d9 97 **/
gabrieltetar 1:7e925468f9d9 98 enum E_InstructionNextActionType charToInstructionNextActionType(char type);
gabrieltetar 1:7e925468f9d9 99
gabrieltetar 1:7e925468f9d9 100 /**
gabrieltetar 1:7e925468f9d9 101 *
gabrieltetar 1:7e925468f9d9 102 **/
gabrieltetar 1:7e925468f9d9 103 enum E_InstructionNextActionJumpType charToInstructionNextActionJumpType(char type);
gabrieltetar 1:7e925468f9d9 104
gabrieltetar 1:7e925468f9d9 105 /****************************************************************************************/
gabrieltetar 1:7e925468f9d9 106 /* FUNCTION NAME: stringToInstruction */
gabrieltetar 1:7e925468f9d9 107 /* DESCRIPTION : Conversion d'une ligne du fichier de strat en instruction */
gabrieltetar 1:7e925468f9d9 108 /****************************************************************************************/
gabrieltetar 1:7e925468f9d9 109 struct S_Instruction stringToInstruction(char line[]);
gabrieltetar 1:7e925468f9d9 110
gabrieltetar 1:7e925468f9d9 111 /****************************************************************************************/
gabrieltetar 1:7e925468f9d9 112 /* FUNCTION NAME: loadAllInstruction */
gabrieltetar 1:7e925468f9d9 113 /* DESCRIPTION : Charger toutes les instructions du fichier de stratégie */
gabrieltetar 1:7e925468f9d9 114 /* Il faut utiliser strcpy(cheminFileStart,"/local/strat.txt"); */
gabrieltetar 1:7e925468f9d9 115 /* pour indiquer le fichier à utiliser */
gabrieltetar 1:7e925468f9d9 116 /****************************************************************************************/
gabrieltetar 1:7e925468f9d9 117 void loadAllInstruction( signed char Strategie);
gabrieltetar 1:7e925468f9d9 118
gabrieltetar 1:7e925468f9d9 119 /****************************************************************************************/
gabrieltetar 1:7e925468f9d9 120 /* FUNCTION NAME: FileExists */
gabrieltetar 1:7e925468f9d9 121 /* DESCRIPTION : Permet de vérifier si un fichier existe */
gabrieltetar 1:7e925468f9d9 122 /****************************************************************************************/
gabrieltetar 1:7e925468f9d9 123 int FileExists(const char *fname);
gabrieltetar 1:7e925468f9d9 124
gabrieltetar 1:7e925468f9d9 125
gabrieltetar 1:7e925468f9d9 126 #endif