Gestion du Traffic Adaptatif- Code du mbed coordinateur

Dependencies:   XBeeLib mbed mbed-rtos EthernetInterface

Committer:
pierreblouet
Date:
Sun Nov 11 21:15:33 2018 +0000
Revision:
18:972fb2937e41
Parent:
17:0694b399bd0d
Child:
20:2a94c9200119
on recoit 76 et 72 ;

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 18:972fb2937e41 32 DigitalOut feux_gauche_rouge(p30);
pierreblouet 17:0694b399bd0d 33 //orange
pierreblouet 18:972fb2937e41 34 DigitalOut feux_gauche_orange(p28);
pierreblouet 17:0694b399bd0d 35 //vert
pierreblouet 18:972fb2937e41 36 DigitalOut feux_gauche_vert(p26);
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 17:0694b399bd0d 57 for (int i = 0; i < len; i++)
pierreblouet 17:0694b399bd0d 58 log_serial->printf("%02x ", data[i]);
pierreblouet 18:972fb2937e41 59 /* if (data[0]==0x76){
pierreblouet 18:972fb2937e41 60 feux_gauche_rouge = 0;
pierreblouet 18:972fb2937e41 61 }
pierreblouet 18:972fb2937e41 62 if (data[0}==0x72){
pierreblouet 18:972fb2937e41 63 feux_gauche_vert = 1;
pierreblouet 18:972fb2937e41 64 }*/
pierreblouet 17:0694b399bd0d 65
pierreblouet 17:0694b399bd0d 66 log_serial->printf("\r\n");
emilmont 1:491820ee784d 67 }
leomerel 12:9ec78b07c688 68
pierreblouet 17:0694b399bd0d 69
pierreblouet 18:972fb2937e41 70 static void send_explicit_data_to_remote_node(XBeeZB& xbee, const RemoteXBeeZB& RemoteDevice,int message){
pierreblouet 18:972fb2937e41 71
pierreblouet 18:972fb2937e41 72 //const uint8_t data_len = strlen(data);
pierreblouet 17:0694b399bd0d 73 const uint8_t dstEP = 0xE8;
pierreblouet 17:0694b399bd0d 74 const uint8_t srcEP = 0xE8;
pierreblouet 17:0694b399bd0d 75 const uint16_t clusterID = 0x0011;
pierreblouet 17:0694b399bd0d 76 const uint16_t profileID = 0xC105;
pierreblouet 17:0694b399bd0d 77
pierreblouet 18:972fb2937e41 78 char data1[]="r";
pierreblouet 18:972fb2937e41 79 char data2[]="v";
pierreblouet 18:972fb2937e41 80 char data3[]="e";
pierreblouet 18:972fb2937e41 81 if (message ==0){
pierreblouet 18:972fb2937e41 82 const TxStatus txStatus = xbee.send_data(RemoteDevice, dstEP, srcEP, clusterID, profileID, (const uint8_t *)data1, strlen(data1));
pierreblouet 18:972fb2937e41 83 if (txStatus == TxStatusSuccess)
pierreblouet 18:972fb2937e41 84 log_serial->printf("send_explicit_data_to_remote_node OK\r\n");
pierreblouet 18:972fb2937e41 85 else
pierreblouet 18:972fb2937e41 86 log_serial->printf("send_explicit_data_to_remote_node failed with %d\r\n", (int) txStatus);
pierreblouet 18:972fb2937e41 87 }
pierreblouet 18:972fb2937e41 88 else if (message ==1){
pierreblouet 18:972fb2937e41 89 const TxStatus txStatus = xbee.send_data(RemoteDevice, dstEP, srcEP, clusterID, profileID, (const uint8_t *)data2, strlen(data2));
pierreblouet 18:972fb2937e41 90 if (txStatus == TxStatusSuccess)
pierreblouet 18:972fb2937e41 91 log_serial->printf("send_explicit_data_to_remote_node OK\r\n");
pierreblouet 18:972fb2937e41 92 else
pierreblouet 18:972fb2937e41 93 log_serial->printf("send_explicit_data_to_remote_node failed with %d\r\n", (int) txStatus);
pierreblouet 18:972fb2937e41 94 }
pierreblouet 18:972fb2937e41 95 else {
pierreblouet 18:972fb2937e41 96 const TxStatus txStatus = xbee.send_data(RemoteDevice, dstEP, srcEP, clusterID, profileID, (const uint8_t *)data3, strlen(data3));
pierreblouet 18:972fb2937e41 97 if (txStatus == TxStatusSuccess)
pierreblouet 18:972fb2937e41 98 log_serial->printf("send_explicit_data_to_remote_node OK\r\n");
pierreblouet 18:972fb2937e41 99 else
pierreblouet 18:972fb2937e41 100 log_serial->printf("send_explicit_data_to_remote_node failed with %d\r\n", (int) txStatus);
pierreblouet 18:972fb2937e41 101 }
pierreblouet 18:972fb2937e41 102
pierreblouet 18:972fb2937e41 103
emilmont 1:491820ee784d 104 }
leomerel 12:9ec78b07c688 105
pierreblouet 17:0694b399bd0d 106
pierreblouet 17:0694b399bd0d 107 int main()
pierreblouet 17:0694b399bd0d 108 {
pierreblouet 17:0694b399bd0d 109 log_serial = new Serial(DEBUG_TX, DEBUG_RX);
pierreblouet 17:0694b399bd0d 110 log_serial->baud(9600);
pierreblouet 17:0694b399bd0d 111 log_serial->printf("Sample application to demo how to receive unicast and broadcast data with the XBeeZB\r\n\r\n");
pierreblouet 17:0694b399bd0d 112 log_serial->printf(XB_LIB_BANNER);
pierreblouet 17:0694b399bd0d 113
pierreblouet 17:0694b399bd0d 114
pierreblouet 17:0694b399bd0d 115
pierreblouet 17:0694b399bd0d 116 #if defined(ENABLE_LOGGING)
pierreblouet 17:0694b399bd0d 117 new DigiLoggerMbedSerial(log_serial, LogLevelInfo);
pierreblouet 17:0694b399bd0d 118 #endif
pierreblouet 17:0694b399bd0d 119
pierreblouet 17:0694b399bd0d 120 XBeeZB xbee = XBeeZB(RADIO_TX, RADIO_RX, RADIO_RESET, NC, NC, 9600);
pierreblouet 17:0694b399bd0d 121
pierreblouet 17:0694b399bd0d 122 /* Register callbacks */
pierreblouet 17:0694b399bd0d 123 xbee.register_receive_cb(&receive_cb);
pierreblouet 17:0694b399bd0d 124
pierreblouet 17:0694b399bd0d 125 RadioStatus const radioStatus = xbee.init();
pierreblouet 17:0694b399bd0d 126 MBED_ASSERT(radioStatus == Success);
leomerel 12:9ec78b07c688 127
pierreblouet 17:0694b399bd0d 128 /* Wait until the device has joined the network */
pierreblouet 17:0694b399bd0d 129 log_serial->printf("Waiting for device to join the network: ");
pierreblouet 17:0694b399bd0d 130 while (!xbee.is_joined()) {
pierreblouet 17:0694b399bd0d 131 wait_ms(1000);
pierreblouet 17:0694b399bd0d 132 log_serial->printf(".");
leomerel 12:9ec78b07c688 133 }
pierreblouet 17:0694b399bd0d 134 log_serial->printf("OK\r\n");
leomerel 12:9ec78b07c688 135
pierreblouet 17:0694b399bd0d 136 int i =0;
pierreblouet 17:0694b399bd0d 137 const RemoteXBeeZB remoteDevice = RemoteXBeeZB(REMOTE_NODE_ADDR64);
pierreblouet 17:0694b399bd0d 138 while (true) {
pierreblouet 18:972fb2937e41 139
pierreblouet 17:0694b399bd0d 140 uint32_t receive_value = xbee.process_rx_frames();
pierreblouet 18:972fb2937e41 141
pierreblouet 17:0694b399bd0d 142 log_serial->printf("%d");
pierreblouet 17:0694b399bd0d 143 wait_ms(100);
pierreblouet 17:0694b399bd0d 144 log_serial->printf(".");
pierreblouet 17:0694b399bd0d 145
leomerel 12:9ec78b07c688 146
pierreblouet 17:0694b399bd0d 147 //partie gestion des feux a mettre sur le coordinateur
pierreblouet 17:0694b399bd0d 148 /////////////////////////////////////////////
pierreblouet 18:972fb2937e41 149 // if(i==10){
pierreblouet 18:972fb2937e41 150 // send_explicit_data_to_remote_node(xbee, remoteDevice,1);
pierreblouet 18:972fb2937e41 151 // }
pierreblouet 18:972fb2937e41 152 // if(i==20){
pierreblouet 18:972fb2937e41 153 // send_explicit_data_to_remote_node(xbee, remoteDevice,0);
pierreblouet 18:972fb2937e41 154 // i=0;
pierreblouet 18:972fb2937e41 155 //}
pierreblouet 17:0694b399bd0d 156 ////////////////////////////////////////////
leomerel 12:9ec78b07c688 157 }
pierreblouet 17:0694b399bd0d 158
pierreblouet 17:0694b399bd0d 159 // delete(log_serial);
pierreblouet 17:0694b399bd0d 160 }