example for the ssWi library

Dependencies:   ssWi

Committer:
mariob
Date:
Sun Sep 09 20:03:53 2012 +0000
Revision:
3:a0d27c04263e
Parent:
1:0c9911bd5715
Child:
4:989ea19b8fd2
ok; ; MB

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 3:a0d27c04263e 7 #define WRITING_PERIOD_MS 1000
mariob 3:a0d27c04263e 8 #define READING_PERIOD_MS 1000
mariob 1:0c9911bd5715 9
mariob 1:0c9911bd5715 10 struct Task {
mariob 1:0c9911bd5715 11 PortID _id;
mariob 3:a0d27c04263e 12 int _ratio;
mariob 1:0c9911bd5715 13 ssWiSocket* _s;
mariob 1:0c9911bd5715 14 int _val;
mariob 1:0c9911bd5715 15
mariob 3:a0d27c04263e 16 Task (PortID id, int ratio, int value) {
mariob 1:0c9911bd5715 17 _id = id;
mariob 3:a0d27c04263e 18 _ratio = ratio;
mariob 1:0c9911bd5715 19 _s = ssWiSocket::createSocket(id);
mariob 1:0c9911bd5715 20 _val = value;
mariob 1:0c9911bd5715 21 }
mariob 1:0c9911bd5715 22 };
mariob 1:0c9911bd5715 23
mariob 3:a0d27c04263e 24 Task *t1;
mariob 3:a0d27c04263e 25 Task *t2;
mariob 3:a0d27c04263e 26 Task *t3;
mariob 3:a0d27c04263e 27 Task *t4;
mariob 3:a0d27c04263e 28
mariob 1:0c9911bd5715 29
mariob 1:0c9911bd5715 30 void readingFunction(const void* arg);
mariob 1:0c9911bd5715 31
mariob 1:0c9911bd5715 32 void writingFunction(const void* arg);
mariob 1:0c9911bd5715 33
mariob 1:0c9911bd5715 34
mariob 1:0c9911bd5715 35 int main()
mariob 1:0c9911bd5715 36 {
mariob 1:0c9911bd5715 37
mariob 1:0c9911bd5715 38 printf("\n\r************* CONFIG *************\n\r");
mariob 1:0c9911bd5715 39
mariob 1:0c9911bd5715 40 //radio module
mariob 1:0c9911bd5715 41 XBeeModule xbee(p9, p10, 102, 14);
mariob 1:0c9911bd5715 42 XBeeAddress addr = xbee.getLocalAddress();
mariob 1:0c9911bd5715 43 printf("XBEE: src addr: %s,%s\n\r", addr.getHighAddr().c_str(), addr.getLowAddr().c_str());
mariob 1:0c9911bd5715 44 xbee.setDstAddress(XBeeBroadcastAddress());
mariob 1:0c9911bd5715 45 XBeeAddress addr2 = xbee.getDstAddress();
mariob 1:0c9911bd5715 46 printf("XBEE: dts addr: %s,%s\n\r", addr2.getHighAddr().c_str(), addr2.getLowAddr().c_str());
mariob 1:0c9911bd5715 47 printf("XBEE: channel: %d\n\r", xbee.getChannel());
mariob 1:0c9911bd5715 48 printf("XBEE: pan id: %d\n\r", xbee.getPanID());
mariob 1:0c9911bd5715 49
mariob 1:0c9911bd5715 50 //wireless network
mariob 3:a0d27c04263e 51 xbee.init(1.0, 1.0);
mariob 3:a0d27c04263e 52
mariob 3:a0d27c04263e 53
mariob 3:a0d27c04263e 54 t1 = new Task(10, 3, 20);
mariob 3:a0d27c04263e 55 t2 = new Task(15, 5, 30);
mariob 3:a0d27c04263e 56 t3 = new Task(100, 7, 25);
mariob 3:a0d27c04263e 57 t4 = new Task(120, 4, 65);
mariob 1:0c9911bd5715 58
mariob 1:0c9911bd5715 59 //thread
mariob 3:a0d27c04263e 60 Thread readingThread(readingFunction);
mariob 3:a0d27c04263e 61 Thread writingThread(writingFunction);
mariob 1:0c9911bd5715 62
mariob 1:0c9911bd5715 63 printf("\n\r************* START *************\n\r");
mariob 1:0c9911bd5715 64
mariob 3:a0d27c04263e 65 Thread::wait(osWaitForever);
mariob 1:0c9911bd5715 66 }
mariob 1:0c9911bd5715 67
mariob 1:0c9911bd5715 68 void readingFunction(const void* arg)
mariob 1:0c9911bd5715 69 {
mariob 1:0c9911bd5715 70 while(1) {
mariob 3:a0d27c04263e 71 printf("Read value: (%d, %d), (%d, %d), (%d, %d), (%d, %d)\n\r",
mariob 3:a0d27c04263e 72 t1->_id, t1->_s->read(), t2->_id, t2->_s->read(),
mariob 3:a0d27c04263e 73 t3->_id, t3->_s->read(), t4->_id, t4->_s->read());
mariob 3:a0d27c04263e 74 Thread::wait(READING_PERIOD_MS);
mariob 1:0c9911bd5715 75 }
mariob 1:0c9911bd5715 76 }
mariob 1:0c9911bd5715 77
mariob 1:0c9911bd5715 78 void writingFunction(const void* arg)
mariob 1:0c9911bd5715 79 {
mariob 3:a0d27c04263e 80 int x = 1;
mariob 1:0c9911bd5715 81 while(1) {
mariob 3:a0d27c04263e 82 if ((x%(t1->_ratio))==0)
mariob 3:a0d27c04263e 83 t1->_s->write(t1->_val++);
mariob 3:a0d27c04263e 84 if ((x%(t2->_ratio))==0)
mariob 3:a0d27c04263e 85 t2->_s->write(t2->_val++);
mariob 3:a0d27c04263e 86 if ((x%(t3->_ratio))==0)
mariob 3:a0d27c04263e 87 t3->_s->write(t3->_val++);
mariob 3:a0d27c04263e 88 if ((x%(t4->_ratio))==0)
mariob 3:a0d27c04263e 89 t4->_s->write(t4->_val++);
mariob 3:a0d27c04263e 90 x++;
mariob 3:a0d27c04263e 91 Thread::wait(WRITING_PERIOD_MS);
mariob 1:0c9911bd5715 92 }
mariob 1:0c9911bd5715 93 }