Mario Bambagini
/
library_ssWi
example for the ssWi library
main.cpp@1:0c9911bd5715, 2012-09-07 (annotated)
- 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?
User | Revision | Line number | New 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 | } |