Low Memory HTTP Server (LPC1114FN28 + WIZ820io)

Dependencies:   Tiny-HTTPD WIZ820ioInterface mbed-rpc mbed

Fork of HTTPD_sample by Suga koubou

Committer:
okini3939
Date:
Wed Nov 13 02:00:05 2013 +0000
Revision:
0:c4a353ed707d
Child:
1:2971dd3e5168
1st build

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 0:c4a353ed707d 1 #include "mbed.h"
okini3939 0:c4a353ed707d 2 #include "rtos.h"
okini3939 0:c4a353ed707d 3 #include "EthernetInterface.h"
okini3939 0:c4a353ed707d 4 #include "HTTPD.h"
okini3939 0:c4a353ed707d 5
okini3939 0:c4a353ed707d 6 EthernetInterface *eth;
okini3939 0:c4a353ed707d 7 HTTPD *httpd;
okini3939 0:c4a353ed707d 8
okini3939 0:c4a353ed707d 9 Serial pc(USBTX, USBRX);
okini3939 0:c4a353ed707d 10 LocalFileSystem local("local");
okini3939 0:c4a353ed707d 11 DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4);
okini3939 0:c4a353ed707d 12
okini3939 0:c4a353ed707d 13 void callback_cgi (int id) {
okini3939 0:c4a353ed707d 14 int i, n;
okini3939 0:c4a353ed707d 15 char buf[256];
okini3939 0:c4a353ed707d 16
okini3939 0:c4a353ed707d 17 strcpy(buf, httpd->getFilename(id));
okini3939 0:c4a353ed707d 18 strcat(buf, "\r\n");
okini3939 0:c4a353ed707d 19 strcat(buf, httpd->getQueryString(id));
okini3939 0:c4a353ed707d 20 strcat(buf, "\r\n");
okini3939 0:c4a353ed707d 21 n = strlen(buf);
okini3939 0:c4a353ed707d 22
okini3939 0:c4a353ed707d 23 i = httpd->receive(id, &buf[n], sizeof(buf) - n);
okini3939 0:c4a353ed707d 24 if (i < 0) return;
okini3939 0:c4a353ed707d 25 i += n;
okini3939 0:c4a353ed707d 26 buf[i] = 0;
okini3939 0:c4a353ed707d 27
okini3939 0:c4a353ed707d 28 printf("CGI %d %s\r\n", id, buf);
okini3939 0:c4a353ed707d 29 httpd->send(id, buf, i, "Content-Type: text/plain\r\n");
okini3939 0:c4a353ed707d 30 }
okini3939 0:c4a353ed707d 31
okini3939 0:c4a353ed707d 32 void callback_ws (int id) {
okini3939 0:c4a353ed707d 33 int i;
okini3939 0:c4a353ed707d 34 char buf[256];
okini3939 0:c4a353ed707d 35
okini3939 0:c4a353ed707d 36 i = httpd->receive(id, buf, sizeof(buf));
okini3939 0:c4a353ed707d 37 if (i < 0) return;
okini3939 0:c4a353ed707d 38 buf[i] = 0;
okini3939 0:c4a353ed707d 39
okini3939 0:c4a353ed707d 40 printf("WS %d %s\r\n", id, buf);
okini3939 0:c4a353ed707d 41 httpd->sendWebsocket(id, buf, i);
okini3939 0:c4a353ed707d 42 }
okini3939 0:c4a353ed707d 43
okini3939 0:c4a353ed707d 44 int main () {
okini3939 0:c4a353ed707d 45
okini3939 0:c4a353ed707d 46 pc.baud(115200);
okini3939 0:c4a353ed707d 47 printf("HTTP Server...\r\n");
okini3939 0:c4a353ed707d 48
okini3939 0:c4a353ed707d 49 eth = new EthernetInterface;
okini3939 0:c4a353ed707d 50 eth->init(); //Use DHCP
okini3939 0:c4a353ed707d 51 // eth->init("192.168.1.2", "255.255.255.0", "192.168.1.1");
okini3939 0:c4a353ed707d 52 if (eth->connect()) return -1;
okini3939 0:c4a353ed707d 53 printf("IP Address is %s\r\n", eth->getIPAddress());
okini3939 0:c4a353ed707d 54
okini3939 0:c4a353ed707d 55 httpd = new HTTPD;
okini3939 0:c4a353ed707d 56 httpd->attach("/cgi-bin/", &callback_cgi);
okini3939 0:c4a353ed707d 57 httpd->attach("/ws/", &callback_ws);
okini3939 0:c4a353ed707d 58 httpd->attach("/", "/local/");
okini3939 0:c4a353ed707d 59 httpd->start(80);
okini3939 0:c4a353ed707d 60 printf("httpd ready\r\n");
okini3939 0:c4a353ed707d 61 led1 = 1;
okini3939 0:c4a353ed707d 62
okini3939 0:c4a353ed707d 63 for (;;) {
okini3939 0:c4a353ed707d 64 }
okini3939 0:c4a353ed707d 65 }