This is the coordinator node.

Dependencies:   mbed-rtos mbed Zigbee_communication EthernetInterface WebSocketClient

Committer:
ShaolinPoutine
Date:
Tue Feb 14 04:06:35 2017 +0000
Revision:
4:d9968ed09187
Parent:
2:51d67a8b2325
Child:
5:7019f4f6b538
Child:
6:bd6001a78537
Added library use

Who changed what in which revision?

UserRevisionLine numberNew contents of line
EmileArseneault 2:51d67a8b2325 1 // Emile Arseneault : arse1503
EmileArseneault 2:51d67a8b2325 2 // Raphael Drouin : dror2204
EmileArseneault 2:51d67a8b2325 3
EmileArseneault 2:51d67a8b2325 4 // Coordinator Node
EmileArseneault 2:51d67a8b2325 5
ShaolinPoutine 0:4cfeffb4d773 6 #include "mbed.h"
ShaolinPoutine 0:4cfeffb4d773 7 #define FRAMEDELIMITER 0x7E
ShaolinPoutine 0:4cfeffb4d773 8 #include "rtos.h"
ShaolinPoutine 4:d9968ed09187 9 #include "xbee.h"
ShaolinPoutine 0:4cfeffb4d773 10
ShaolinPoutine 0:4cfeffb4d773 11 // 4269
ShaolinPoutine 0:4cfeffb4d773 12 Serial pc(USBTX, USBRX);
ShaolinPoutine 0:4cfeffb4d773 13 DigitalOut myled(LED1);
ShaolinPoutine 0:4cfeffb4d773 14
ShaolinPoutine 4:d9968ed09187 15 Mail<char, 250> mymail;
ShaolinPoutine 4:d9968ed09187 16 XBee xbee(p8, p13, p14, &mymail);
ShaolinPoutine 0:4cfeffb4d773 17
ShaolinPoutine 0:4cfeffb4d773 18 void ReadSerial()
ShaolinPoutine 0:4cfeffb4d773 19 {
ShaolinPoutine 0:4cfeffb4d773 20 // 00 13 A2 00
ShaolinPoutine 0:4cfeffb4d773 21 // 40 3E 09 63
ShaolinPoutine 4:d9968ed09187 22 xbee.SendATCommand('S', 'H');
ShaolinPoutine 4:d9968ed09187 23 xbee.SendATCommand('S', 'L');
ShaolinPoutine 0:4cfeffb4d773 24 }
ShaolinPoutine 0:4cfeffb4d773 25
EmileArseneault 2:51d67a8b2325 26 void InitialisePANID(char PANIDMSB, char PANIDLSB)
EmileArseneault 2:51d67a8b2325 27 {
EmileArseneault 2:51d67a8b2325 28 char PanID[2] = {PANIDMSB, PANIDLSB};
EmileArseneault 2:51d67a8b2325 29
ShaolinPoutine 4:d9968ed09187 30 xbee.SendATCommand('I', 'D', &PanID[0], 2);
EmileArseneault 2:51d67a8b2325 31 }
EmileArseneault 2:51d67a8b2325 32
EmileArseneault 2:51d67a8b2325 33 void BroadcastHelloWorld()
EmileArseneault 2:51d67a8b2325 34 {
EmileArseneault 2:51d67a8b2325 35 char hello[5] = {'H', 'e', 'l', 'l', 'o'};
EmileArseneault 2:51d67a8b2325 36 char world[5] = {'w', 'o', 'r', 'l', 'd'};
EmileArseneault 2:51d67a8b2325 37
EmileArseneault 2:51d67a8b2325 38 while (1)
EmileArseneault 2:51d67a8b2325 39 {
ShaolinPoutine 4:d9968ed09187 40 xbee.ZigBeeTransmit(0xFFFE, 0x000000000000FFFF, &hello[0], 5);
ShaolinPoutine 4:d9968ed09187 41 xbee.ZigBeeTransmit(0xFFFE, 0x000000000000FFFF, &world[0], 5);
EmileArseneault 2:51d67a8b2325 42 wait(2);
EmileArseneault 2:51d67a8b2325 43 }
EmileArseneault 2:51d67a8b2325 44 }
EmileArseneault 2:51d67a8b2325 45
ShaolinPoutine 0:4cfeffb4d773 46 void xbee_reader()
ShaolinPoutine 0:4cfeffb4d773 47 {
ShaolinPoutine 0:4cfeffb4d773 48 while(1)
ShaolinPoutine 0:4cfeffb4d773 49 {
ShaolinPoutine 4:d9968ed09187 50 xbee.InterpretMessage();
ShaolinPoutine 0:4cfeffb4d773 51 wait(0.001);
ShaolinPoutine 0:4cfeffb4d773 52 }
ShaolinPoutine 0:4cfeffb4d773 53 }
ShaolinPoutine 0:4cfeffb4d773 54
ShaolinPoutine 0:4cfeffb4d773 55 void tick()
ShaolinPoutine 0:4cfeffb4d773 56 {
ShaolinPoutine 0:4cfeffb4d773 57 myled = !myled;
ShaolinPoutine 0:4cfeffb4d773 58 }
ShaolinPoutine 0:4cfeffb4d773 59
ShaolinPoutine 4:d9968ed09187 60 void msg_reader()
ShaolinPoutine 4:d9968ed09187 61 {
ShaolinPoutine 4:d9968ed09187 62 while (true) {
ShaolinPoutine 4:d9968ed09187 63 osEvent evt = mymail.get();
ShaolinPoutine 4:d9968ed09187 64 if (evt.status == osEventMail)
ShaolinPoutine 4:d9968ed09187 65 {
ShaolinPoutine 4:d9968ed09187 66 char *c = (char*)evt.value.p;
ShaolinPoutine 4:d9968ed09187 67 pc.putc(*c);
ShaolinPoutine 4:d9968ed09187 68 mymail.free(c);
ShaolinPoutine 4:d9968ed09187 69 }
ShaolinPoutine 4:d9968ed09187 70 }
ShaolinPoutine 4:d9968ed09187 71 }
ShaolinPoutine 4:d9968ed09187 72
ShaolinPoutine 0:4cfeffb4d773 73 int main() {
ShaolinPoutine 4:d9968ed09187 74 pc.printf("\r\nI am coordinator\r\n");
ShaolinPoutine 4:d9968ed09187 75
ShaolinPoutine 0:4cfeffb4d773 76 Ticker ticker;
ShaolinPoutine 0:4cfeffb4d773 77 ticker.attach(&tick, 1);
ShaolinPoutine 4:d9968ed09187 78
ShaolinPoutine 4:d9968ed09187 79 Thread thread(xbee_reader);
ShaolinPoutine 4:d9968ed09187 80 Thread thread_reader(msg_reader);
ShaolinPoutine 0:4cfeffb4d773 81
ShaolinPoutine 0:4cfeffb4d773 82 wait(3);
ShaolinPoutine 0:4cfeffb4d773 83 ReadSerial();
EmileArseneault 2:51d67a8b2325 84 InitialisePANID(0x42, 0x69);
EmileArseneault 2:51d67a8b2325 85 BroadcastHelloWorld();
ShaolinPoutine 0:4cfeffb4d773 86
ShaolinPoutine 0:4cfeffb4d773 87 while(1) {
ShaolinPoutine 0:4cfeffb4d773 88 }
ShaolinPoutine 0:4cfeffb4d773 89 }