Gestion du Traffic Adaptatif- Code du mbed coordinateur

Dependencies:   XBeeLib mbed mbed-rtos EthernetInterface

Revision:
27:0085fca436e1
Parent:
26:e9fc7e552c88
Child:
28:50d89e4255da
--- a/main.cpp	Mon Dec 03 20:28:23 2018 +0000
+++ b/main.cpp	Mon Dec 03 22:42:37 2018 +0000
@@ -43,6 +43,8 @@
 char set_rouge[]="r"; // demande a un recepteur de passer au rouge
 char set_vert[]="v"; // demande a un recepteur de passer au vert
 
+int whosred=0;
+
 
 static void send_explicit_data_to_remote_node(XBeeZB& xbee, const RemoteXBeeZB& RemoteDevice,const char * data)
 {
@@ -88,11 +90,13 @@
         if ( UINT64_LO32(remote_addr64) == UINT64_LO32(REMOTE_NODE_ADDR64_LSB1)){
             log_serial->printf("r2 passe au vert");
             send_explicit_data_to_remote_node(xbee, remoteDevice2,set_vert); 
+            whosred = 1;
         }
         // demande au r1 de passer au vert
         else if ( UINT64_LO32(remote_addr64) == UINT64_LO32(REMOTE_NODE_ADDR64_LSB2)){
             log_serial->printf("r1 passe au vert");
             send_explicit_data_to_remote_node(xbee, remoteDevice1,set_vert);
+            whosred = 2;
         }
     }
     log_serial->printf("\r\n");
@@ -126,7 +130,7 @@
 
 void gestion()
 {
-    int i=0;
+    //int i=0;
     bool stay1=0;
     bool stay2=0;
     while(1)
@@ -137,6 +141,7 @@
                 stay2=0;
                 stay1=1;
                 send_explicit_data_to_remote_node(xbee, remoteDevice1,set_rouge);
+                Thread::wait(100);
             }
         }
         else if ((voituresFeu2==0) && (voituresFeu1!=0)){
@@ -144,20 +149,19 @@
                 stay1=0;
                 stay2=1;
                 send_explicit_data_to_remote_node(xbee, remoteDevice2,set_rouge);
+                Thread::wait(100);
             }
         }
         else{
             stay1=0;
             stay2=0;
-            Thread::wait(4000);
-            if(i==0){
+            if(whosred==1){
                 send_explicit_data_to_remote_node(xbee, remoteDevice2,set_rouge);
-                i=1;
             }
-            else if(i==1){
+            else if(whosred==2){
                 send_explicit_data_to_remote_node(xbee, remoteDevice1,set_rouge);
-                i=0;
             }
+            Thread::wait(4000);
         }
     }
 }