TRR 2018 / Mbed 2 deprecated biniou-TRR2019-DLVV

Dependencies:   mbed MPU6050

Committer:
GaspardD
Date:
Sun Sep 29 20:07:54 2019 +0000
Revision:
6:ab9f3695633f
Parent:
4:efa207509f63
Child:
8:f23601373e8b
jules guesde mc gyver;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
GaspardD 3:1b7eb426247e 1 #include "sm_sections.h"
GaspardD 3:1b7eb426247e 2
GaspardD 3:1b7eb426247e 3
GaspardD 4:efa207509f63 4 s_Section s_section1;
GaspardD 4:efa207509f63 5 s_Section s_section2;
GaspardD 3:1b7eb426247e 6
GaspardD 4:efa207509f63 7 E_STATE_SECTIONS e_stateSections;
GaspardD 3:1b7eb426247e 8
GaspardD 3:1b7eb426247e 9 void init_sm_sections(){
GaspardD 3:1b7eb426247e 10
GaspardD 4:efa207509f63 11 d_ODOM_distFromSectionStart_m = 0.0;
GaspardD 4:efa207509f63 12 e_stateSections = STOPPED;
GaspardD 6:ab9f3695633f 13 s_UTILS_currentSection = NULL;
GaspardD 4:efa207509f63 14
GaspardD 4:efa207509f63 15
GaspardD 3:1b7eb426247e 16 //section de départ
GaspardD 4:efa207509f63 17 s_section1.nextSection = &s_section2;
GaspardD 4:efa207509f63 18 s_section1.consigne_position = 0.75;
GaspardD 4:efa207509f63 19 s_section1.targetSpeed_mps = 1.0;
GaspardD 4:efa207509f63 20 s_section1.lng_section_m = 1.0;
GaspardD 4:efa207509f63 21 s_section1.coef_p = 1.0;
GaspardD 4:efa207509f63 22 s_section1.coef_d = 0.0;
GaspardD 4:efa207509f63 23 s_section1.coef_i = 0.000;
GaspardD 3:1b7eb426247e 24
GaspardD 3:1b7eb426247e 25 //epingle 1
GaspardD 4:efa207509f63 26 s_section2.nextSection = NULL;
GaspardD 4:efa207509f63 27 s_section2.consigne_position = 0.75;
GaspardD 4:efa207509f63 28 s_section2.targetSpeed_mps = 1.0;
GaspardD 4:efa207509f63 29 s_section2.lng_section_m = 1.0;
GaspardD 4:efa207509f63 30 s_section2.coef_p = 1.0;
GaspardD 4:efa207509f63 31 s_section2.coef_d = 0.0;
GaspardD 4:efa207509f63 32 s_section2.coef_i = 0.000;
GaspardD 3:1b7eb426247e 33
GaspardD 3:1b7eb426247e 34 return;
GaspardD 3:1b7eb426247e 35 }
GaspardD 3:1b7eb426247e 36 void update_sm_sections(){
GaspardD 4:efa207509f63 37
GaspardD 4:efa207509f63 38 E_STATE_SECTIONS e_next_state = e_stateSections;
GaspardD 4:efa207509f63 39
GaspardD 6:ab9f3695633f 40 //pc.printf("\r\nUpdate Section\r\n");
GaspardD 4:efa207509f63 41
GaspardD 4:efa207509f63 42 if(b_UTILS_flag_button){
GaspardD 4:efa207509f63 43 e_next_state = INIT_SECTION;
GaspardD 4:efa207509f63 44 }
GaspardD 6:ab9f3695633f 45 else if(s_UTILS_currentSection == NULL && e_stateSections != INIT_SECTION) {
GaspardD 4:efa207509f63 46 e_next_state = STOPPED;
GaspardD 4:efa207509f63 47 } else {
GaspardD 4:efa207509f63 48
GaspardD 4:efa207509f63 49 switch (e_stateSections) {
GaspardD 4:efa207509f63 50 case INIT_SECTION:
GaspardD 4:efa207509f63 51 e_next_state = LOADING_SECTION;
GaspardD 4:efa207509f63 52 break;
GaspardD 4:efa207509f63 53 case RUNNING_SECTION:
GaspardD 6:ab9f3695633f 54 if(d_ODOM_distFromSectionStart_m > s_UTILS_currentSection->lng_section_m) {
GaspardD 4:efa207509f63 55 e_next_state = LOADING_SECTION;
GaspardD 4:efa207509f63 56 } else if (b_UTILS_flag_emergency_stop){
GaspardD 4:efa207509f63 57 e_next_state = STOPPED;
GaspardD 4:efa207509f63 58 }
GaspardD 4:efa207509f63 59 else{
GaspardD 4:efa207509f63 60 return;
GaspardD 4:efa207509f63 61 }
GaspardD 4:efa207509f63 62 break;
GaspardD 4:efa207509f63 63 case LOADING_SECTION:
GaspardD 6:ab9f3695633f 64 if(s_UTILS_currentSection != NULL && !b_UTILS_flag_emergency_stop) { //la section a ete chargee dans sectionOutput
GaspardD 4:efa207509f63 65 e_next_state = RUNNING_SECTION;
GaspardD 4:efa207509f63 66 } else {
GaspardD 4:efa207509f63 67 e_next_state=STOPPED;
GaspardD 4:efa207509f63 68 }
GaspardD 4:efa207509f63 69 break;
GaspardD 4:efa207509f63 70 case STOPPED:
GaspardD 6:ab9f3695633f 71 if(s_UTILS_currentSection != NULL) {
GaspardD 4:efa207509f63 72 e_next_state = RUNNING_SECTION;
GaspardD 4:efa207509f63 73 } else {
GaspardD 4:efa207509f63 74 return;
GaspardD 4:efa207509f63 75 }
GaspardD 4:efa207509f63 76 break;
GaspardD 4:efa207509f63 77 default:
GaspardD 4:efa207509f63 78 break;
GaspardD 4:efa207509f63 79 }
GaspardD 4:efa207509f63 80 }
GaspardD 4:efa207509f63 81 e_stateSections = e_next_state;
GaspardD 3:1b7eb426247e 82 return;
GaspardD 3:1b7eb426247e 83 }
GaspardD 3:1b7eb426247e 84 void output_sm_sections(){
GaspardD 4:efa207509f63 85
GaspardD 6:ab9f3695633f 86 //pc.printf("\r\n Output Section\r\n");
GaspardD 6:ab9f3695633f 87 if(s_UTILS_currentSection !=NULL) {
GaspardD 4:efa207509f63 88 switch (e_stateSections) {
GaspardD 4:efa207509f63 89 case INIT_SECTION:
GaspardD 4:efa207509f63 90 b_UTILS_flag_button = false;
GaspardD 6:ab9f3695633f 91 s_UTILS_currentSection = &s_section1;
GaspardD 4:efa207509f63 92 case RUNNING_SECTION:
GaspardD 4:efa207509f63 93 break;
GaspardD 4:efa207509f63 94 case LOADING_SECTION:
GaspardD 6:ab9f3695633f 95 s_UTILS_currentSection=s_UTILS_currentSection->nextSection;
GaspardD 4:efa207509f63 96 d_ODOM_distFromSectionStart_m = 0.0;
GaspardD 4:efa207509f63 97 break;
GaspardD 4:efa207509f63 98 case STOPPED:
GaspardD 4:efa207509f63 99 //on est à l'arret
GaspardD 4:efa207509f63 100 break;
GaspardD 4:efa207509f63 101 default:
GaspardD 4:efa207509f63 102 break;
GaspardD 4:efa207509f63 103 }
GaspardD 4:efa207509f63 104 }
GaspardD 3:1b7eb426247e 105 return;
GaspardD 3:1b7eb426247e 106 }