A library allowing basic functions of the XBEE pro to be used. Currently supported are: Enter/exit config mode, reading device serial number, setting encryption key, writing settings to non volatile memory and sending data strings.

Dependents:   Seeed_XBee_Shield Seeed_XBee_Shield-2

Fork of xbee_lib by Tristan Hughes

xbee.cpp

Committer:
tristanjph
Date:
2012-08-29
Revision:
1:c3d9bdcb0b03
Parent:
0:2656fb225c5d
Child:
2:cb627ea9b817

File content as of revision 1:c3d9bdcb0b03:

#include "xbee.h"


xbee::xbee(PinName tx, PinName rx)
{
    _tx = tx;
    _rx = rx;
}

xbee::~xbee()
{
}

int xbee::ConfigMode()
{
    int a;
    Serial DATA(_tx,_rx);
    wait(2);
    DATA.printf("+++");
    while (a != 75) {
        if (DATA.readable()) {
            a = DATA.getc();
        }
    }
    wait(1);
    printf("config mode\n");
    return 1;
}

int xbee::GetSerial()
{
    int sh1,sh2,sh3,sl1,sl2,sl3,sl4;
    Serial DATA(_tx,_rx);
    wait_ms(50);
    DATA.printf("ATSL \r");
    DATA.scanf ("%2x%2x%2x%2x",&sl1,&sl2,&sl3,&sl4);
    wait_ms(500);
    DATA.printf("ATSH \r");
    DATA.scanf ("%2x%2x%2x",&sh1,&sh2,&sh3);

    serial_no[0] = sh1;
    serial_no[1] = sh2;
    serial_no[2] = sh3;
    serial_no[3] = sl1;
    serial_no[4] = sl2;
    serial_no[5] = sl3;
    serial_no[6] = sl4;

    return 1;
}

int xbee::SetKey()
{
    Serial DATA(_tx,_rx);
    DATA.printf("ATEE 1 \r");

    DATA.scanf ("%*s");
    wait_ms(1);
    DATA.printf("ATKY %02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x \r",
                security_key[0],security_key[1],security_key[2],security_key[3],
                security_key[4],security_key[5],security_key[6],security_key[7],
                security_key[8],security_key[9],security_key[10],security_key[11],
                security_key[12],security_key[13],security_key[14],security_key[15]);
    DATA.scanf ("%*s");
    return 1;
}

int xbee::WriteSettings()
{
    Serial DATA(_tx,_rx);
    wait_ms(5);
    DATA.printf("ATWR \r");
    DATA.scanf ("%*s");
    return 1;
}

int xbee::ExitConfigMode()
{
    Serial DATA(_tx,_rx);
    wait_ms(5);
    DATA.printf("ATCN \r");
    DATA.scanf ("%*s");
    return 1;
}

int xbee::SendData()
{
    Serial DATA(_tx,_rx);
    DATA.printf("%s",sendData);
    return 1;
}

void xbee::RecieveData(int numchar)
{
    int count=0;
    Serial DATA(_tx,_rx);
    while(numchar!=count) {
        if(DATA.readable()) {
            readData[count] = DATA.getc();
            count++;
        }

    }