![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Gestion du Traffic Adaptatif- Code du mbed coordinateur
Dependencies: XBeeLib mbed mbed-rtos EthernetInterface
main.cpp@17:0694b399bd0d, 2018-11-11 (annotated)
- Committer:
- pierreblouet
- Date:
- Sun Nov 11 19:40:46 2018 +0000
- Revision:
- 17:0694b399bd0d
- Parent:
- 16:b4d5eb2ee378
- Child:
- 18:972fb2937e41
- Child:
- 19:a302b82c4357
oklm;
Who changed what in which revision?
User | Revision | Line number | New 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 | 17:0694b399bd0d | 32 | DigitalOut feux_gauche_rouge(p29); |
pierreblouet | 17:0694b399bd0d | 33 | //orange |
pierreblouet | 17:0694b399bd0d | 34 | DigitalOut feux_gauche_orange(p27); |
pierreblouet | 17:0694b399bd0d | 35 | //vert |
pierreblouet | 17:0694b399bd0d | 36 | DigitalOut feux_gauche_vert(p25); |
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 | 17:0694b399bd0d | 41 | char rouge = 'r'; |
pierreblouet | 17:0694b399bd0d | 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 | 17:0694b399bd0d | 59 | |
pierreblouet | 17:0694b399bd0d | 60 | log_serial->printf("\r\n"); |
emilmont | 1:491820ee784d | 61 | } |
leomerel | 12:9ec78b07c688 | 62 | |
pierreblouet | 17:0694b399bd0d | 63 | |
pierreblouet | 17:0694b399bd0d | 64 | static void send_explicit_data_to_remote_node(XBeeZB& xbee, const RemoteXBeeZB& RemoteDevice,char message) |
pierreblouet | 17:0694b399bd0d | 65 | { |
pierreblouet | 17:0694b399bd0d | 66 | |
pierreblouet | 17:0694b399bd0d | 67 | const uint8_t data_len = 0x01; |
pierreblouet | 17:0694b399bd0d | 68 | const uint8_t dstEP = 0xE8; |
pierreblouet | 17:0694b399bd0d | 69 | const uint8_t srcEP = 0xE8; |
pierreblouet | 17:0694b399bd0d | 70 | const uint16_t clusterID = 0x0011; |
pierreblouet | 17:0694b399bd0d | 71 | const uint16_t profileID = 0xC105; |
pierreblouet | 17:0694b399bd0d | 72 | |
pierreblouet | 17:0694b399bd0d | 73 | const TxStatus txStatus = xbee.send_data(RemoteDevice, dstEP, srcEP, clusterID, profileID, (const uint8_t *)message, data_len); |
pierreblouet | 17:0694b399bd0d | 74 | if (txStatus == TxStatusSuccess) |
pierreblouet | 17:0694b399bd0d | 75 | log_serial->printf("send_explicit_data_to_remote_node OK\r\n"); |
pierreblouet | 17:0694b399bd0d | 76 | else |
pierreblouet | 17:0694b399bd0d | 77 | log_serial->printf("send_explicit_data_to_remote_node failed with %d\r\n", (int) txStatus); |
emilmont | 1:491820ee784d | 78 | } |
leomerel | 12:9ec78b07c688 | 79 | |
pierreblouet | 17:0694b399bd0d | 80 | |
pierreblouet | 17:0694b399bd0d | 81 | int main() |
pierreblouet | 17:0694b399bd0d | 82 | { |
pierreblouet | 17:0694b399bd0d | 83 | log_serial = new Serial(DEBUG_TX, DEBUG_RX); |
pierreblouet | 17:0694b399bd0d | 84 | log_serial->baud(9600); |
pierreblouet | 17:0694b399bd0d | 85 | log_serial->printf("Sample application to demo how to receive unicast and broadcast data with the XBeeZB\r\n\r\n"); |
pierreblouet | 17:0694b399bd0d | 86 | log_serial->printf(XB_LIB_BANNER); |
pierreblouet | 17:0694b399bd0d | 87 | |
pierreblouet | 17:0694b399bd0d | 88 | |
pierreblouet | 17:0694b399bd0d | 89 | |
pierreblouet | 17:0694b399bd0d | 90 | #if defined(ENABLE_LOGGING) |
pierreblouet | 17:0694b399bd0d | 91 | new DigiLoggerMbedSerial(log_serial, LogLevelInfo); |
pierreblouet | 17:0694b399bd0d | 92 | #endif |
pierreblouet | 17:0694b399bd0d | 93 | |
pierreblouet | 17:0694b399bd0d | 94 | XBeeZB xbee = XBeeZB(RADIO_TX, RADIO_RX, RADIO_RESET, NC, NC, 9600); |
pierreblouet | 17:0694b399bd0d | 95 | |
pierreblouet | 17:0694b399bd0d | 96 | /* Register callbacks */ |
pierreblouet | 17:0694b399bd0d | 97 | xbee.register_receive_cb(&receive_cb); |
pierreblouet | 17:0694b399bd0d | 98 | |
pierreblouet | 17:0694b399bd0d | 99 | RadioStatus const radioStatus = xbee.init(); |
pierreblouet | 17:0694b399bd0d | 100 | MBED_ASSERT(radioStatus == Success); |
leomerel | 12:9ec78b07c688 | 101 | |
pierreblouet | 17:0694b399bd0d | 102 | /* Wait until the device has joined the network */ |
pierreblouet | 17:0694b399bd0d | 103 | log_serial->printf("Waiting for device to join the network: "); |
pierreblouet | 17:0694b399bd0d | 104 | while (!xbee.is_joined()) { |
pierreblouet | 17:0694b399bd0d | 105 | wait_ms(1000); |
pierreblouet | 17:0694b399bd0d | 106 | log_serial->printf("."); |
leomerel | 12:9ec78b07c688 | 107 | } |
pierreblouet | 17:0694b399bd0d | 108 | log_serial->printf("OK\r\n"); |
leomerel | 12:9ec78b07c688 | 109 | |
pierreblouet | 17:0694b399bd0d | 110 | int i =0; |
pierreblouet | 17:0694b399bd0d | 111 | const RemoteXBeeZB remoteDevice = RemoteXBeeZB(REMOTE_NODE_ADDR64); |
pierreblouet | 17:0694b399bd0d | 112 | while (true) { |
pierreblouet | 17:0694b399bd0d | 113 | i++; |
pierreblouet | 17:0694b399bd0d | 114 | uint32_t receive_value = xbee.process_rx_frames(); |
pierreblouet | 17:0694b399bd0d | 115 | log_serial->printf("%d"); |
pierreblouet | 17:0694b399bd0d | 116 | wait_ms(100); |
pierreblouet | 17:0694b399bd0d | 117 | log_serial->printf("."); |
pierreblouet | 17:0694b399bd0d | 118 | |
leomerel | 12:9ec78b07c688 | 119 | |
pierreblouet | 17:0694b399bd0d | 120 | //partie gestion des feux a mettre sur le coordinateur |
pierreblouet | 17:0694b399bd0d | 121 | ///////////////////////////////////////////// |
pierreblouet | 17:0694b399bd0d | 122 | if(i==10){ |
pierreblouet | 17:0694b399bd0d | 123 | send_explicit_data_to_remote_node(xbee, remoteDevice,rouge); |
pierreblouet | 17:0694b399bd0d | 124 | } |
pierreblouet | 17:0694b399bd0d | 125 | if(i==20){ |
pierreblouet | 17:0694b399bd0d | 126 | send_explicit_data_to_remote_node(xbee, remoteDevice,vert); |
pierreblouet | 17:0694b399bd0d | 127 | i=0; |
pierreblouet | 17:0694b399bd0d | 128 | } |
pierreblouet | 17:0694b399bd0d | 129 | //////////////////////////////////////////// |
leomerel | 12:9ec78b07c688 | 130 | } |
pierreblouet | 17:0694b399bd0d | 131 | |
pierreblouet | 17:0694b399bd0d | 132 | // delete(log_serial); |
pierreblouet | 17:0694b399bd0d | 133 | } |