Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
sm_sections.cpp@6:ab9f3695633f, 2019-09-29 (annotated)
- 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?
User | Revision | Line number | New 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 | } |