Code snipet

Dependencies:   NySDFileSystem libMiMic mbed-rtos mbed

Fork of AsyncHttpdSample by Ryo Iizuka

Revision:
8:384c8fb9f401
Parent:
7:8d030ae8ddc3
Child:
9:c6427be12f0d
--- a/main.cpp	Thu Jul 11 01:11:26 2013 +0000
+++ b/main.cpp	Sat Nov 16 01:23:18 2013 +0000
@@ -1,32 +1,41 @@
 #include "mimic.h"
+#include "rtos.h"
+/**
+ * @file
+ * This program is a sample which starts httpd by a subtask.
+ * The value counted up by a main thread is returned by Httpd of a subtask.
+ */
  
  
- LocalFileSystem2 lf("local");
-/**
- * 
- */
+static unsigned int counter=0;
+
+
+LocalFileSystem2 lf("local");
 class SimpleHttpd:public MiMic::Httpd
 {
 private:
     ModUrl modurl; //basic URL parser
 public:
-    SimpleHttpd(NetConfig& i_cfg):Httpd(i_cfg._inst.services.http_port)
+    SimpleHttpd(NetConfig& i_cfg):Httpd(i_cfg.getHttpPort())
     {
     }
     virtual void onRequest(HttpdConnection& i_connection)
     {
         char url[32];
         int method;
+        unsigned int v;
+        i_connection.lockHttpd();
+        v=counter;
+        i_connection.unlockHttpd();
         
-        //
-        //write Http handler(s) here!
-        //
-        
+
         //call ModUrl module.
         if(this->modurl.execute(i_connection,url,32,&method)){
             //send 200 OK and requested URL
             i_connection.sendHeader(200,"text/html",NULL);
-            i_connection.sendBodyF("<html><body>Your Request path is %s.</body></html>",url);
+            //show current counter value.
+            i_connection.sendBodyF(
+                "<html><body><h1>Asynchronous test</h1><div>Counter: %u</body></html>",v);
             return;
         }
         
@@ -34,6 +43,7 @@
     }
 };
 
+
 NetConfig cfg; //create network configulation
 int main()
 {
@@ -44,7 +54,13 @@
     
     SimpleHttpd httpd(cfg); //create a httpd instance.
     net.start(cfg);
-    httpd.loop();  //start httpd loop.
+    httpd.loopTask();  //start httpd loop with new task
+    for(;;){
+        httpd.lock();//prepare to access shared resource
+        counter++;
+        httpd.unlock();//release a lock.
+        Thread::wait(1000);
+    }
     return 0;
 }
  
\ No newline at end of file