Test network communications
Dependencies: EthernetInterface mbed-rtos mbed
main.cpp@5:18415c556f04, 2014-05-04 (annotated)
- Committer:
- MalcolmNixon
- Date:
- Sun May 04 14:11:44 2014 +0000
- Revision:
- 5:18415c556f04
- Parent:
- 4:f2789e665f4e
Initial Revision
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MalcolmNixon | 0:9eba2bd74769 | 1 | #include "EthernetInterface.h" |
MalcolmNixon | 0:9eba2bd74769 | 2 | #include "Thread.h" |
MalcolmNixon | 0:9eba2bd74769 | 3 | #include "mbed.h" |
MalcolmNixon | 0:9eba2bd74769 | 4 | |
MalcolmNixon | 5:18415c556f04 | 5 | void led2ThreadProc(const void *param) |
MalcolmNixon | 3:1e86c29d1eac | 6 | { |
MalcolmNixon | 5:18415c556f04 | 7 | // Toggle LED2 |
MalcolmNixon | 5:18415c556f04 | 8 | DigitalOut led2(LED2, 1); |
MalcolmNixon | 4:f2789e665f4e | 9 | for (;;) |
MalcolmNixon | 4:f2789e665f4e | 10 | { |
MalcolmNixon | 4:f2789e665f4e | 11 | led2 = !led2; |
MalcolmNixon | 4:f2789e665f4e | 12 | Thread::wait(1000); |
MalcolmNixon | 4:f2789e665f4e | 13 | } |
MalcolmNixon | 2:d62b28f02d45 | 14 | } |
MalcolmNixon | 0:9eba2bd74769 | 15 | |
MalcolmNixon | 5:18415c556f04 | 16 | void led3ThreadProc(const void *param) |
MalcolmNixon | 5:18415c556f04 | 17 | { |
MalcolmNixon | 5:18415c556f04 | 18 | // Toggle LED3 |
MalcolmNixon | 5:18415c556f04 | 19 | DigitalOut led3(LED3, 1); |
MalcolmNixon | 5:18415c556f04 | 20 | for (;;) |
MalcolmNixon | 5:18415c556f04 | 21 | { |
MalcolmNixon | 5:18415c556f04 | 22 | led3 = !led3; |
MalcolmNixon | 5:18415c556f04 | 23 | Thread::wait(2000); |
MalcolmNixon | 5:18415c556f04 | 24 | } |
MalcolmNixon | 5:18415c556f04 | 25 | } |
MalcolmNixon | 5:18415c556f04 | 26 | |
MalcolmNixon | 1:429f7bca62aa | 27 | int main(void) |
MalcolmNixon | 0:9eba2bd74769 | 28 | { |
MalcolmNixon | 5:18415c556f04 | 29 | // Start LED toggle(s) |
MalcolmNixon | 5:18415c556f04 | 30 | Thread led2(led2ThreadProc); |
MalcolmNixon | 5:18415c556f04 | 31 | Thread led3(led3ThreadProc); |
MalcolmNixon | 3:1e86c29d1eac | 32 | |
MalcolmNixon | 4:f2789e665f4e | 33 | // Start the network |
MalcolmNixon | 5:18415c556f04 | 34 | EthernetInterface::init("192.168.5.100", "255.255.255.0", "0.0.0.0"); |
MalcolmNixon | 5:18415c556f04 | 35 | EthernetInterface::connect(); |
MalcolmNixon | 4:f2789e665f4e | 36 | |
MalcolmNixon | 1:429f7bca62aa | 37 | // Construct the server |
MalcolmNixon | 1:429f7bca62aa | 38 | TCPSocketServer svr; |
MalcolmNixon | 1:429f7bca62aa | 39 | svr.bind(1234); |
MalcolmNixon | 1:429f7bca62aa | 40 | svr.listen(); |
MalcolmNixon | 4:f2789e665f4e | 41 | |
MalcolmNixon | 5:18415c556f04 | 42 | TCPSocketConnection conn; |
MalcolmNixon | 0:9eba2bd74769 | 43 | for (;;) |
MalcolmNixon | 0:9eba2bd74769 | 44 | { |
MalcolmNixon | 1:429f7bca62aa | 45 | // Accept the next connection |
MalcolmNixon | 4:f2789e665f4e | 46 | svr.accept(conn); |
MalcolmNixon | 4:f2789e665f4e | 47 | |
MalcolmNixon | 4:f2789e665f4e | 48 | // Manage the connection |
MalcolmNixon | 4:f2789e665f4e | 49 | for (;;) |
MalcolmNixon | 1:429f7bca62aa | 50 | { |
MalcolmNixon | 4:f2789e665f4e | 51 | // Read the input |
MalcolmNixon | 4:f2789e665f4e | 52 | char buf[32]; |
MalcolmNixon | 4:f2789e665f4e | 53 | int nr = conn.receive(buf, 32); |
MalcolmNixon | 4:f2789e665f4e | 54 | if (nr <= 0) |
MalcolmNixon | 1:429f7bca62aa | 55 | { |
MalcolmNixon | 4:f2789e665f4e | 56 | break; |
MalcolmNixon | 1:429f7bca62aa | 57 | } |
MalcolmNixon | 4:f2789e665f4e | 58 | |
MalcolmNixon | 4:f2789e665f4e | 59 | // Write the response twice |
MalcolmNixon | 4:f2789e665f4e | 60 | conn.send(buf, nr); |
MalcolmNixon | 4:f2789e665f4e | 61 | conn.send(buf, nr); |
MalcolmNixon | 1:429f7bca62aa | 62 | } |
MalcolmNixon | 4:f2789e665f4e | 63 | } |
MalcolmNixon | 4:f2789e665f4e | 64 | } |