example for the ssWi library

Dependencies:   ssWi

Committer:
mariob
Date:
Fri Sep 07 23:43:24 2012 +0000
Revision:
1:0c9911bd5715
Parent:
0:8145d0de8bdc
Child:
3:a0d27c04263e
to be tested

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mariob 1:0c9911bd5715 1 #include "mbed.h"
mariob 1:0c9911bd5715 2 #include "rtos.h"
mariob 1:0c9911bd5715 3
mariob 1:0c9911bd5715 4 #include "xbee.hpp"
mariob 1:0c9911bd5715 5 #include "ssWiSocket.hpp"
mariob 1:0c9911bd5715 6
mariob 1:0c9911bd5715 7
mariob 1:0c9911bd5715 8 struct Task {
mariob 1:0c9911bd5715 9 PortID _id;
mariob 1:0c9911bd5715 10 float _period;
mariob 1:0c9911bd5715 11 ssWiSocket* _s;
mariob 1:0c9911bd5715 12 int _val;
mariob 1:0c9911bd5715 13
mariob 1:0c9911bd5715 14 Task (PortID id, float period, int value) {
mariob 1:0c9911bd5715 15 _id = id;
mariob 1:0c9911bd5715 16 _period = period;
mariob 1:0c9911bd5715 17 _s = ssWiSocket::createSocket(id);
mariob 1:0c9911bd5715 18 _val = value;
mariob 1:0c9911bd5715 19 }
mariob 1:0c9911bd5715 20 };
mariob 1:0c9911bd5715 21
mariob 1:0c9911bd5715 22
mariob 1:0c9911bd5715 23 void readingFunction(const void* arg);
mariob 1:0c9911bd5715 24
mariob 1:0c9911bd5715 25 void writingFunction(const void* arg);
mariob 1:0c9911bd5715 26
mariob 1:0c9911bd5715 27
mariob 1:0c9911bd5715 28 int main()
mariob 1:0c9911bd5715 29 {
mariob 1:0c9911bd5715 30
mariob 1:0c9911bd5715 31 printf("\n\r************* CONFIG *************\n\r");
mariob 1:0c9911bd5715 32
mariob 1:0c9911bd5715 33 //radio module
mariob 1:0c9911bd5715 34 XBeeModule xbee(p9, p10, 102, 14);
mariob 1:0c9911bd5715 35 XBeeAddress addr = xbee.getLocalAddress();
mariob 1:0c9911bd5715 36 printf("XBEE: src addr: %s,%s\n\r", addr.getHighAddr().c_str(), addr.getLowAddr().c_str());
mariob 1:0c9911bd5715 37 xbee.setDstAddress(XBeeBroadcastAddress());
mariob 1:0c9911bd5715 38 XBeeAddress addr2 = xbee.getDstAddress();
mariob 1:0c9911bd5715 39 printf("XBEE: dts addr: %s,%s\n\r", addr2.getHighAddr().c_str(), addr2.getLowAddr().c_str());
mariob 1:0c9911bd5715 40 printf("XBEE: channel: %d\n\r", xbee.getChannel());
mariob 1:0c9911bd5715 41 printf("XBEE: pan id: %d\n\r", xbee.getPanID());
mariob 1:0c9911bd5715 42
mariob 1:0c9911bd5715 43 //wireless network
mariob 1:0c9911bd5715 44 xbee.init(10, 20);
mariob 1:0c9911bd5715 45 Task t1(10, 1.0, 20);
mariob 1:0c9911bd5715 46 Task t2(15, 1.2, 30);
mariob 1:0c9911bd5715 47 Task t3(100, 0.9, 25);
mariob 1:0c9911bd5715 48 Task t4(120, 1.1, 65);
mariob 1:0c9911bd5715 49
mariob 1:0c9911bd5715 50 //thread
mariob 1:0c9911bd5715 51 Thread readingThread1(readingFunction, (void*)&t1);
mariob 1:0c9911bd5715 52 Thread readingThread2(readingFunction, (void*)&t2);
mariob 1:0c9911bd5715 53 Thread readingThread3(readingFunction, (void*)&t3);
mariob 1:0c9911bd5715 54 Thread readingThread4(readingFunction, (void*)&t4);
mariob 1:0c9911bd5715 55 Thread writingThread1(writingFunction, (void*)&t1);
mariob 1:0c9911bd5715 56 Thread writingThread2(writingFunction, (void*)&t2);
mariob 1:0c9911bd5715 57 Thread writingThread3(writingFunction, (void*)&t3);
mariob 1:0c9911bd5715 58 Thread writingThread4(writingFunction, (void*)&t4);
mariob 1:0c9911bd5715 59
mariob 1:0c9911bd5715 60 printf("\n\r************* START *************\n\r");
mariob 1:0c9911bd5715 61
mariob 1:0c9911bd5715 62 while(1);
mariob 1:0c9911bd5715 63 }
mariob 1:0c9911bd5715 64
mariob 1:0c9911bd5715 65 void readingFunction(const void* arg)
mariob 1:0c9911bd5715 66 {
mariob 1:0c9911bd5715 67 Task* task = (Task*)arg;
mariob 1:0c9911bd5715 68 while(1) {
mariob 1:0c9911bd5715 69 if (task->_s==NULL)
mariob 1:0c9911bd5715 70 printf("SOCKET: error\n\n");
mariob 1:0c9911bd5715 71 else
mariob 1:0c9911bd5715 72 printf("Read value: %d\n\r", task->_s->read());
mariob 1:0c9911bd5715 73 wait(task->_period);
mariob 1:0c9911bd5715 74 }
mariob 1:0c9911bd5715 75 }
mariob 1:0c9911bd5715 76
mariob 1:0c9911bd5715 77 void writingFunction(const void* arg)
mariob 1:0c9911bd5715 78 {
mariob 1:0c9911bd5715 79 Task* task = (Task*)arg;
mariob 1:0c9911bd5715 80 while(1) {
mariob 1:0c9911bd5715 81 if (task->_s==NULL)
mariob 1:0c9911bd5715 82 printf("SOCKET: error\n\n");
mariob 1:0c9911bd5715 83 else
mariob 1:0c9911bd5715 84 task->_s->write(task->_val++);
mariob 1:0c9911bd5715 85 wait(task->_period);
mariob 1:0c9911bd5715 86 }
mariob 1:0c9911bd5715 87 }