SimpleSocket 1.0 examples

Dependencies:   EthernetNetIf SimpleSocket 1.0 mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers webcontroller.cpp Source File

webcontroller.cpp

00001 #include "EthernetNetIf.h"
00002 #include "SimpleSocket.h"
00003 
00004 void webcontroller() {
00005     const char *response0 =
00006         "HTTP/1.1 200 OK\r\n"
00007         "Content-Type: text/html\r\n"
00008         "\r\n"
00009         "<html>\n"
00010         "<head><title>mbed LED1 Controller</title></head>\n"
00011         "<body>\n"
00012         "<h4>LED1 Status & Change</h4>\n";
00013 
00014     const char *response1 =
00015         "<form method=\"GET\" action=\"/\">\n"
00016         "<input type=\"radio\" name=\"LED\" value=\"1\" %s onclick=\"submit();\"/>ON\n"
00017         "<input type=\"radio\" name=\"LED\" value=\"0\" %s onclick=\"submit();\"/>OFF\n"
00018         "</form>\n";
00019     const char *response2 =
00020         "</body>\n"
00021         "</html>\n";
00022 
00023     DigitalOut led1(LED1);
00024     EthernetNetIf eth;
00025     eth.setup();
00026 
00027     ServerSocket server(80);
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("\n%s\n", buf);
00036                 led1 = strncmp("GET /?LED=1", buf, 11) == 0;
00037 
00038                 printf("LED1 = %d\n\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 }