Threads + Network Demo

Dependencies:   EthernetInterface mbed-rtos mbed-src

Fork of TestNetComm by Malcolm Nixon

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?

UserRevisionLine numberNew 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 }