Gestion du Traffic Adaptatif- Code du mbed coordinateur

Dependencies:   XBeeLib mbed mbed-rtos EthernetInterface

Committer:
pierreblouet
Date:
Sun Nov 11 21:56:42 2018 +0000
Revision:
20:2a94c9200119
Parent:
18:972fb2937e41
Child:
21:5adfcfd83e95
led qui clignote;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pierreblouet 17:0694b399bd0d 1 /**
pierreblouet 17:0694b399bd0d 2 * Copyright (c) 2015 Digi International Inc.,
pierreblouet 17:0694b399bd0d 3 * All rights not expressly granted are reserved.
pierreblouet 17:0694b399bd0d 4 *
pierreblouet 17:0694b399bd0d 5 * This Source Code Form is subject to the terms of the Mozilla Public
pierreblouet 17:0694b399bd0d 6 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
pierreblouet 17:0694b399bd0d 7 * You can obtain one at http://mozilla.org/MPL/2.0/.
pierreblouet 17:0694b399bd0d 8 *
pierreblouet 17:0694b399bd0d 9 * Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343
pierreblouet 17:0694b399bd0d 10 * =======================================================================
pierreblouet 17:0694b399bd0d 11 */
pierreblouet 16:b4d5eb2ee378 12
pierreblouet 17:0694b399bd0d 13 #include "mbed.h"
pierreblouet 17:0694b399bd0d 14 #include "XBeeLib.h"
pierreblouet 17:0694b399bd0d 15 #if defined(ENABLE_LOGGING)
pierreblouet 17:0694b399bd0d 16 #include "DigiLoggerMbedSerial.h"
pierreblouet 17:0694b399bd0d 17 using namespace DigiLog;
pierreblouet 17:0694b399bd0d 18 #endif
leomerel 12:9ec78b07c688 19
leomerel 12:9ec78b07c688 20
pierreblouet 17:0694b399bd0d 21 #define REMOTE_NODE_ADDR64_MSB ((uint32_t)0x0013A200)
pierreblouet 17:0694b399bd0d 22
pierreblouet 17:0694b399bd0d 23 //#error "Replace next define with the LSB of the remote module's 64-bit address (SL parameter)"
pierreblouet 17:0694b399bd0d 24 #define REMOTE_NODE_ADDR64_LSB ((uint32_t)0x40C0E3A1)
pierreblouet 17:0694b399bd0d 25
pierreblouet 17:0694b399bd0d 26 #define REMOTE_NODE_ADDR64 UINT64(REMOTE_NODE_ADDR64_MSB, REMOTE_NODE_ADDR64_LSB)
pierreblouet 17:0694b399bd0d 27
pierreblouet 17:0694b399bd0d 28 using namespace XBeeLib;
pierreblouet 17:0694b399bd0d 29
pierreblouet 17:0694b399bd0d 30 //feux gauche
pierreblouet 17:0694b399bd0d 31 //rouge
pierreblouet 20:2a94c9200119 32 DigitalOut feux_gauche_rouge(p12);
pierreblouet 17:0694b399bd0d 33 //orange
pierreblouet 20:2a94c9200119 34 DigitalOut feux_gauche_orange(p14);
pierreblouet 17:0694b399bd0d 35 //vert
pierreblouet 20:2a94c9200119 36 DigitalOut feux_gauche_vert(p16);
leomerel 12:9ec78b07c688 37
pierreblouet 17:0694b399bd0d 38 //liste des message a envoyer rouge et vert seulement pour le coordinateur
pierreblouet 17:0694b399bd0d 39 //////////////////////////
pierreblouet 17:0694b399bd0d 40 /////
pierreblouet 18:972fb2937e41 41 char rouge[] = "r";
pierreblouet 18:972fb2937e41 42 char vert[] = "v";
pierreblouet 17:0694b399bd0d 43 /////
pierreblouet 17:0694b399bd0d 44 uint8_t ok = 0x02;
pierreblouet 17:0694b399bd0d 45 //////////////////////////
pierreblouet 17:0694b399bd0d 46
pierreblouet 17:0694b399bd0d 47
pierreblouet 17:0694b399bd0d 48 Serial *log_serial;
pierreblouet 17:0694b399bd0d 49
pierreblouet 17:0694b399bd0d 50 /** Callback function, invoked at packet reception */
pierreblouet 17:0694b399bd0d 51 static void receive_cb(const RemoteXBeeZB& remote, bool broadcast, const uint8_t *const data, uint16_t len)
pierreblouet 17:0694b399bd0d 52 {
pierreblouet 17:0694b399bd0d 53 const uint64_t remote_addr64 = remote.get_addr64();
pierreblouet 17:0694b399bd0d 54
pierreblouet 17:0694b399bd0d 55 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 56
pierreblouet 20:2a94c9200119 57 /*for (int i = 0; i < len; i++)
pierreblouet 20:2a94c9200119 58 log_serial->printf("%02x ", data[i]);*/
pierreblouet 20:2a94c9200119 59 if (data[0]==0x76){
pierreblouet 20:2a94c9200119 60 feux_gauche_rouge = 1;
pierreblouet 20:2a94c9200119 61 feux_gauche_vert = 0;
pierreblouet 20:2a94c9200119 62 }
pierreblouet 20:2a94c9200119 63 if (data[0]==0x72){
pierreblouet 18:972fb2937e41 64 feux_gauche_rouge = 0;
pierreblouet 20:2a94c9200119 65 feux_gauche_vert = 1;
pierreblouet 18:972fb2937e41 66 }
pierreblouet 17:0694b399bd0d 67
pierreblouet 17:0694b399bd0d 68 log_serial->printf("\r\n");
emilmont 1:491820ee784d 69 }
leomerel 12:9ec78b07c688 70
pierreblouet 17:0694b399bd0d 71
pierreblouet 18:972fb2937e41 72 static void send_explicit_data_to_remote_node(XBeeZB& xbee, const RemoteXBeeZB& RemoteDevice,int message){
pierreblouet 18:972fb2937e41 73
pierreblouet 18:972fb2937e41 74 //const uint8_t data_len = strlen(data);
pierreblouet 17:0694b399bd0d 75 const uint8_t dstEP = 0xE8;
pierreblouet 17:0694b399bd0d 76 const uint8_t srcEP = 0xE8;
pierreblouet 17:0694b399bd0d 77 const uint16_t clusterID = 0x0011;
pierreblouet 17:0694b399bd0d 78 const uint16_t profileID = 0xC105;
pierreblouet 17:0694b399bd0d 79
pierreblouet 18:972fb2937e41 80 char data1[]="r";
pierreblouet 18:972fb2937e41 81 char data2[]="v";
pierreblouet 18:972fb2937e41 82 char data3[]="e";
pierreblouet 18:972fb2937e41 83 if (message ==0){
pierreblouet 18:972fb2937e41 84 const TxStatus txStatus = xbee.send_data(RemoteDevice, dstEP, srcEP, clusterID, profileID, (const uint8_t *)data1, strlen(data1));
pierreblouet 18:972fb2937e41 85 if (txStatus == TxStatusSuccess)
pierreblouet 18:972fb2937e41 86 log_serial->printf("send_explicit_data_to_remote_node OK\r\n");
pierreblouet 18:972fb2937e41 87 else
pierreblouet 18:972fb2937e41 88 log_serial->printf("send_explicit_data_to_remote_node failed with %d\r\n", (int) txStatus);
pierreblouet 18:972fb2937e41 89 }
pierreblouet 18:972fb2937e41 90 else if (message ==1){
pierreblouet 18:972fb2937e41 91 const TxStatus txStatus = xbee.send_data(RemoteDevice, dstEP, srcEP, clusterID, profileID, (const uint8_t *)data2, strlen(data2));
pierreblouet 18:972fb2937e41 92 if (txStatus == TxStatusSuccess)
pierreblouet 18:972fb2937e41 93 log_serial->printf("send_explicit_data_to_remote_node OK\r\n");
pierreblouet 18:972fb2937e41 94 else
pierreblouet 18:972fb2937e41 95 log_serial->printf("send_explicit_data_to_remote_node failed with %d\r\n", (int) txStatus);
pierreblouet 18:972fb2937e41 96 }
pierreblouet 18:972fb2937e41 97 else {
pierreblouet 18:972fb2937e41 98 const TxStatus txStatus = xbee.send_data(RemoteDevice, dstEP, srcEP, clusterID, profileID, (const uint8_t *)data3, strlen(data3));
pierreblouet 18:972fb2937e41 99 if (txStatus == TxStatusSuccess)
pierreblouet 18:972fb2937e41 100 log_serial->printf("send_explicit_data_to_remote_node OK\r\n");
pierreblouet 18:972fb2937e41 101 else
pierreblouet 18:972fb2937e41 102 log_serial->printf("send_explicit_data_to_remote_node failed with %d\r\n", (int) txStatus);
pierreblouet 18:972fb2937e41 103 }
pierreblouet 18:972fb2937e41 104
pierreblouet 18:972fb2937e41 105
emilmont 1:491820ee784d 106 }
leomerel 12:9ec78b07c688 107
pierreblouet 17:0694b399bd0d 108
pierreblouet 17:0694b399bd0d 109 int main()
pierreblouet 17:0694b399bd0d 110 {
pierreblouet 17:0694b399bd0d 111 log_serial = new Serial(DEBUG_TX, DEBUG_RX);
pierreblouet 17:0694b399bd0d 112 log_serial->baud(9600);
pierreblouet 17:0694b399bd0d 113 log_serial->printf("Sample application to demo how to receive unicast and broadcast data with the XBeeZB\r\n\r\n");
pierreblouet 17:0694b399bd0d 114 log_serial->printf(XB_LIB_BANNER);
pierreblouet 17:0694b399bd0d 115
pierreblouet 17:0694b399bd0d 116
pierreblouet 17:0694b399bd0d 117
pierreblouet 17:0694b399bd0d 118 #if defined(ENABLE_LOGGING)
pierreblouet 17:0694b399bd0d 119 new DigiLoggerMbedSerial(log_serial, LogLevelInfo);
pierreblouet 17:0694b399bd0d 120 #endif
pierreblouet 17:0694b399bd0d 121
pierreblouet 17:0694b399bd0d 122 XBeeZB xbee = XBeeZB(RADIO_TX, RADIO_RX, RADIO_RESET, NC, NC, 9600);
pierreblouet 17:0694b399bd0d 123
pierreblouet 17:0694b399bd0d 124 /* Register callbacks */
pierreblouet 17:0694b399bd0d 125 xbee.register_receive_cb(&receive_cb);
pierreblouet 17:0694b399bd0d 126
pierreblouet 17:0694b399bd0d 127 RadioStatus const radioStatus = xbee.init();
pierreblouet 17:0694b399bd0d 128 MBED_ASSERT(radioStatus == Success);
leomerel 12:9ec78b07c688 129
pierreblouet 17:0694b399bd0d 130 /* Wait until the device has joined the network */
pierreblouet 17:0694b399bd0d 131 log_serial->printf("Waiting for device to join the network: ");
pierreblouet 17:0694b399bd0d 132 while (!xbee.is_joined()) {
pierreblouet 17:0694b399bd0d 133 wait_ms(1000);
pierreblouet 17:0694b399bd0d 134 log_serial->printf(".");
leomerel 12:9ec78b07c688 135 }
pierreblouet 17:0694b399bd0d 136 log_serial->printf("OK\r\n");
leomerel 12:9ec78b07c688 137
pierreblouet 17:0694b399bd0d 138 int i =0;
pierreblouet 17:0694b399bd0d 139 const RemoteXBeeZB remoteDevice = RemoteXBeeZB(REMOTE_NODE_ADDR64);
pierreblouet 17:0694b399bd0d 140 while (true) {
pierreblouet 18:972fb2937e41 141
pierreblouet 17:0694b399bd0d 142 uint32_t receive_value = xbee.process_rx_frames();
pierreblouet 18:972fb2937e41 143
pierreblouet 17:0694b399bd0d 144 log_serial->printf("%d");
pierreblouet 17:0694b399bd0d 145 wait_ms(100);
pierreblouet 17:0694b399bd0d 146 log_serial->printf(".");
pierreblouet 17:0694b399bd0d 147
leomerel 12:9ec78b07c688 148
pierreblouet 17:0694b399bd0d 149 //partie gestion des feux a mettre sur le coordinateur
pierreblouet 17:0694b399bd0d 150 /////////////////////////////////////////////
pierreblouet 18:972fb2937e41 151 // if(i==10){
pierreblouet 18:972fb2937e41 152 // send_explicit_data_to_remote_node(xbee, remoteDevice,1);
pierreblouet 18:972fb2937e41 153 // }
pierreblouet 18:972fb2937e41 154 // if(i==20){
pierreblouet 18:972fb2937e41 155 // send_explicit_data_to_remote_node(xbee, remoteDevice,0);
pierreblouet 18:972fb2937e41 156 // i=0;
pierreblouet 18:972fb2937e41 157 //}
pierreblouet 17:0694b399bd0d 158 ////////////////////////////////////////////
leomerel 12:9ec78b07c688 159 }
pierreblouet 17:0694b399bd0d 160
pierreblouet 17:0694b399bd0d 161 // delete(log_serial);
pierreblouet 17:0694b399bd0d 162 }