Gestion du Traffic Adaptatif- Code du mbed coordinateur

Dependencies:   XBeeLib mbed mbed-rtos EthernetInterface

Committer:
pierreblouet
Date:
Sun Nov 11 18:01:39 2018 +0000
Revision:
16:b4d5eb2ee378
Parent:
15:e263f8c52b9f
Child:
17:0694b399bd0d
slt a tous;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilmont 1:491820ee784d 1 #include "mbed.h"
mbed_official 11:0309bef74ba8 2 #include "rtos.h"
leomerel 12:9ec78b07c688 3
pierreblouet 16:b4d5eb2ee378 4 //pierre was here
pierreblouet 16:b4d5eb2ee378 5
leomerel 12:9ec78b07c688 6 DigitalOut nordSudR(p29);
leomerel 12:9ec78b07c688 7 DigitalOut nordSudJ(p27);
leomerel 12:9ec78b07c688 8 DigitalOut nordSudV(p25);
leomerel 12:9ec78b07c688 9 DigitalOut estOuestR(p12);
leomerel 12:9ec78b07c688 10 DigitalOut estOuestJ(p14);
leomerel 12:9ec78b07c688 11 DigitalOut estOuestV(p16);
leomerel 12:9ec78b07c688 12 DigitalIn boutonPlusNS(p22);
leomerel 12:9ec78b07c688 13 DigitalIn boutonMoinsNS(p21);
leomerel 12:9ec78b07c688 14 DigitalIn boutonPlusEO(p19);
leomerel 12:9ec78b07c688 15 DigitalIn boutonMoinsEO(p20);
leomerel 12:9ec78b07c688 16 Thread t_eo;
leomerel 12:9ec78b07c688 17 Thread t_ns;
leomerel 12:9ec78b07c688 18 Thread t_gestion;
leomerel 12:9ec78b07c688 19 Thread t_nbVoiture;
leomerel 12:9ec78b07c688 20
leomerel 12:9ec78b07c688 21 int nombreDeVoitureNS = 0;
leomerel 12:9ec78b07c688 22 int nombreDeVoitureEO = 0;
leomerel 12:9ec78b07c688 23
leomerel 12:9ec78b07c688 24 Mutex dPassage;
leomerel 12:9ec78b07c688 25 bool bns, beo;
leomerel 12:9ec78b07c688 26
leomerel 12:9ec78b07c688 27
leomerel 12:9ec78b07c688 28 /*void sequenceLumiere(DigitalOut lumiere) {
leomerel 12:9ec78b07c688 29 lumiere = 1;
leomerel 12:9ec78b07c688 30 Thread::wait(4000);
leomerel 12:9ec78b07c688 31 lumiere = 0;
leomerel 12:9ec78b07c688 32 Thread::wait(500);
leomerel 12:9ec78b07c688 33 lumiere = 1;
leomerel 12:9ec78b07c688 34 Thread::wait(500);
leomerel 12:9ec78b07c688 35 lumiere = 0;
leomerel 12:9ec78b07c688 36 Thread::wait(500);
leomerel 12:9ec78b07c688 37 lumiere = 1;
leomerel 12:9ec78b07c688 38 Thread::wait(500);
leomerel 12:9ec78b07c688 39 lumiere = 0;
leomerel 12:9ec78b07c688 40 Thread::wait(500);
leomerel 12:9ec78b07c688 41 lumiere = 1;
leomerel 12:9ec78b07c688 42 Thread::wait(500);
leomerel 12:9ec78b07c688 43 lumiere = 0;
leomerel 12:9ec78b07c688 44 Thread::wait(500);
leomerel 12:9ec78b07c688 45 lumiere = 1;
leomerel 12:9ec78b07c688 46 Thread::wait(500);
leomerel 12:9ec78b07c688 47 lumiere=0;
leomerel 12:9ec78b07c688 48 Thread::wait(2000);
leomerel 12:9ec78b07c688 49 }*/
leomerel 12:9ec78b07c688 50
leomerel 12:9ec78b07c688 51 void ns() {
leomerel 12:9ec78b07c688 52 while(1)
leomerel 12:9ec78b07c688 53 {
leomerel 12:9ec78b07c688 54 if(!beo){
leomerel 12:9ec78b07c688 55 //Thread::signal_wait(0x1);
leomerel 12:9ec78b07c688 56 dPassage.lock();
leomerel 12:9ec78b07c688 57 nordSudR=0;
leomerel 12:9ec78b07c688 58 nordSudV=1;
leomerel 12:9ec78b07c688 59 Thread::wait(5000);
leomerel 12:9ec78b07c688 60 //while(bns){}
leomerel 12:9ec78b07c688 61 if(!bns){
leomerel 12:9ec78b07c688 62 printf("\r\n YO1 \r\n");
leomerel 12:9ec78b07c688 63 nordSudV=0;
leomerel 12:9ec78b07c688 64 nordSudJ=1;
leomerel 12:9ec78b07c688 65 Thread::wait(2000);
leomerel 12:9ec78b07c688 66 nordSudJ=0;
leomerel 12:9ec78b07c688 67 nordSudR=1;
leomerel 12:9ec78b07c688 68 Thread::wait(1000);
leomerel 12:9ec78b07c688 69 }
leomerel 12:9ec78b07c688 70 dPassage.unlock();
leomerel 12:9ec78b07c688 71 }
leomerel 12:9ec78b07c688 72
emilmont 1:491820ee784d 73 }
emilmont 1:491820ee784d 74 }
leomerel 12:9ec78b07c688 75
leomerel 12:9ec78b07c688 76 void eo() {
leomerel 12:9ec78b07c688 77 while(1)
leomerel 12:9ec78b07c688 78 {
leomerel 12:9ec78b07c688 79 if(!bns){
leomerel 12:9ec78b07c688 80 //Thread::signal_wait(0x1);
leomerel 12:9ec78b07c688 81 dPassage.lock();
leomerel 12:9ec78b07c688 82 estOuestR=0;
leomerel 12:9ec78b07c688 83 estOuestV=1;
leomerel 12:9ec78b07c688 84 Thread::wait(5000);
leomerel 12:9ec78b07c688 85 //while(beo){}
leomerel 12:9ec78b07c688 86 if(!beo){
leomerel 12:9ec78b07c688 87 printf("\r\n YO2 \r\n");
leomerel 12:9ec78b07c688 88 estOuestV=0;
leomerel 12:9ec78b07c688 89 estOuestJ=1;
leomerel 12:9ec78b07c688 90 Thread::wait(2000);
leomerel 12:9ec78b07c688 91 estOuestJ=0;
leomerel 12:9ec78b07c688 92 estOuestR=1;
leomerel 12:9ec78b07c688 93 Thread::wait(1000);
leomerel 12:9ec78b07c688 94 }
leomerel 12:9ec78b07c688 95 dPassage.unlock();
leomerel 12:9ec78b07c688 96 }
emilmont 1:491820ee784d 97 }
emilmont 1:491820ee784d 98 }
leomerel 12:9ec78b07c688 99
leomerel 12:9ec78b07c688 100 void nbVoiture() {
leomerel 12:9ec78b07c688 101 while(1) {
leomerel 12:9ec78b07c688 102 if(boutonPlusNS){
leomerel 12:9ec78b07c688 103 nombreDeVoitureNS++;
leomerel 12:9ec78b07c688 104 }
leomerel 12:9ec78b07c688 105 if(boutonMoinsNS && nombreDeVoitureNS>0){
leomerel 12:9ec78b07c688 106 nombreDeVoitureNS--;
leomerel 12:9ec78b07c688 107 }
leomerel 12:9ec78b07c688 108 if(boutonPlusEO){
leomerel 12:9ec78b07c688 109 nombreDeVoitureEO++;
leomerel 12:9ec78b07c688 110 }
leomerel 12:9ec78b07c688 111 if(boutonMoinsEO && nombreDeVoitureEO>0){
leomerel 12:9ec78b07c688 112 nombreDeVoitureEO--;
leomerel 12:9ec78b07c688 113 }
leomerel 12:9ec78b07c688 114 printf("Nombre de voiture NS : %d \r\n", nombreDeVoitureNS);
leomerel 12:9ec78b07c688 115 printf("Nombre de voiture EO : %d \r\n\n", nombreDeVoitureEO);
leomerel 12:9ec78b07c688 116 printf("bnf: %d, beo: %d \r\n",bns,beo);
leomerel 12:9ec78b07c688 117 }
leomerel 12:9ec78b07c688 118 }
leomerel 12:9ec78b07c688 119
leomerel 12:9ec78b07c688 120 void gestion() {
leomerel 14:53c7ea9124ee 121 int max, min;
leomerel 14:53c7ea9124ee 122 while(1) {
leomerel 14:53c7ea9124ee 123 if((nombreDeVoitureNS>(nombreDeVoitureEO+10))
leomerel 14:53c7ea9124ee 124 || (nombreDeVoitureEO ==0)){
leomerel 12:9ec78b07c688 125 bns=1;
leomerel 12:9ec78b07c688 126 beo=0;
leomerel 12:9ec78b07c688 127 }
leomerel 15:e263f8c52b9f 128 else if((nombreDeVoitureEO>(nombreDeVoitureNS+10))
leomerel 14:53c7ea9124ee 129 || (nombreDeVoitureEO ==0)){
leomerel 12:9ec78b07c688 130 bns=0;
leomerel 12:9ec78b07c688 131 beo=1;
leomerel 12:9ec78b07c688 132 }
leomerel 12:9ec78b07c688 133 else {
leomerel 12:9ec78b07c688 134 bns=0;
leomerel 12:9ec78b07c688 135 beo=0;
leomerel 12:9ec78b07c688 136 t_ns.signal_set(0x1);
leomerel 12:9ec78b07c688 137 t_eo.signal_set(0x1);
leomerel 12:9ec78b07c688 138 }
leomerel 12:9ec78b07c688 139 }
leomerel 12:9ec78b07c688 140 }
leomerel 12:9ec78b07c688 141
leomerel 12:9ec78b07c688 142 int main() {
leomerel 12:9ec78b07c688 143 nordSudR = 1;
leomerel 12:9ec78b07c688 144 estOuestR = 1;
leomerel 12:9ec78b07c688 145 nordSudJ = 0;
leomerel 12:9ec78b07c688 146 estOuestJ = 0;
leomerel 12:9ec78b07c688 147 nordSudV = 0;
leomerel 12:9ec78b07c688 148 estOuestV = 0;
leomerel 12:9ec78b07c688 149 t_eo.start(eo);
leomerel 12:9ec78b07c688 150 t_ns.start(ns);
leomerel 12:9ec78b07c688 151 t_gestion.start(gestion);
leomerel 12:9ec78b07c688 152 t_nbVoiture.start(nbVoiture);
leomerel 12:9ec78b07c688 153 while(1) {
leomerel 12:9ec78b07c688 154
leomerel 12:9ec78b07c688 155 }
leomerel 12:9ec78b07c688 156 }