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

Dependencies:   GSwifi mbed

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