on recoit 76 et 72

Dependencies:   XBeeLib mbed-rtos mbed

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?

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 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 }