1

Dependencies:   EthernetInterface mbed-rtos mbed

Fork of TCPEchoServer by mbed official

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 // TAK Server
00002 
00003 #include "mbed.h"
00004 #include "EthernetInterface.h"
00005  
00006 #define SERVER_PORT   23
00007  
00008  DigitalOut myled1(LED1);
00009  DigitalOut myled2(LED2);
00010  DigitalOut myled3(LED3);
00011  DigitalOut myled4(LED4);
00012  DigitalOut RelayLED(p5);
00013  DigitalOut RelayPUMP(p6);
00014  
00015 int main (void) {
00016     EthernetInterface eth;
00017     //eth.init(); //Use DHCP
00018     static const char*     mbedIp       = "192.168.0.102";  //IP
00019     static const char*     mbedMask     = "255.255.255.0";  // Mask
00020     static const char*     mbedGateway  = "192.168.0.1";    //Gateway
00021     eth.init(mbedIp,mbedMask,mbedGateway); //Use  these parameters for static IP
00022     eth.connect();
00023     printf("\nServer IP Address is %s\n", eth.getIPAddress());
00024     
00025     TCPSocketServer server;
00026     server.bind(SERVER_PORT);
00027     server.listen();
00028     
00029     while (true) {
00030         printf("\nWait for new connection...\n");
00031         TCPSocketConnection client;
00032         server.accept(client);
00033         client.set_blocking(false, 15000); // Timeout after (15)s
00034         
00035         printf("Connection from: %s\n", client.get_address());
00036         char buffer[256];
00037         while (true) {
00038             int n = client.receive(buffer, sizeof(buffer));
00039             if (n <= 0) break;            
00040             // print received message to terminal
00041             buffer[n] = '\0';
00042             printf("Received message from Client :'%s'\n",buffer);
00043             
00044             // reverse the message
00045             char temp;
00046             for(int f = 0, l = n-1; f<l; f++,l--){
00047                 temp = buffer[f];
00048                 if(temp=='1')
00049                 {
00050                             myled1 = 1;
00051                             myled2 = 1;
00052                             myled3 = 1;
00053                             myled4 = 1;
00054                 }
00055                 if(temp=='0')
00056                 {
00057                             myled1 = 0;
00058                             myled2 = 0;
00059                             myled3 = 0;
00060                             myled4 = 0;
00061                 }
00062                 if(temp=='5')
00063                 {
00064                             RelayLED = !RelayLED;
00065                 }
00066                 if(temp=='6')
00067                 {
00068                             RelayPUMP = !RelayPUMP;
00069                 }
00070                 buffer[f] = buffer[l];
00071                 buffer[l] = temp;
00072                 }
00073             
00074             // print reversed message to terminal
00075             printf("Sending message to Client: '%s'\n",buffer);
00076             
00077             // Echo received message back to client
00078             client.send_all(buffer, n);
00079             if (n <= 0) break;
00080         }
00081         
00082         client.close();
00083     }
00084 }
00085