Gestion du Traffic Adaptatif- Code du mbed coordinateur

Dependencies:   XBeeLib mbed mbed-rtos EthernetInterface

Revision:
26:e9fc7e552c88
Parent:
25:fdb28df21d44
Child:
27:0085fca436e1
--- a/main.cpp	Sun Dec 02 19:56:29 2018 +0000
+++ b/main.cpp	Mon Dec 03 20:28:23 2018 +0000
@@ -7,46 +7,41 @@
 using namespace DigiLog;
 #endif
 
+/*
+TO DO:
+ - temps pour que les voitures traversent le chantier
+ - améliorer la partie sur les compteurs de voitures
+*/
 
+//Adressage
 #define REMOTE_NODE_ADDR64_MSB  ((uint32_t)0x0013A200)
-
-//#error "Replace next define with the LSB of the remote module's 64-bit address (SL parameter)"
 #define REMOTE_NODE_ADDR64_LSB1  ((uint32_t)0x40C0E3A1) // adresse du recepteur 1
 #define REMOTE_NODE_ADDR64_LSB2  ((uint32_t)0x4086DA0E) // adresse du recepteur 2
-
 #define REMOTE_NODE_ADDR64_1      UINT64(REMOTE_NODE_ADDR64_MSB, REMOTE_NODE_ADDR64_LSB1)
 #define REMOTE_NODE_ADDR64_2      UINT64(REMOTE_NODE_ADDR64_MSB, REMOTE_NODE_ADDR64_LSB2)
 
 using namespace XBeeLib;
 
-//feux gauche
-    //rouge
-DigitalOut feu_rouge(p12);
-    //orange
-DigitalOut feu_orange(p14);
-    //vert
-DigitalOut feu_vert(p16);
-
-DigitalOut led1(LED2);
-
-char data1[]="r"; // demande a un recepteur de passer au rouge
-char data2[]="v"; // demande a un recepteur de passer au vert 
-char data3[]="e"; // erreur
-
 //Nombre de voitures au feu
 int voituresFeu1 = 0;
 int voituresFeu2 = 0;
 DigitalIn boutonPlus(p24);
 DigitalIn boutonMoins(p23);
 Thread t_nbVoiture;
+Thread t_gestion;
+DigitalOut led1(LED2);
 
-Thread t_gestion;
+//Gestion
+int temps = 5; //durée (en s) pour qu'une voiture traverse le chantier
 Timer timer;
 
+//Communication
 Serial *log_serial;
 XBeeZB xbee = XBeeZB(RADIO_TX, RADIO_RX, RADIO_RESET, NC, NC, 9600);
 const RemoteXBeeZB remoteDevice1 = RemoteXBeeZB(REMOTE_NODE_ADDR64_1);
 const RemoteXBeeZB remoteDevice2 = RemoteXBeeZB(REMOTE_NODE_ADDR64_2);
+char set_rouge[]="r"; // demande a un recepteur de passer au rouge
+char set_vert[]="v"; // demande a un recepteur de passer au vert
 
 
 static void send_explicit_data_to_remote_node(XBeeZB& xbee, const RemoteXBeeZB& RemoteDevice,const char * data)
@@ -62,7 +57,7 @@
 /** Callback function, invoked at packet reception */
 static void receive_cb(const RemoteXBeeZB& remote, bool broadcast, const uint8_t *const data, uint16_t len)
 {
-    const uint64_t remote_addr64 = remote.get_addr64();
+    const uint64_t remote_addr64 = remote.get_addr64(); //adresse de l'expéditeur
         
     if (data[0]==0x6D){
         // baisse le compteur de voiture au feu 1
@@ -92,12 +87,12 @@
         // demande au r2 de passer au vert
         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,data2); 
+            send_explicit_data_to_remote_node(xbee, remoteDevice2,set_vert); 
         }
         // 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,data2);
+            send_explicit_data_to_remote_node(xbee, remoteDevice1,set_vert);
         }
     }
     log_serial->printf("\r\n");
@@ -141,14 +136,14 @@
             if(stay1==0){
                 stay2=0;
                 stay1=1;
-                send_explicit_data_to_remote_node(xbee, remoteDevice1,data1);
+                send_explicit_data_to_remote_node(xbee, remoteDevice1,set_rouge);
             }
         }
         else if ((voituresFeu2==0) && (voituresFeu1!=0)){
             if(stay2==0){
                 stay1=0;
                 stay2=1;
-                send_explicit_data_to_remote_node(xbee, remoteDevice2,data1);
+                send_explicit_data_to_remote_node(xbee, remoteDevice2,set_rouge);
             }
         }
         else{
@@ -156,11 +151,11 @@
             stay2=0;
             Thread::wait(4000);
             if(i==0){
-                send_explicit_data_to_remote_node(xbee, remoteDevice2,data1);
+                send_explicit_data_to_remote_node(xbee, remoteDevice2,set_rouge);
                 i=1;
             }
             else if(i==1){
-                send_explicit_data_to_remote_node(xbee, remoteDevice1,data1);
+                send_explicit_data_to_remote_node(xbee, remoteDevice1,set_rouge);
                 i=0;
             }
         }