example for the ssWi library

Dependencies:   ssWi

main.cpp

Committer:
mariob
Date:
2012-09-07
Revision:
1:0c9911bd5715
Parent:
0:8145d0de8bdc
Child:
3:a0d27c04263e

File content as of revision 1:0c9911bd5715:

#include "mbed.h"
#include "rtos.h"

#include "xbee.hpp"
#include "ssWiSocket.hpp"


struct Task {
    PortID _id;
    float _period;
    ssWiSocket* _s;
    int _val;

    Task (PortID id, float period, int value) {
        _id = id;
        _period = period;
        _s = ssWiSocket::createSocket(id);
        _val = value;
    }
};


void readingFunction(const void* arg);

void writingFunction(const void* arg);


int main()
{

    printf("\n\r************* CONFIG *************\n\r");

    //radio module
    XBeeModule xbee(p9, p10, 102, 14);
    XBeeAddress addr = xbee.getLocalAddress();
    printf("XBEE: src addr: %s,%s\n\r", addr.getHighAddr().c_str(), addr.getLowAddr().c_str());
    xbee.setDstAddress(XBeeBroadcastAddress());
    XBeeAddress addr2 = xbee.getDstAddress();
    printf("XBEE: dts addr: %s,%s\n\r", addr2.getHighAddr().c_str(), addr2.getLowAddr().c_str());
    printf("XBEE: channel: %d\n\r", xbee.getChannel());
    printf("XBEE: pan id: %d\n\r", xbee.getPanID());

    //wireless network
    xbee.init(10, 20);
    Task t1(10, 1.0, 20);
    Task t2(15, 1.2, 30);
    Task t3(100, 0.9, 25);
    Task t4(120, 1.1, 65);

    //thread
    Thread readingThread1(readingFunction, (void*)&t1);
    Thread readingThread2(readingFunction, (void*)&t2);
    Thread readingThread3(readingFunction, (void*)&t3);
    Thread readingThread4(readingFunction, (void*)&t4);
    Thread writingThread1(writingFunction, (void*)&t1);
    Thread writingThread2(writingFunction, (void*)&t2);
    Thread writingThread3(writingFunction, (void*)&t3);
    Thread writingThread4(writingFunction, (void*)&t4);

    printf("\n\r************* START *************\n\r");

    while(1);
}

void readingFunction(const void* arg)
{
    Task* task = (Task*)arg;
    while(1) {
        if (task->_s==NULL)
            printf("SOCKET: error\n\n");
        else
            printf("Read value: %d\n\r", task->_s->read());
        wait(task->_period);
    }
}

void writingFunction(const void* arg)
{
    Task* task = (Task*)arg;
    while(1) {
        if (task->_s==NULL)
            printf("SOCKET: error\n\n");
        else
            task->_s->write(task->_val++);
        wait(task->_period);
    }
}