NNN40 run a HTTP server with RPC using Soft AP mode

Dependencies:   WIFI_API_32kRAM mbed

Fork of HTTP-Server by Francois Berder

The sample code will run as a WiFi Soft AP mode with given AP configuration setting including SSID name and password. IP address (fixed to 192.168.2.1 for the current version of WIFI_API)of AP router will be print out once Soft AP mode is operating.

User can open their web browser and go to http://192.168.2.1/. and have a try on switch on a led. Firstly, we need to create an object to control a led

/media/uploads/wgd8700/http_server2.png

Then, led can be switch on using RPC command /media/uploads/wgd8700/http_server3.png

More information cab be found from the links below

https://developer.mbed.org/users/feb11/code/HTTP-Server/

https://developer.mbed.org/cookbook/Interfacing-Using-RPC

Files at this revision

API Documentation at this revision

Comitter:
feb11
Date:
Thu Jul 18 09:39:35 2013 +0000
Parent:
8:464abd184b7b
Child:
10:8b4c3d605bf0
Commit message:
Improved error message

Changed in this revision

Formatter.cpp Show annotated file Show diff for this revision Revisions of this file
HTTPServer.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/Formatter.cpp	Thu Jul 18 08:30:11 2013 +0000
+++ b/Formatter.cpp	Thu Jul 18 09:39:35 2013 +0000
@@ -52,7 +52,7 @@
 <body>";
     
 const char* INTERACTIVE_HTML_CODE_2 = "<h3>Create Object :</h3>\
-<form id=\"create\" method=\"get\">\
+<form>\
 Type: <select id=\"type\">\
 <option value=\"/DigitalOut/\">DigitalOut</option>\
 <option value=\"/DigitalIn/\">DigitalIn</option>\
@@ -67,9 +67,9 @@
  \
 <h3>Call a function :</h3>\
 <p>Enter an RPC command.</p>\
-<form method=\"get\">\
+<form>\
 Command: <input type= \"text\" id=\"command\"><br>\
-<input type=\"button\" value=\"Send\" onclick=\"javascript:submitCallFuncForm();\"><br>\
+<p><input type=\"button\" value=\"Send\" onclick=\"javascript:submitCallFuncForm();\"></p><br>\
 </form>\
 </body> \
 </html>";
--- a/HTTPServer.cpp	Thu Jul 18 08:30:11 2013 +0000
+++ b/HTTPServer.cpp	Thu Jul 18 09:39:35 2013 +0000
@@ -30,7 +30,19 @@
 bool HTTPServer::init(int port)
 {
     socket.set_blocking(true);
-    return !socket.bind(port) && !socket.listen();
+    if(socket.bind(port))
+    {
+        printf("Could not bind on port %d.\n", port);
+        return false; 
+    }
+    
+    if(socket.listen())
+    {
+        printf("Could not listen %d\n", port);
+        return false;
+    }
+    
+    return true;
 }
 
 void HTTPServer::run()
--- a/main.cpp	Thu Jul 18 08:30:11 2013 +0000
+++ b/main.cpp	Thu Jul 18 09:39:35 2013 +0000
@@ -30,15 +30,23 @@
     RPCType::instance().register_types();    
 
     EthernetInterface eth;
-    eth.init();
-    eth.connect();
+    if(eth.init())
+    {
+        printf("Error while initializing the ethernet interface.\n");
+        return -1;
+    }
+    if(eth.connect())
+    {
+        printf("Error while starting the ethernet interface.\n");
+        return -1;
+    }
+    
     printf("IP Address is %s\n", eth.getIPAddress());
     
     HTTPServer srv = create_interactive_server();
 
     if(!srv.init(SERVER_PORT))
     {
-        printf("Error while initializing the server\n");
         eth.disconnect();
         return -1;
     }