This is a simplest HTTP server made ​​of libMiMic. It will echo back a request path.

Dependencies:   libMiMic mbed-rtos mbed NySDFileSystem

最も簡単なhttpdです。 クライアントから送信されてきたURLをHtmlにして返します。

ModUrlモジュールのサンプルでもあります。

This program is simple httpserver.

This is tutorial for ModUrl module.

Revision:
6:bcf3fe4d0ba1
Parent:
5:00daa91538bc
Child:
7:8d030ae8ddc3
--- a/main.cpp	Thu May 16 16:07:17 2013 +0000
+++ b/main.cpp	Thu May 16 16:11:48 2013 +0000
@@ -1,118 +1,47 @@
 #include "mimic.h"
-#include "mbed.h"
-#include "InOut.h"
-LocalFileSystem2 lf("local");
-
-
-class RedIoPin: public InOut
-{
-private:
-    int _v;
-public:
-    RedIoPin(char pin):InOut(pin,0)
-    {
-        //pull down
-        this->mode(1);//pull down
-        this->_v=0;
-        this->write(0);
-    }
-    /**
-     * set RedStoneValue RedStone value
-     * @return
-     * red stone value.
-     */
-    bool setRedValue(int v)
-    {
-        //read real pin status,direction=in
-        this->setDirection(false);
-        if(this->read()!=0)
-        {   //real pin==1:out=1,in=0
-            this->_v=1;
-            this->write(0);
-        }else{
-            //real pin==0: direction=out,out=redstone value
-            this->setDirection(true);
-            int  vt=v!=0?1:0;
-            this->write(vt);
-            this->_v=vt;
-        }
-        return this->_v;
-    }
-};
-class RedIo
-{
-public:
-    RedIoPin* io[30];
-    RedIo()
-    {
-        const char d[]={LED1,LED2,LED3,LED4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30};
-        for(int i=0;i<30;i++){
-            this->io[i]=new RedIoPin(d[i]);
-        }
-    }
-    virtual ~RedIo()
-    {
-        for(int i=0;i<30;i++){
-            delete this->io[i];
-        }
-    }
-    unsigned int update(unsigned int v)
-    {
-        unsigned int ret=0;
-        for(int i=0;i<30;i++){
-            ret=ret<<1;
-            ret=ret | (this->io[29-i]->setRedValue((v>>(29-i))&0x00000001)?1:0);
-        }
-        return ret;
-    }
-};
-
+ 
+ 
+ 
+/**
+ * MiMic RemoteMCU httpd.<br/>
+ * <p>Service list</p>
+ * <pre>
+ * /rom/ - romfs
+ * /setup/ - MiMic configulation REST API.
+ * /local/ - mbed LocalFileSystem
+ * /mvm/   - MiMicVM REST API
+ * </pre>
+ */
+ 
 class MiMicRemoteMcu:public MiMic::Httpd
 {
 private:
     ModUrl modurl; //basic URL parser
-    RedIo rsio;
 public:
     MiMicRemoteMcu():Httpd(80)
     {
     }
     virtual void onRequest(HttpdConnection& i_connection)
     {
-        char url[64];
+        char url[32];
         int method;
-        
         //call ModUrl module.
-        if(!this->modurl.execute(i_connection,url,64,&method)){
-            i_connection.sendHeader(400,"text/html",NULL);
-            i_connection.sendBodyF("<html><body>Bad Request.</body></html>",url);
+        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);
             return;
         }
-        UrlReader r(url);
-        if(!r.isPathEqual("/rsb/")){
-            i_connection.sendHeader(403,"text/html",NULL);
-            i_connection.sendBodyF("<html><body>Path must be '/rsb/?p=[:unsigned int:]'</body></html>",url);
-            return;
-        }
-        unsigned int rsv;
-        if(!r.getQueryUInt("p",rsv)){
-            i_connection.sendHeader(400,"text/html",NULL);
-            i_connection.sendBodyF("<html><body>p val must be unsigned int</body></html>",url);
-            return;
-        }
-        i_connection.sendHeader(200,"text/html",NULL);
-        i_connection.sendBodyF("%u",rsio.update(rsv));
         return;
     }
 };
-
+ 
 int main()
 {
     NetConfig cfg; //create network configulation
-    //try to override setting by local file.
-    cfg.loadFromFile("/local/mimic.cfg");
-
     Net net(cfg);  //create a net instance.
     MiMicRemoteMcu httpd; //create a httpd instance.
     httpd.loop();  //start httpd loop.
     return 0;
 }
+ 
\ No newline at end of file