Threads + Network Demo

Dependencies:   EthernetInterface mbed-rtos mbed-src

Fork of TestNetComm by Malcolm Nixon

Committer:
MalcolmNixon
Date:
Sun May 04 14:11:44 2014 +0000
Revision:
5:18415c556f04
Parent:
4:f2789e665f4e
Child:
6:97573a8dce83
Initial Revision

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