yang hengcheng / Mbed 2 deprecated TCP_LED_Control-WIZwiki-W7500

Dependencies:   WIZnetInterface mbed-src mbed mbed

Fork of TCP_LED_Control-WIZwiki-W7500 by WIZnet

Committer:
yhc
Date:
Mon Jul 04 09:17:07 2016 +0000
Revision:
14:60333a427d2c
Parent:
13:31f4ecf83cca
123

Who changed what in which revision?

UserRevisionLine numberNew contents of line
justinkim 8:f837e0d255e8 1 #include "mbed.h"
justinkim 8:f837e0d255e8 2 #include "EthernetInterface.h"
hjjeon 9:a63ff95c354b 3
hjjeon 11:0da8667a9201 4 #define ECHO_SERVER_PORT 7
hjjeon 9:a63ff95c354b 5
kzl108 12:aee11a1d7f14 6 DigitalOut myled(LED1);
kzl108 12:aee11a1d7f14 7
kzl108 12:aee11a1d7f14 8 int compare_strings(char [], char []);
kzl108 12:aee11a1d7f14 9
hjjeon 11:0da8667a9201 10 int main (void)
justinkim 8:f837e0d255e8 11 {
kzl108 12:aee11a1d7f14 12 myled = 1; // LED OFF in WIZwiki-W7500
kzl108 12:aee11a1d7f14 13 int flag=1;
kzl108 12:aee11a1d7f14 14
justinkim 8:f837e0d255e8 15 printf("Wait a second...\r\n");
kzl108 12:aee11a1d7f14 16 uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x55, 0x51, 0x52};
hjjeon 11:0da8667a9201 17 EthernetInterface eth;
hjjeon 11:0da8667a9201 18 eth.init(mac_addr); //Use DHCP
justinkim 8:f837e0d255e8 19 eth.connect();
justinkim 8:f837e0d255e8 20 printf("Server IP Address is %s\r\n", eth.getIPAddress());
hjjeon 11:0da8667a9201 21
hjjeon 11:0da8667a9201 22 TCPSocketServer server;
hjjeon 11:0da8667a9201 23 server.bind(ECHO_SERVER_PORT);
hjjeon 11:0da8667a9201 24 server.listen();
hjjeon 11:0da8667a9201 25
hjjeon 11:0da8667a9201 26 while (true)
hjjeon 11:0da8667a9201 27 {
hjjeon 11:0da8667a9201 28 printf("Wait for new connection...\r\n");
hjjeon 11:0da8667a9201 29 TCPSocketConnection client;
hjjeon 11:0da8667a9201 30 server.accept(client);
hjjeon 11:0da8667a9201 31 client.set_blocking(false, 15000); // Timeout after (1.5)s
hjjeon 11:0da8667a9201 32
hjjeon 11:0da8667a9201 33 printf("Connection from: %s\r\n", client.get_address());
hjjeon 11:0da8667a9201 34 char buffer[256];
hjjeon 11:0da8667a9201 35 while (true) {
hjjeon 11:0da8667a9201 36 int n = client.receive(buffer, sizeof(buffer));
hjjeon 11:0da8667a9201 37 if (n <= 0) break;
hjjeon 11:0da8667a9201 38
hjjeon 11:0da8667a9201 39 // print received message to terminal
hjjeon 11:0da8667a9201 40 buffer[n] = '\0';
hjjeon 11:0da8667a9201 41 printf("Received message from Client :'%s'\r\n",buffer);
kzl108 13:31f4ecf83cca 42
kzl108 12:aee11a1d7f14 43 // LED control if received message matches pre-defined command
kzl108 12:aee11a1d7f14 44 char command_buf[256] = {'L', 'E', 'D', '_', 'O', 'N', '\0'};
kzl108 12:aee11a1d7f14 45
kzl108 12:aee11a1d7f14 46 char string[256];
kzl108 12:aee11a1d7f14 47 strcpy (string, command_buf);
kzl108 12:aee11a1d7f14 48 printf("Received command : %s\n", string);
kzl108 12:aee11a1d7f14 49
kzl108 12:aee11a1d7f14 50 flag = compare_strings(buffer, command_buf);
kzl108 12:aee11a1d7f14 51
kzl108 12:aee11a1d7f14 52 if (flag == 0) {
kzl108 12:aee11a1d7f14 53 myled = 0; // LED ON in WIZwiki-W7500
kzl108 12:aee11a1d7f14 54 printf("LED is turned on!\r\n");
kzl108 12:aee11a1d7f14 55 }
kzl108 12:aee11a1d7f14 56 else {
kzl108 12:aee11a1d7f14 57 myled = 1;
kzl108 12:aee11a1d7f14 58 printf("LED is turned off!\r\n");
kzl108 12:aee11a1d7f14 59 }
hjjeon 11:0da8667a9201 60
hjjeon 11:0da8667a9201 61 // reverse the message
hjjeon 11:0da8667a9201 62 char temp;
hjjeon 11:0da8667a9201 63 for(int f = 0, l = n-1; f<l; f++,l--){
hjjeon 11:0da8667a9201 64 temp = buffer[f];
hjjeon 11:0da8667a9201 65 buffer[f] = buffer[l];
hjjeon 11:0da8667a9201 66 buffer[l] = temp;
hjjeon 11:0da8667a9201 67 }
hjjeon 11:0da8667a9201 68
hjjeon 11:0da8667a9201 69 // print reversed message to terminal
hjjeon 11:0da8667a9201 70 printf("Sending message to Client: '%s'\r\n",buffer);
hjjeon 11:0da8667a9201 71
hjjeon 11:0da8667a9201 72 // Echo received message back to client
hjjeon 11:0da8667a9201 73 client.send_all(buffer, n);
hjjeon 11:0da8667a9201 74 if (n <= 0) break;
hjjeon 11:0da8667a9201 75 }
hjjeon 11:0da8667a9201 76
hjjeon 11:0da8667a9201 77 client.close();
hjjeon 9:a63ff95c354b 78 }
justinkim 8:f837e0d255e8 79
justinkim 8:f837e0d255e8 80 }
justinkim 8:f837e0d255e8 81
kzl108 12:aee11a1d7f14 82 int compare_strings(char a[], char b[])
kzl108 12:aee11a1d7f14 83 {
kzl108 12:aee11a1d7f14 84 int c = 0;
kzl108 12:aee11a1d7f14 85
kzl108 12:aee11a1d7f14 86 while (a[c] == b[c]) {
kzl108 12:aee11a1d7f14 87 if (a[c] == '\0' || b[c] == '\0')
kzl108 12:aee11a1d7f14 88 break;
kzl108 12:aee11a1d7f14 89 c++;
kzl108 12:aee11a1d7f14 90 }
kzl108 12:aee11a1d7f14 91
kzl108 12:aee11a1d7f14 92 if (a[c] == '\0' && b[c] == '\0')
kzl108 12:aee11a1d7f14 93 return 0;
kzl108 12:aee11a1d7f14 94 else
kzl108 12:aee11a1d7f14 95 return -1;
kzl108 12:aee11a1d7f14 96 }