zzz

Dependencies:   C12832_lcd ConfigFile LM75B WiflyInterface2 mbed-rtos mbed

Fork of Xbee_Hello_World_B by Tristan Hughes

main.cpp

Committer:
kingkingyyk
Date:
2016-09-16
Revision:
1:15d917484a8d
Parent:
0:122702c9168a
Child:
2:ae1a5862504b

File content as of revision 1:15d917484a8d:

#include "mbed.h"
#include "xbee.h"
#include "C12832_lcd.h"
#include <string>
#include "EthernetInterface.h"

xbee xbee1(p9,p10,p30); //Initalise xbee_lib
C12832_LCD lcd;
DigitalOut LanLED(LED1);
DigitalOut XbeeLED(LED2);
DigitalOut LanDataLED(LED3);
EthernetInterface eth;

bool setupEthernet() {
    lcd.cls();
    lcd.locate(0,0);
    lcd.printf("Start Ethernet Setup\n");
    
    eth.init("172.16.0.2","255.255.0.0","172.16.0.1");
    if(eth.connect()!=0) {
        lcd.printf("Not connected!\n");
        return false;
    } else {
        lcd.printf("IP Address : %s\n", eth.getIPAddress());
        return true;
    }
}

void setupXbee() {
    lcd.cls();
    lcd.locate(0,0);
    lcd.printf("Start Xbee Setup\n");
    xbee1.Reset();
    xbee1.ConfigMode();
    xbee1.SetPanId(123);
    int mac [8];
    xbee1.GetSerial(mac);
    xbee1.WriteSettings();
    xbee1.ExitConfigMode();
    lcd.printf("%d %d %d %d %d %d %d %d\n",mac[0],mac[1],mac[2],mac[3],mac[4],mac[5],mac[6],mac[7]);
    lcd.printf("Done Setup!\n");
}

int main() {
    bool flag=true;
    flag=setupEthernet();
    LanLED=flag;
    wait(0.5);
    setupXbee();

    if (flag) {
        UDPSocket socket;
        socket.init();
        Endpoint server;
        server.set_address("172.16.0.1",40000);
    
        int count=0;
        char read_data[202]; //Xbee buffer size is 202 bytes
        
        while(1) {
            char temp[202];
            XbeeLED=1;
            xbee1.RecieveData(temp,10); //Read data from the XBee
            XbeeLED=0;
            for (int i=0;i<10 && temp[i]!='\0';i++) {
                if (temp[i]=='|') {
                    count=0;
                } else if (temp[i]=='&') {
                    string real_data="";
                    for (int i2=0;i2<count;i2++) {
                        real_data+=read_data[i2];
                    }
                    lcd.cls();
                    lcd.locate(0,3);
                    lcd.printf("%s",real_data);
                    LanDataLED=1;
                    socket.sendTo(server,read_data,real_data.length());
                    LanDataLED=0;
                    count=0;
                    for (int i2=0;i2<202;i2++) {
                        read_data[i2]='\0';
                    }
                } else {
                    read_data[count++]=temp[i];
                }
            }
        }
    }
}