HTTP server for GSwifi see: http://mbed.org/users/gsfan/notebook/gainspan_wifi/

Dependencies:   GSwifi mbed

Committer:
gsfan
Date:
Thu Nov 08 03:20:57 2012 +0000
Revision:
3:b382ac9e8754
Parent:
2:15b6f6754f76
Child:
4:29ecfd0f8723
fix

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gsfan 1:d0ec28e041d6 1 /*
gsfan 1:d0ec28e041d6 2 * HTTP server for GSwifi
gsfan 1:d0ec28e041d6 3 *
gsfan 1:d0ec28e041d6 4 * create the index.htm for LocalFileSystem.
gsfan 3:b382ac9e8754 5 * html access http://IP address/ , http://IP address/test/
gsfan 3:b382ac9e8754 6 *
gsfan 3:b382ac9e8754 7 * CGI access http://IP address/cgi-bin/hoge?hage
gsfan 1:d0ec28e041d6 8 */
gsfan 1:d0ec28e041d6 9
gsfan 0:540fed81e29b 10 #include "mbed.h"
gsfan 0:540fed81e29b 11 #include "GSwifi.h"
gsfan 0:540fed81e29b 12
gsfan 0:540fed81e29b 13 #define PORT 80
gsfan 0:540fed81e29b 14
gsfan 1:d0ec28e041d6 15 #define SECURE GSSEC_WPA2_PSK
gsfan 2:15b6f6754f76 16 #define SSID "SSID"
gsfan 2:15b6f6754f76 17 #define PASS "passkey"
gsfan 0:540fed81e29b 18
gsfan 1:d0ec28e041d6 19 // GSwifi gs(p13, p14); // TX, RX (no flow control)
gsfan 1:d0ec28e041d6 20 GSwifi gs(p13, p14, p12, P0_22); // TX, RX, CTS, RTS
gsfan 1:d0ec28e041d6 21 DigitalOut gs_reset(p9);
gsfan 0:540fed81e29b 22
gsfan 0:540fed81e29b 23 LocalFileSystem local("local");
gsfan 0:540fed81e29b 24
gsfan 0:540fed81e29b 25 Serial pc(USBTX, USBRX);
gsfan 0:540fed81e29b 26 DigitalOut led1(LED1), led2(LED2);
gsfan 0:540fed81e29b 27
gsfan 1:d0ec28e041d6 28 void cgi (int cid, GS_httpd *gshttpd) {
gsfan 1:d0ec28e041d6 29 int i;
gsfan 1:d0ec28e041d6 30
gsfan 1:d0ec28e041d6 31 pc.printf("CGI %d: %s ? %s '%s' %d\r\n", cid, gshttpd->file, gshttpd->query, gshttpd->buf, gshttpd->len);
gsfan 1:d0ec28e041d6 32
gsfan 1:d0ec28e041d6 33 gs.send(cid, "HTTP/1.1 200 OK\r\n", 17);
gsfan 1:d0ec28e041d6 34 gs.send(cid, "Content-type: text/plain\r\n", 26);
gsfan 1:d0ec28e041d6 35 gs.send(cid, "\r\n", 2);
gsfan 1:d0ec28e041d6 36
gsfan 1:d0ec28e041d6 37 gs.send(cid, "REQUEST_METHOD: ", 16);
gsfan 1:d0ec28e041d6 38 if (gshttpd[cid].type == GSPROT_HTTPGET) {
gsfan 1:d0ec28e041d6 39 gs.send(cid, "GET\r\n", 5);
gsfan 1:d0ec28e041d6 40 } else {
gsfan 1:d0ec28e041d6 41 gs.send(cid, "POST\r\n", 6);
gsfan 1:d0ec28e041d6 42 }
gsfan 1:d0ec28e041d6 43 gs.send(cid, "SCRIPT_NAME: ", 13);
gsfan 1:d0ec28e041d6 44 gs.send(cid, gshttpd->file, strlen(gshttpd->file));
gsfan 1:d0ec28e041d6 45 gs.send(cid, "\r\n", 2);
gsfan 1:d0ec28e041d6 46 gs.send(cid, "QUERY_STRING: ", 14);
gsfan 1:d0ec28e041d6 47 gs.send(cid, gshttpd->query, strlen(gshttpd->query));
gsfan 1:d0ec28e041d6 48 gs.send(cid, "\r\n", 2);
gsfan 1:d0ec28e041d6 49 gs.send(cid, "POST_BODY: ", 11);
gsfan 1:d0ec28e041d6 50 gs.send(cid, gshttpd->buf, strlen(gshttpd->buf));
gsfan 1:d0ec28e041d6 51 gs.send(cid, "\r\n", 2);
gsfan 1:d0ec28e041d6 52
gsfan 1:d0ec28e041d6 53 }
gsfan 1:d0ec28e041d6 54
gsfan 0:540fed81e29b 55 int main () {
gsfan 0:540fed81e29b 56 IpAddr ipaddr, netmask, gateway, nameserver;
gsfan 0:540fed81e29b 57 Host host;
gsfan 0:540fed81e29b 58
gsfan 1:d0ec28e041d6 59 gs_reset = 0;
gsfan 1:d0ec28e041d6 60 wait_ms(100);
gsfan 1:d0ec28e041d6 61 gs_reset = 1;
gsfan 1:d0ec28e041d6 62 wait_ms(500);
gsfan 1:d0ec28e041d6 63
gsfan 0:540fed81e29b 64 led1 = 1;
gsfan 0:540fed81e29b 65 pc.baud(115200);
gsfan 0:540fed81e29b 66
gsfan 1:d0ec28e041d6 67 pc.printf("connecting...\r\n");
gsfan 0:540fed81e29b 68 if (gs.connect(SECURE, SSID, PASS)) {
gsfan 0:540fed81e29b 69 return -1;
gsfan 0:540fed81e29b 70 }
gsfan 0:540fed81e29b 71 gs.getAddress(ipaddr, netmask, gateway, nameserver);
gsfan 0:540fed81e29b 72 pc.printf("ip %d.%d.%d.%d\r\n", ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3]);
gsfan 0:540fed81e29b 73
gsfan 0:540fed81e29b 74 led2 = 1;
gsfan 0:540fed81e29b 75 pc.printf("httpd\r\n");
gsfan 0:540fed81e29b 76 gs.httpd(PORT);
gsfan 1:d0ec28e041d6 77 gs.attach_httpd("/test/", "/local/");
gsfan 1:d0ec28e041d6 78 gs.attach_httpd("/example/", "/local/sample/");
gsfan 1:d0ec28e041d6 79 gs.attach_httpd("/cgi-bin/", &cgi);
gsfan 0:540fed81e29b 80 gs.attach_httpd("/", "/local/");
gsfan 0:540fed81e29b 81
gsfan 0:540fed81e29b 82 for (;;) {
gsfan 0:540fed81e29b 83 gs.poll();
gsfan 0:540fed81e29b 84
gsfan 0:540fed81e29b 85 wait_ms(50);
gsfan 0:540fed81e29b 86 led1 = !led1;
gsfan 0:540fed81e29b 87 led2 = 0;
gsfan 0:540fed81e29b 88 }
gsfan 0:540fed81e29b 89 }