Mario Bambagini
/
library_ssWi
example for the ssWi library
main.cpp@3:a0d27c04263e, 2012-09-09 (annotated)
- 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?
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 | 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 | } |