This is the coordinator node.

Dependencies:   mbed-rtos mbed Zigbee_communication EthernetInterface WebSocketClient

main.cpp

Committer:
EmileArseneault
Date:
2017-02-14
Revision:
5:7019f4f6b538
Parent:
4:d9968ed09187
Child:
7:4b85a9051b3a

File content as of revision 5:7019f4f6b538:

// 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;
XBee xbee(p8, p13, p14, &mymail);

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

void BroadcastHelloWorld()
{
    char hello[5] = {'H', 'e', 'l', 'l', 'o'};
    char world[5] = {'w', 'o', 'r', 'l', 'd'};
    
    while (1)
    {
        xbee.ZigBeeTransmit(0xFFFE, 0x00000000, 0x0000FFFF, &hello[0], 5);
        xbee.ZigBeeTransmit(0xFFFE, 0x00000000, 0x0000FFFF, &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);
        }
    }
}

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);
    
    wait(3);
    ReadSerial();
    InitialisePANID(0x42, 0x69);
    BroadcastHelloWorld();
    
    while(1) {
    }
}