Hiroshi Yamaguchi / Mbed 2 deprecated SimpleSocketExamples

Dependencies:   EthernetInterface SimpleSocket mbed-rtos mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers webcontroller.cpp Source File

webcontroller.cpp

00001 #include "SimpleSocket.h"
00002 
00003 void webcontroller() {
00004     const char *response0 =
00005         "HTTP/1.1 200 OK\r\n"
00006         "Content-Type: text/html\r\n"
00007         "\r\n"
00008         "<html>\r\n"
00009         "<head><title>mbed LED1 Controller</title></head>\r\n"
00010         "<body>\r\n"
00011         "<h4>LED1 Status & Change</h4>\r\n";
00012 
00013     const char *response1 =
00014         "<form method=\"GET\" action=\"/\">\r\n"
00015         "<input type=\"radio\" name=\"LED\" value=\"1\" %s onclick=\"submit();\"/>ON\r\n"
00016         "<input type=\"radio\" name=\"LED\" value=\"0\" %s onclick=\"submit();\"/>OFF\r\n"
00017         "</form>\r\n";
00018         
00019     const char *response2 =
00020         "</body>\r\n"
00021         "</html>\r\n";
00022 
00023     DigitalOut led1(LED1);
00024 
00025     ServerSocket server(80);
00026     
00027     printf("webcontroller: %s\n", EthernetInterface::getIPAddress());
00028 
00029     while (true) {
00030         ClientSocket socket = server.accept();
00031         while (socket) {
00032             if (socket.available()) {
00033                 char buf[512] = {};
00034                 socket.read(buf, sizeof(buf) - 1);
00035                 printf("\r\n%s\r\n", buf);
00036                 led1 = strncmp("GET /?LED=1", buf, 11) == 0;
00037 
00038                 printf("LED1 = %d\r\n\r\n", led1.read());
00039                 printf(response0);
00040                 printf(response1, led1 ? "checked" : "", led1 ? "" : "checked");
00041                 printf(response2);
00042 
00043                 socket.printf(response0);
00044                 socket.printf(response1, led1 ? "checked" : "", led1 ? "" : "checked");
00045                 socket.printf(response2);
00046                 socket.close();
00047             }
00048         }
00049     }
00050 }