This is the router node

Dependencies:   mbed-rtos mbed Zigbee_communication

main.cpp

Committer:
ShaolinPoutine
Date:
2017-02-14
Revision:
4:79eb621914e7
Parent:
3:0acb2c3d7612
Child:
6:b54b9c76aaf2

File content as of revision 4:79eb621914e7:

// Emile Arseneault : arse1503
// Raphael Drouin   : dror2204

// Router Node

#include "mbed.h"
#define FRAMEDELIMITER 0x7E
#include "rtos.h"
#include "xbee.h"

// 4269
Mail<char, 250> mymail;
XBee xbee(p8, p13, p14, &mymail);

Serial pc(USBTX, USBRX);
DigitalOut myled(LED1);

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 xbee_reader()
{
    while(1)
    {
        xbee.InterpretMessage();
        wait(0.001);   
    }
}

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 tick()
{
    myled = !myled;   
}

int main() {
    Ticker ticker;
    ticker.attach(&tick, 1);
    pc.printf("\r\nI am router\r\n");
    
    Thread thread(xbee_reader);
    Thread thread_reader(msg_reader);
    
    wait(3);
    ReadSerial();
    InitialisePANID(0x42, 0x69);
    
    while(1) {
    }
}