WIZ Proto Maker 3th Lab 3

Dependencies:   WIZnetInterface mbed

Committer:
Ricky_Kwon
Date:
Wed Feb 03 03:04:46 2016 +0000
Revision:
0:722e7ff3a065
WIZ Proto Makers 3th Lab 3

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ricky_Kwon 0:722e7ff3a065 1 #include "mbed.h"
Ricky_Kwon 0:722e7ff3a065 2 #include "EthernetInterface.h"
Ricky_Kwon 0:722e7ff3a065 3
Ricky_Kwon 0:722e7ff3a065 4 #define WEB_SERVER_PORT 80
Ricky_Kwon 0:722e7ff3a065 5 char send_dat[1024]={0,};
Ricky_Kwon 0:722e7ff3a065 6 uint16_t calcu_len(void);
Ricky_Kwon 0:722e7ff3a065 7
Ricky_Kwon 0:722e7ff3a065 8 DigitalOut myled(LED1);
Ricky_Kwon 0:722e7ff3a065 9
Ricky_Kwon 0:722e7ff3a065 10 int main (void)
Ricky_Kwon 0:722e7ff3a065 11 {
Ricky_Kwon 0:722e7ff3a065 12 printf("Wait a second...\r\n");
Ricky_Kwon 0:722e7ff3a065 13 uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02};
Ricky_Kwon 0:722e7ff3a065 14 const char ip_addr[] = "192.168.0.222";
Ricky_Kwon 0:722e7ff3a065 15 const char mask_addr[] = "255.255.255.0";
Ricky_Kwon 0:722e7ff3a065 16 const char gateway_addr[] = "192.168.0.1";
Ricky_Kwon 0:722e7ff3a065 17
Ricky_Kwon 0:722e7ff3a065 18 EthernetInterface eth;
Ricky_Kwon 0:722e7ff3a065 19 //eth.init(mac_addr); //Use DHCP
Ricky_Kwon 0:722e7ff3a065 20 eth.init(mac_addr, ip_addr, mask_addr, gateway_addr); //Use Static
Ricky_Kwon 0:722e7ff3a065 21 eth.connect();
Ricky_Kwon 0:722e7ff3a065 22 printf("Server IP Address is %s\r\n", eth.getIPAddress());
Ricky_Kwon 0:722e7ff3a065 23
Ricky_Kwon 0:722e7ff3a065 24 TCPSocketServer server;
Ricky_Kwon 0:722e7ff3a065 25 server.bind(WEB_SERVER_PORT);
Ricky_Kwon 0:722e7ff3a065 26 server.listen();
Ricky_Kwon 0:722e7ff3a065 27
Ricky_Kwon 0:722e7ff3a065 28 while (true)
Ricky_Kwon 0:722e7ff3a065 29 {
Ricky_Kwon 0:722e7ff3a065 30 printf("Wait for new connection...\r\n");
Ricky_Kwon 0:722e7ff3a065 31 TCPSocketConnection client;
Ricky_Kwon 0:722e7ff3a065 32 server.accept(client);
Ricky_Kwon 0:722e7ff3a065 33 client.set_blocking(false, 15000); // Timeout after (1.5)s
Ricky_Kwon 0:722e7ff3a065 34
Ricky_Kwon 0:722e7ff3a065 35 printf("Connection from: %s\r\n", client.get_address());
Ricky_Kwon 0:722e7ff3a065 36 char buffer[256];
Ricky_Kwon 0:722e7ff3a065 37 char dat[128];
Ricky_Kwon 0:722e7ff3a065 38 char *dat_temp;
Ricky_Kwon 0:722e7ff3a065 39
Ricky_Kwon 0:722e7ff3a065 40 memset(dat, 0, sizeof(dat));
Ricky_Kwon 0:722e7ff3a065 41 memset(send_dat, 0, sizeof(send_dat));
Ricky_Kwon 0:722e7ff3a065 42 memset(buffer, 0, sizeof(buffer));
Ricky_Kwon 0:722e7ff3a065 43
Ricky_Kwon 0:722e7ff3a065 44 while (true) {
Ricky_Kwon 0:722e7ff3a065 45
Ricky_Kwon 0:722e7ff3a065 46 wait(0.5);
Ricky_Kwon 0:722e7ff3a065 47 int n = client.receive_all(buffer, sizeof(buffer));
Ricky_Kwon 0:722e7ff3a065 48 if (n <= 0) break;
Ricky_Kwon 0:722e7ff3a065 49 //buffer[n] = '\0';
Ricky_Kwon 0:722e7ff3a065 50
Ricky_Kwon 0:722e7ff3a065 51 printf("rev_dat : %s\r\n", buffer);
Ricky_Kwon 0:722e7ff3a065 52
Ricky_Kwon 0:722e7ff3a065 53
Ricky_Kwon 0:722e7ff3a065 54 if((buffer[0]=='G')&&(buffer[1]=='E')&&(buffer[2]=='T')&&(buffer[3]==' '))// GET_Request
Ricky_Kwon 0:722e7ff3a065 55 {
Ricky_Kwon 0:722e7ff3a065 56 if((buffer[13]=='?'))
Ricky_Kwon 0:722e7ff3a065 57 {
Ricky_Kwon 0:722e7ff3a065 58 if((buffer[18]=='O')&&(buffer[19]=='F'))
Ricky_Kwon 0:722e7ff3a065 59 {
Ricky_Kwon 0:722e7ff3a065 60 printf("---LED OFF---\r\n");
Ricky_Kwon 0:722e7ff3a065 61 myled = 1;
Ricky_Kwon 0:722e7ff3a065 62 dat_temp = "HTTP/1.1 200 OK\r\n"; strcat(dat, dat_temp);
Ricky_Kwon 0:722e7ff3a065 63 dat_temp = "Content-Type: text/html\r\n"; strcat(dat, dat_temp);
Ricky_Kwon 0:722e7ff3a065 64 dat_temp = "Connection: close\r\n"; strcat(dat, dat_temp);
Ricky_Kwon 0:722e7ff3a065 65
Ricky_Kwon 0:722e7ff3a065 66 sprintf(dat, "%sContent-Length: %d\r\n", dat, calcu_len()); strcat(dat, dat_temp);
Ricky_Kwon 0:722e7ff3a065 67
Ricky_Kwon 0:722e7ff3a065 68 client.send(dat, strlen(dat));
Ricky_Kwon 0:722e7ff3a065 69 printf("send_dat : %s\r\n", dat);
Ricky_Kwon 0:722e7ff3a065 70
Ricky_Kwon 0:722e7ff3a065 71 client.send(send_dat, sizeof(send_dat));
Ricky_Kwon 0:722e7ff3a065 72 printf("send_dat : %s\r\n", send_dat);
Ricky_Kwon 0:722e7ff3a065 73
Ricky_Kwon 0:722e7ff3a065 74 memset(dat, 0, sizeof(dat));
Ricky_Kwon 0:722e7ff3a065 75 memset(send_dat, 0, sizeof(send_dat));
Ricky_Kwon 0:722e7ff3a065 76 memset(buffer, 0, sizeof(buffer));
Ricky_Kwon 0:722e7ff3a065 77 }
Ricky_Kwon 0:722e7ff3a065 78 else
Ricky_Kwon 0:722e7ff3a065 79 {
Ricky_Kwon 0:722e7ff3a065 80 printf("---LED ON---\r\n");
Ricky_Kwon 0:722e7ff3a065 81 myled = 0;
Ricky_Kwon 0:722e7ff3a065 82 dat_temp = "HTTP/1.1 200 OK\r\n"; strcat(dat, dat_temp);
Ricky_Kwon 0:722e7ff3a065 83 dat_temp = "Content-Type: text/html\r\n"; strcat(dat, dat_temp);
Ricky_Kwon 0:722e7ff3a065 84 dat_temp = "Connection: close\r\n"; strcat(dat, dat_temp);
Ricky_Kwon 0:722e7ff3a065 85
Ricky_Kwon 0:722e7ff3a065 86 sprintf(dat, "%sContent-Length: %d\r\n", dat, calcu_len()); strcat(dat, dat_temp);
Ricky_Kwon 0:722e7ff3a065 87
Ricky_Kwon 0:722e7ff3a065 88 client.send(dat, strlen(dat));
Ricky_Kwon 0:722e7ff3a065 89 printf("send_dat : %s\r\n", dat);
Ricky_Kwon 0:722e7ff3a065 90
Ricky_Kwon 0:722e7ff3a065 91 client.send(send_dat, sizeof(send_dat));
Ricky_Kwon 0:722e7ff3a065 92 printf("send_dat : %s\r\n", send_dat);
Ricky_Kwon 0:722e7ff3a065 93
Ricky_Kwon 0:722e7ff3a065 94 memset(dat, 0, sizeof(dat));
Ricky_Kwon 0:722e7ff3a065 95 memset(send_dat, 0, sizeof(send_dat));
Ricky_Kwon 0:722e7ff3a065 96 memset(buffer, 0, sizeof(buffer));
Ricky_Kwon 0:722e7ff3a065 97 }
Ricky_Kwon 0:722e7ff3a065 98 }
Ricky_Kwon 0:722e7ff3a065 99
Ricky_Kwon 0:722e7ff3a065 100 else
Ricky_Kwon 0:722e7ff3a065 101 {
Ricky_Kwon 0:722e7ff3a065 102 dat_temp = "HTTP/1.1 200 OK\r\n"; strcat(dat, dat_temp);
Ricky_Kwon 0:722e7ff3a065 103 dat_temp = "Content-Type: text/html\r\n"; strcat(dat, dat_temp);
Ricky_Kwon 0:722e7ff3a065 104 dat_temp = "Connection: close\r\n"; strcat(dat, dat_temp);
Ricky_Kwon 0:722e7ff3a065 105 //len = calcu_len();
Ricky_Kwon 0:722e7ff3a065 106 sprintf(dat, "%sContent-Length: %d\r\n", dat, calcu_len()); strcat(dat, dat_temp);
Ricky_Kwon 0:722e7ff3a065 107
Ricky_Kwon 0:722e7ff3a065 108 client.send(dat, strlen(dat));
Ricky_Kwon 0:722e7ff3a065 109 printf("send_dat : %s\r\n", dat);
Ricky_Kwon 0:722e7ff3a065 110
Ricky_Kwon 0:722e7ff3a065 111 client.send(send_dat, sizeof(send_dat));
Ricky_Kwon 0:722e7ff3a065 112 printf("send_dat : %s\r\n", send_dat);
Ricky_Kwon 0:722e7ff3a065 113
Ricky_Kwon 0:722e7ff3a065 114 memset(dat, 0, sizeof(dat));
Ricky_Kwon 0:722e7ff3a065 115 memset(send_dat, 0, sizeof(send_dat));
Ricky_Kwon 0:722e7ff3a065 116 memset(buffer, 0, sizeof(buffer));
Ricky_Kwon 0:722e7ff3a065 117 }
Ricky_Kwon 0:722e7ff3a065 118 }
Ricky_Kwon 0:722e7ff3a065 119
Ricky_Kwon 0:722e7ff3a065 120 }
Ricky_Kwon 0:722e7ff3a065 121
Ricky_Kwon 0:722e7ff3a065 122 client.close();
Ricky_Kwon 0:722e7ff3a065 123 }
Ricky_Kwon 0:722e7ff3a065 124
Ricky_Kwon 0:722e7ff3a065 125 }
Ricky_Kwon 0:722e7ff3a065 126 uint16_t calcu_len(void)
Ricky_Kwon 0:722e7ff3a065 127 {
Ricky_Kwon 0:722e7ff3a065 128 char * dat_temp;
Ricky_Kwon 0:722e7ff3a065 129
Ricky_Kwon 0:722e7ff3a065 130 dat_temp = "<html>\r\n"\
Ricky_Kwon 0:722e7ff3a065 131 "<body>\r\n"\
Ricky_Kwon 0:722e7ff3a065 132 "<a href='led.html?LED=ON'>LED ON</a>\r\n"\
Ricky_Kwon 0:722e7ff3a065 133 "<br>\r\n"\
Ricky_Kwon 0:722e7ff3a065 134 "<a href='led.html?LED=OFF'>LED OFF</a>\r\n"\
Ricky_Kwon 0:722e7ff3a065 135 "<body>\r\n"\
Ricky_Kwon 0:722e7ff3a065 136 "<html>\r\n";
Ricky_Kwon 0:722e7ff3a065 137 strcat(send_dat, dat_temp);
Ricky_Kwon 0:722e7ff3a065 138 return strlen(send_dat);
Ricky_Kwon 0:722e7ff3a065 139 }
Ricky_Kwon 0:722e7ff3a065 140