A simple web server that can be bound to either the EthernetInterface or the WiflyInterface.

Dependents:   Smart-WiFly-WebServer WattEye X10Svr SSDP_Server

Revision:
10:9c8d2c6a3469
Parent:
9:2ea342765c9d
Child:
11:17d84c41a7b3
--- a/SW_HTTPServer.cpp	Thu Jul 04 01:58:13 2013 +0000
+++ b/SW_HTTPServer.cpp	Sat Jul 27 23:47:31 2013 +0000
@@ -99,7 +99,7 @@
 //    client.set_blocking(false, 0);
 //    server->accept(client);
     ResetPerformanceData();
-    timer.start();
+    PerformanceTimer.start();
 }
 
 HTTPServer::~HTTPServer()
@@ -155,7 +155,7 @@
     static state op = Idle;
     static char * bPtr = headerbuffer;
     int n;
-    static int t_ref;       // reference point for the timer
+    static int t_ref;       // reference point for the PerformanceTimer
 
 #ifdef DEBUG
     static state lastOp = Reset;
@@ -171,11 +171,11 @@
             break;
 
         case Idle:
-            timer.reset();
+            PerformanceTimer.reset();
             bPtr = headerbuffer;
             if (0 == server->accept(client)) { // client.receive(bPtr, 0)) {  // server->accept(client) == 0) {
                 op = Receiving;
-                t_ref = timer.read_us();
+                t_ref = PerformanceTimer.read_us();
 #ifdef DEBUG
                 pc->printf("Accept at %d\r\n", t_ref);
 #endif
@@ -402,7 +402,7 @@
 {
     bool res;
 
-    res = wifly->close();
+    res = server->close();  //wifly->close();
 #ifdef DEBUG
     pc->printf("close connection returned %d\r\n", res);
 #endif
@@ -560,7 +560,7 @@
     // Bad hack to have to do this here, but it isn't being set in the
     // underlying layer, and this is what allows it to properly "close"
     // when it is done.
-    wifly->setConnectionState(true);
+//    wifly->setConnectionState(true);
     // Buffer could have partial, but the double \r\n is the key
     //      GET /QueryString HTTP/1.1\r\n
     //      GET /QueryString HTTP/1.1\r\nHost: 192.168.1.140\r\nCache-Con
@@ -591,13 +591,15 @@
                     queryType = (char *)mymalloc(strlen("GET")+1);
                     strcpy(queryType, "GET");
                 }
+                //printf("GET: %s\r\n", queryString);
             } else if (strstr(soRec, "POST ") == soRec) {
                 Extract(soRec, "POST", &queryString);
                 if (queryString) {
                     queryType = (char *)mymalloc(strlen("POST")+1);
                     strcpy(queryType, "POST");
                 }
-            }            
+                //printf("POST: %s\r\n", queryString);
+            }
             Extract(soRec, "Host: ", &hostString);
             Extract(soRec, "Content-Length: ", &contentLength);
             Extract(soRec, "Content-Type: ", &contentType);
@@ -622,7 +624,7 @@
             //for (int i=0; i<paramcount; i++)
             //    pc->printf("param %d '%s'='%s'\r\n", i, params[i].name, params[i].value);
         } else {
-            pc->printf("ERROR: queryString not found\r\n");
+            pc->printf("ERROR: queryString not found in (%s)\r\n", soRec);
         }
         advanceState = true;
         buffer[0] = 0;
@@ -702,7 +704,7 @@
 
 int HTTPServer::RecordPerformanceData(SW_PerformanceParam * param, int refTime)
 {
-    int t_now = timer.read_us();
+    int t_now = PerformanceTimer.read_us();
     param->TotalTime_us += (t_now - refTime);
     param->Samples++;
     if ((t_now - refTime) > param->MaxTime_us)