Zoltan Hudak / Mbed 2 deprecated WebSwitch_WIZ550io

Dependencies:   W5500Interface mbed

Files at this revision

API Documentation at this revision

Comitter:
hudakz
Date:
Mon May 01 20:04:30 2017 +0000
Parent:
5:458d9d7b5c1b
Commit message:
Button added.

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Mon Feb 08 22:52:27 2016 +0000
+++ b/main.cpp	Mon May 01 20:04:30 2017 +0000
@@ -13,6 +13,9 @@
 
 using namespace     std;
 
+const int OFF = 0;
+const int ON  = 1;
+
 Serial              serial(USBTX, USBRX);
 
 #if defined(TARGET_LPC1768)
@@ -64,6 +67,7 @@
 
 DigitalOut          sw(LED1);   // Change LED1 to a pin of your choice.
                                 // However, make sure that it does not collide with any of the SPI pins
+float               roomTemp = 21.8;    // A temperature sensor output
 
 const string        PASSWORD = "secret";    // change as you like
 const string        HTTP_OK = "HTTP/1.0 200 OK";
@@ -73,40 +77,39 @@
 string              httpHeader;     // HTTP header
 string              httpContent;    // HTTP content
 
-// analyse the url given
-// return values: -1 invalid password
-//                -2 no command given but password valid
-//                -3 just refresh page
-//                 0 switch off
-//                 1 switch on
-//
-//                The string passed to this function will look like this:
-//                GET /password HTTP/1.....
-//                GET /password/ HTTP/1.....
-//                GET /password/?sw=1 HTTP/1.....
-
-//                GET /password/?sw=0 HTTP/1.....
-int8_t analyseGetURL(string& str) {
-    if(str.substr(5, PASSWORD.size()) != PASSWORD)
+/**
+ * @brief   Analyses the received URL
+ * @note    The string passed to this function will look like this:
+ *          GET /password HTTP/1.....
+ *          GET /password/ HTTP/1.....
+ *          GET /password/?sw=1 HTTP/1.....
+ *          GET /password/?sw=0 HTTP/1.....
+ * @param   url URL string
+ * @retval -1 invalid password
+ *         -2 no command given but password valid
+ *         -3 just refresh page
+ *          0 switch off
+ *          1 switch on
+ */
+int8_t analyseURL(string& url) {
+    if(url.substr(5, PASSWORD.size()) != PASSWORD)
         return(-1);
 
     uint8_t pos = 5 + PASSWORD.size();
 
-    if(str.substr(pos, 1) == " ")
+    if(url.substr(pos, 1) == " ")
         return(-2);
 
-    if(str.substr(pos, 1) != "/")
+    if(url.substr(pos++, 1) != "/")
         return(-1);
 
-    pos++;
-
-    string  cmd(str.substr(pos, 5));
+    string  cmd(url.substr(pos, 5));
 
     if(cmd == "?sw=0")
-        return(0);
+        return(OFF);
 
     if(cmd == "?sw=1")
-        return(1);
+        return(ON);
 
     return(-3);
 }
@@ -134,21 +137,27 @@
  * @param
  * @retval
  */
-string& httpPage(uint8_t status) {
-    httpContent = "<h2>Web Switch</h2>\r\n";
+string& showWebPage(uint8_t status) {
+    char roomTempStr[5];
+
+    //roomTemp = ds1820.read();
+    sprintf(roomTempStr, "%3.1f", roomTemp);
 
-    if(status == 1) {
-        httpContent += "<pre>\r\n  <font color=#FF0000>ON</font>";
-        httpContent += " <a href=\"./?sw=0\">[switch off]</a>\r\n";
+    httpContent = "<h2><a href=\".\" title=\"Click to refresh the page\">Smart Home</a></h2>"; 
+    httpContent += "<pre>Temperature:\t" + string(roomTempStr) + "&deg;C\r\n</pre>";
+
+    if(status == ON) {
+        httpContent += "<pre>\r\nHeating:\t<font color=#FF0000>On </font>";
+        httpContent += " <a href=\"./?sw=0\"><button>Turn off</button></a>\r\n";
     }
     else {
-        httpContent += "<pre>\r\n  <font color=#00FF00>OFF</font>";
-        httpContent += " <a href=\"./?sw=1\">[switch on]</a>\r\n";
+        httpContent += "<pre>\r\nHeating:\t<font color=#999999>Off</font>";
+        httpContent += " <a href=\"./?sw=1\"><button>Turn on</button></a>\r\n";
     }
 
-    httpContent += "  <a href=\".\">[refresh status]</a>\r\n";
     httpContent += "</pre>\r\n";
     httpContent += "<hr>\r\n";
+    httpContent += "<pre>2017 ARMmbed</pre>";
     return httpContent;
 }
 
@@ -232,7 +241,6 @@
     while(serverIsListening) {
         if(server.accept(client) >= 0) {
             char    buf[1024] = { };
-            size_t  size = 0;
             
             serial.printf("Client connected!\n\rIP: %s\n\r", client.get_address());
             
@@ -246,8 +254,6 @@
                 break;
 
             default:
-                size = strlen(buf);
-
                 string  received((char*)buf);
 
                 if(received.substr(0, 3) != "GET") {
@@ -266,7 +272,7 @@
                     continue;
                 }
 
-                int cmd = analyseGetURL(received);
+                int cmd = analyseURL(received);
 
                 if(cmd == -2) {
 
@@ -285,16 +291,16 @@
                     continue;
                 }
 
-                if(cmd == 1) {
-                    sw = 1; // switch on
+                if(cmd == ON) {
+                    sw = ON;    // turn the switch on
                 }
 
-                if(cmd == 0) {
-                    sw = 0; // switch off
+                if(cmd == OFF) {
+                    sw = OFF;   // turn the switch off
                 }
 
                 httpHeader = HTTP_OK;
-                sendHTTP(client, httpHeader, httpPage(sw));
+                sendHTTP(client, httpHeader, showWebPage(sw));
             }
             closeClient();
         }
--- a/mbed.bld	Mon Feb 08 22:52:27 2016 +0000
+++ b/mbed.bld	Mon May 01 20:04:30 2017 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/f141b2784e32
\ No newline at end of file
+https://mbed.org/users/mbed_official/code/mbed/builds/794e51388b66
\ No newline at end of file