Gestion du Trafic Adaptatif - Code des mbed récepteurs

Dependencies:   XBeeLib mbed mbed-rtos

Committer:
leomerel
Date:
Sun Nov 18 16:42:35 2018 +0000
Revision:
20:4e4d869ada85
Parent:
19:9f6297cdd07a
Child:
21:2ad11875542c
test;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
leomerel 20:4e4d869ada85 1 //YOYOYO
pierreblouet 16:b4d5eb2ee378 2
pierreblouet 17:0694b399bd0d 3 #include "mbed.h"
pierreblouet 17:0694b399bd0d 4 #include "XBeeLib.h"
pierreblouet 17:0694b399bd0d 5 #if defined(ENABLE_LOGGING)
pierreblouet 17:0694b399bd0d 6 #include "DigiLoggerMbedSerial.h"
pierreblouet 17:0694b399bd0d 7 using namespace DigiLog;
pierreblouet 17:0694b399bd0d 8 #endif
leomerel 12:9ec78b07c688 9
leomerel 12:9ec78b07c688 10
pierreblouet 17:0694b399bd0d 11 #define REMOTE_NODE_ADDR64_MSB ((uint32_t)0x0013A200)
pierreblouet 17:0694b399bd0d 12
pierreblouet 17:0694b399bd0d 13 //#error "Replace next define with the LSB of the remote module's 64-bit address (SL parameter)"
pierreblouet 18:a302b82c4357 14 #define REMOTE_NODE_ADDR64_LSB ((uint32_t)0x40E779AF)
pierreblouet 17:0694b399bd0d 15
pierreblouet 17:0694b399bd0d 16 #define REMOTE_NODE_ADDR64 UINT64(REMOTE_NODE_ADDR64_MSB, REMOTE_NODE_ADDR64_LSB)
pierreblouet 17:0694b399bd0d 17
pierreblouet 17:0694b399bd0d 18 using namespace XBeeLib;
pierreblouet 17:0694b399bd0d 19
pierreblouet 17:0694b399bd0d 20 //feux gauche
pierreblouet 17:0694b399bd0d 21 //rouge
pierreblouet 18:a302b82c4357 22 DigitalOut feux_gauche_rouge(p30);
pierreblouet 17:0694b399bd0d 23 //orange
pierreblouet 18:a302b82c4357 24 DigitalOut feux_gauche_orange(p28);
pierreblouet 17:0694b399bd0d 25 //vert
pierreblouet 18:a302b82c4357 26 DigitalOut feux_gauche_vert(p26);
leomerel 12:9ec78b07c688 27
pierreblouet 17:0694b399bd0d 28 //liste des message a envoyer rouge et vert seulement pour le coordinateur
pierreblouet 17:0694b399bd0d 29 //////////////////////////
pierreblouet 17:0694b399bd0d 30 /////
pierreblouet 18:a302b82c4357 31 char rouge[] = "r";
pierreblouet 18:a302b82c4357 32 char vert[] = "v";
pierreblouet 17:0694b399bd0d 33 /////
pierreblouet 17:0694b399bd0d 34 uint8_t ok = 0x02;
pierreblouet 17:0694b399bd0d 35 //////////////////////////
pierreblouet 17:0694b399bd0d 36
pierreblouet 17:0694b399bd0d 37
pierreblouet 17:0694b399bd0d 38 Serial *log_serial;
pierreblouet 17:0694b399bd0d 39
pierreblouet 17:0694b399bd0d 40 /** Callback function, invoked at packet reception */
pierreblouet 17:0694b399bd0d 41 static void receive_cb(const RemoteXBeeZB& remote, bool broadcast, const uint8_t *const data, uint16_t len)
pierreblouet 17:0694b399bd0d 42 {
pierreblouet 17:0694b399bd0d 43 const uint64_t remote_addr64 = remote.get_addr64();
pierreblouet 17:0694b399bd0d 44
pierreblouet 17:0694b399bd0d 45 log_serial->printf("\r\nGot a %s RX packet [%08x:%08x|%04x], len %d\r\nData: ", broadcast ? "BROADCAST" : "UNICAST", UINT64_HI32(remote_addr64), UINT64_LO32(remote_addr64), remote.get_addr16(), len);
pierreblouet 17:0694b399bd0d 46
pierreblouet 17:0694b399bd0d 47 for (int i = 0; i < len; i++)
pierreblouet 17:0694b399bd0d 48 log_serial->printf("%02x ", data[i]);
pierreblouet 18:a302b82c4357 49
pierreblouet 17:0694b399bd0d 50 log_serial->printf("\r\n");
emilmont 1:491820ee784d 51 }
leomerel 12:9ec78b07c688 52
pierreblouet 17:0694b399bd0d 53
pierreblouet 18:a302b82c4357 54 static void send_explicit_data_to_remote_node(XBeeZB& xbee, const RemoteXBeeZB& RemoteDevice,int message){
pierreblouet 18:a302b82c4357 55
pierreblouet 18:a302b82c4357 56 //const uint8_t data_len = strlen(data);
pierreblouet 17:0694b399bd0d 57 const uint8_t dstEP = 0xE8;
pierreblouet 17:0694b399bd0d 58 const uint8_t srcEP = 0xE8;
pierreblouet 17:0694b399bd0d 59 const uint16_t clusterID = 0x0011;
pierreblouet 17:0694b399bd0d 60 const uint16_t profileID = 0xC105;
pierreblouet 17:0694b399bd0d 61
pierreblouet 18:a302b82c4357 62 char data1[]="r";
pierreblouet 18:a302b82c4357 63 char data2[]="v";
pierreblouet 18:a302b82c4357 64 char data3[]="e";
pierreblouet 18:a302b82c4357 65 if (message ==0){
pierreblouet 18:a302b82c4357 66 const TxStatus txStatus = xbee.send_data(RemoteDevice, dstEP, srcEP, clusterID, profileID, (const uint8_t *)data1, strlen(data1));
pierreblouet 18:a302b82c4357 67 if (txStatus == TxStatusSuccess)
pierreblouet 18:a302b82c4357 68 log_serial->printf("send_explicit_data_to_remote_node OK\r\n");
pierreblouet 18:a302b82c4357 69 else
pierreblouet 18:a302b82c4357 70 log_serial->printf("send_explicit_data_to_remote_node failed with %d\r\n", (int) txStatus);
pierreblouet 18:a302b82c4357 71 }
pierreblouet 18:a302b82c4357 72 else if (message ==1){
pierreblouet 18:a302b82c4357 73 const TxStatus txStatus = xbee.send_data(RemoteDevice, dstEP, srcEP, clusterID, profileID, (const uint8_t *)data2, strlen(data2));
pierreblouet 18:a302b82c4357 74 if (txStatus == TxStatusSuccess)
pierreblouet 18:a302b82c4357 75 log_serial->printf("send_explicit_data_to_remote_node OK\r\n");
pierreblouet 18:a302b82c4357 76 else
pierreblouet 18:a302b82c4357 77 log_serial->printf("send_explicit_data_to_remote_node failed with %d\r\n", (int) txStatus);
pierreblouet 18:a302b82c4357 78 }
pierreblouet 18:a302b82c4357 79 else {
pierreblouet 18:a302b82c4357 80 const TxStatus txStatus = xbee.send_data(RemoteDevice, dstEP, srcEP, clusterID, profileID, (const uint8_t *)data3, strlen(data3));
pierreblouet 18:a302b82c4357 81 if (txStatus == TxStatusSuccess)
pierreblouet 18:a302b82c4357 82 log_serial->printf("send_explicit_data_to_remote_node OK\r\n");
pierreblouet 18:a302b82c4357 83 else
pierreblouet 18:a302b82c4357 84 log_serial->printf("send_explicit_data_to_remote_node failed with %d\r\n", (int) txStatus);
pierreblouet 18:a302b82c4357 85 }
pierreblouet 18:a302b82c4357 86
pierreblouet 18:a302b82c4357 87
emilmont 1:491820ee784d 88 }
leomerel 12:9ec78b07c688 89
pierreblouet 17:0694b399bd0d 90
pierreblouet 17:0694b399bd0d 91 int main()
pierreblouet 17:0694b399bd0d 92 {
pierreblouet 17:0694b399bd0d 93 log_serial = new Serial(DEBUG_TX, DEBUG_RX);
pierreblouet 17:0694b399bd0d 94 log_serial->baud(9600);
pierreblouet 17:0694b399bd0d 95 log_serial->printf("Sample application to demo how to receive unicast and broadcast data with the XBeeZB\r\n\r\n");
pierreblouet 17:0694b399bd0d 96 log_serial->printf(XB_LIB_BANNER);
pierreblouet 17:0694b399bd0d 97
pierreblouet 17:0694b399bd0d 98
pierreblouet 17:0694b399bd0d 99
pierreblouet 17:0694b399bd0d 100 #if defined(ENABLE_LOGGING)
pierreblouet 17:0694b399bd0d 101 new DigiLoggerMbedSerial(log_serial, LogLevelInfo);
pierreblouet 17:0694b399bd0d 102 #endif
pierreblouet 17:0694b399bd0d 103
pierreblouet 17:0694b399bd0d 104 XBeeZB xbee = XBeeZB(RADIO_TX, RADIO_RX, RADIO_RESET, NC, NC, 9600);
pierreblouet 17:0694b399bd0d 105
pierreblouet 17:0694b399bd0d 106 /* Register callbacks */
pierreblouet 17:0694b399bd0d 107 xbee.register_receive_cb(&receive_cb);
pierreblouet 17:0694b399bd0d 108
pierreblouet 17:0694b399bd0d 109 RadioStatus const radioStatus = xbee.init();
pierreblouet 17:0694b399bd0d 110 MBED_ASSERT(radioStatus == Success);
leomerel 12:9ec78b07c688 111
pierreblouet 17:0694b399bd0d 112 /* Wait until the device has joined the network */
pierreblouet 17:0694b399bd0d 113 log_serial->printf("Waiting for device to join the network: ");
pierreblouet 17:0694b399bd0d 114 while (!xbee.is_joined()) {
pierreblouet 17:0694b399bd0d 115 wait_ms(1000);
pierreblouet 17:0694b399bd0d 116 log_serial->printf(".");
leomerel 12:9ec78b07c688 117 }
pierreblouet 17:0694b399bd0d 118 log_serial->printf("OK\r\n");
leomerel 12:9ec78b07c688 119
pierreblouet 17:0694b399bd0d 120 int i =0;
pierreblouet 17:0694b399bd0d 121 const RemoteXBeeZB remoteDevice = RemoteXBeeZB(REMOTE_NODE_ADDR64);
pierreblouet 17:0694b399bd0d 122 while (true) {
pierreblouet 17:0694b399bd0d 123 i++;
pierreblouet 17:0694b399bd0d 124 uint32_t receive_value = xbee.process_rx_frames();
pierreblouet 17:0694b399bd0d 125 log_serial->printf("%d");
pierreblouet 17:0694b399bd0d 126 wait_ms(100);
pierreblouet 17:0694b399bd0d 127 log_serial->printf(".");
pierreblouet 17:0694b399bd0d 128
leomerel 12:9ec78b07c688 129
pierreblouet 17:0694b399bd0d 130 //partie gestion des feux a mettre sur le coordinateur
pierreblouet 17:0694b399bd0d 131 /////////////////////////////////////////////
pierreblouet 17:0694b399bd0d 132 if(i==10){
pierreblouet 18:a302b82c4357 133 send_explicit_data_to_remote_node(xbee, remoteDevice,1);
pierreblouet 19:9f6297cdd07a 134 feux_gauche_rouge = 0;
pierreblouet 19:9f6297cdd07a 135 feux_gauche_vert = 1;
pierreblouet 17:0694b399bd0d 136 }
pierreblouet 17:0694b399bd0d 137 if(i==20){
pierreblouet 18:a302b82c4357 138 send_explicit_data_to_remote_node(xbee, remoteDevice,0);
pierreblouet 19:9f6297cdd07a 139 feux_gauche_rouge = 1;
pierreblouet 19:9f6297cdd07a 140 feux_gauche_vert = 0;
pierreblouet 17:0694b399bd0d 141 i=0;
pierreblouet 17:0694b399bd0d 142 }
pierreblouet 17:0694b399bd0d 143 ////////////////////////////////////////////
leomerel 12:9ec78b07c688 144 }
pierreblouet 17:0694b399bd0d 145
pierreblouet 17:0694b399bd0d 146 // delete(log_serial);
pierreblouet 17:0694b399bd0d 147 }