This is the coordinator node.
Dependencies: mbed-rtos mbed Zigbee_communication EthernetInterface WebSocketClient
main.cpp
- Committer:
- ShaolinPoutine
- Date:
- 2017-02-14
- Revision:
- 6:bd6001a78537
- Parent:
- 4:d9968ed09187
- Child:
- 7:4b85a9051b3a
File content as of revision 6:bd6001a78537:
// Emile Arseneault : arse1503 // Raphael Drouin : dror2204 // Coordinator Node #include "mbed.h" #define FRAMEDELIMITER 0x7E #include "rtos.h" #include "xbee.h" // 4269 Serial pc(USBTX, USBRX); DigitalOut myled(LED1); Mail<char, 250> mymail; Mail<char[256], 16> webmail; XBee xbee(p8, p13, p14, &mymail, &webmail); void ReadSerial() { // 00 13 A2 00 // 40 3E 09 63 xbee.SendATCommand('S', 'H'); xbee.SendATCommand('S', 'L'); } void InitialisePANID(char PANIDMSB, char PANIDLSB) { char PanID[2] = {PANIDMSB, PANIDLSB}; xbee.SendATCommand('I', 'D', &PanID[0], 2); wait(5); xbee.SendATCommand('M','Y'); xbee.SendATCommand('O','P'); } void BroadcastHelloWorld() { char hello[5] = {'H', 'e', 'l', 'l', 'o'}; char world[5] = {'w', 'o', 'r', 'l', 'd'}; while (1) { xbee.ZigBeeTransmit(0xFFFE, 0x000000000000FFFF, &hello[0], 5); xbee.ZigBeeTransmit(0xFFFE, 0x000000000000FFFF, &world[0], 5); wait(2); } } void xbee_reader() { while(1) { xbee.InterpretMessage(); wait(0.001); } } void tick() { myled = !myled; } void msg_reader() { while (true) { osEvent evt = mymail.get(); if (evt.status == osEventMail) { char *c = (char*)evt.value.p; pc.putc(*c); mymail.free(c); } } } void web() { while (true) { osEvent evt = webmail.get(); if (evt.status == osEventMail) { pc.printf("received"); char *c = (char*)evt.value.p; // Send email pc.printf(c); mymail.free(c); } } } int main() { pc.printf("\r\nI am coordinator\r\n"); Ticker ticker; ticker.attach(&tick, 1); Thread thread(xbee_reader); Thread thread_reader(msg_reader); Thread thread2(web); wait(3); ReadSerial(); InitialisePANID(0x42, 0x69); xbee.appendBuffer("This message contains numbers "); xbee.appendBuffer("1"); xbee.appendBuffer("0"); xbee.sendBuffer(); BroadcastHelloWorld(); while(1) { } }