Threads + Network Demo
Dependencies: EthernetInterface mbed-rtos mbed-src
Fork of TestNetComm by
main.cpp@3:1e86c29d1eac, 2014-05-04 (annotated)
- Committer:
- MalcolmNixon
- Date:
- Sun May 04 03:05:22 2014 +0000
- Revision:
- 3:1e86c29d1eac
- Parent:
- 2:d62b28f02d45
- Child:
- 4:f2789e665f4e
Added blink timer
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 | 3:1e86c29d1eac | 5 | DigitalOut led2(LED2, 1); |
MalcolmNixon | 2:d62b28f02d45 | 6 | |
MalcolmNixon | 3:1e86c29d1eac | 7 | // Blink function |
MalcolmNixon | 3:1e86c29d1eac | 8 | void blink(const void *param) |
MalcolmNixon | 3:1e86c29d1eac | 9 | { |
MalcolmNixon | 3:1e86c29d1eac | 10 | led2 = !led2; |
MalcolmNixon | 2:d62b28f02d45 | 11 | } |
MalcolmNixon | 0:9eba2bd74769 | 12 | |
MalcolmNixon | 1:429f7bca62aa | 13 | int main(void) |
MalcolmNixon | 0:9eba2bd74769 | 14 | { |
MalcolmNixon | 1:429f7bca62aa | 15 | // Create a digital output on LED1 |
MalcolmNixon | 3:1e86c29d1eac | 16 | DigitalOut led1(LED1, 1); |
MalcolmNixon | 3:1e86c29d1eac | 17 | |
MalcolmNixon | 3:1e86c29d1eac | 18 | // Start the blink timer at 1 second interval |
MalcolmNixon | 3:1e86c29d1eac | 19 | RtosTimer timer(blink); |
MalcolmNixon | 3:1e86c29d1eac | 20 | timer.start(1000); |
MalcolmNixon | 0:9eba2bd74769 | 21 | |
MalcolmNixon | 1:429f7bca62aa | 22 | // Construct the Ethernet interface |
MalcolmNixon | 1:429f7bca62aa | 23 | EthernetInterface eth; |
MalcolmNixon | 1:429f7bca62aa | 24 | eth.init("192.168.5.100", "255.255.255.0", "0.0.0.0"); |
MalcolmNixon | 1:429f7bca62aa | 25 | eth.connect(); |
MalcolmNixon | 2:d62b28f02d45 | 26 | |
MalcolmNixon | 1:429f7bca62aa | 27 | // Construct the server |
MalcolmNixon | 1:429f7bca62aa | 28 | TCPSocketServer svr; |
MalcolmNixon | 1:429f7bca62aa | 29 | svr.bind(1234); |
MalcolmNixon | 1:429f7bca62aa | 30 | svr.listen(); |
MalcolmNixon | 0:9eba2bd74769 | 31 | for (;;) |
MalcolmNixon | 0:9eba2bd74769 | 32 | { |
MalcolmNixon | 1:429f7bca62aa | 33 | // Accept the next connection |
MalcolmNixon | 1:429f7bca62aa | 34 | TCPSocketConnection conn; |
MalcolmNixon | 1:429f7bca62aa | 35 | if (svr.accept(conn) == 0) |
MalcolmNixon | 1:429f7bca62aa | 36 | { |
MalcolmNixon | 1:429f7bca62aa | 37 | // Turn the TCP_NODELAY option on |
MalcolmNixon | 1:429f7bca62aa | 38 | int opt = 1; |
MalcolmNixon | 1:429f7bca62aa | 39 | conn.set_option(IPPROTO_TCP, TCP_NODELAY, &opt, sizeof(opt)); |
MalcolmNixon | 1:429f7bca62aa | 40 | |
MalcolmNixon | 1:429f7bca62aa | 41 | // Manage the connection |
MalcolmNixon | 1:429f7bca62aa | 42 | for (;;) |
MalcolmNixon | 1:429f7bca62aa | 43 | { |
MalcolmNixon | 1:429f7bca62aa | 44 | // Read the input |
MalcolmNixon | 1:429f7bca62aa | 45 | char buf[128]; |
MalcolmNixon | 1:429f7bca62aa | 46 | int nr = conn.receive(buf, 128); |
MalcolmNixon | 1:429f7bca62aa | 47 | if (nr <= 0) |
MalcolmNixon | 1:429f7bca62aa | 48 | { |
MalcolmNixon | 1:429f7bca62aa | 49 | break; |
MalcolmNixon | 1:429f7bca62aa | 50 | } |
MalcolmNixon | 1:429f7bca62aa | 51 | |
MalcolmNixon | 1:429f7bca62aa | 52 | // Toggle the output on led1 |
MalcolmNixon | 1:429f7bca62aa | 53 | led1 = !led1; |
MalcolmNixon | 1:429f7bca62aa | 54 | |
MalcolmNixon | 1:429f7bca62aa | 55 | // Write the response twice |
MalcolmNixon | 1:429f7bca62aa | 56 | conn.send(buf, nr); |
MalcolmNixon | 1:429f7bca62aa | 57 | conn.send(buf, nr); |
MalcolmNixon | 1:429f7bca62aa | 58 | } |
MalcolmNixon | 1:429f7bca62aa | 59 | } |
MalcolmNixon | 1:429f7bca62aa | 60 | } |
MalcolmNixon | 0:9eba2bd74769 | 61 | } |