MiMicSDK Websocket module sample program.

Dependencies:   NyFileSystems libMiMic mbed-rtos mbed

Fork of UPnPBasicDevice by Ryo Iizuka

This is Websocket server.

WebSocketのサンプルです。 MiMicSDKのWebsocketはhttpdの1モジュールとして動作するので、ファイルサーバ等と一緒に動かすことが出来ます。

ファームウェアを書き込んだ後にブラウザから "http://192.168.128.39/" にアクセスすると、AIN1のデータをリアルタイムに表示するページが開きます。

Revision:
19:66d729b94d16
Parent:
12:218b57d9a6d4
Child:
20:4b0b449ddb12
--- a/main.cpp	Thu Jul 11 03:54:29 2013 +0000
+++ b/main.cpp	Fri Aug 09 09:06:09 2013 +0000
@@ -9,9 +9,12 @@
  * </pre>
  */
 #include "mbed.h"
+#include "rtos.h"
 #include "SDFileSystem.h"
 #include "mimic.h"
 #include "utils/PlatformInfo.h"
+#include "fsdata.h"
+
 DigitalOut mbedled(LED1);
 DigitalOut lpcxled(P0_22);
 
@@ -20,6 +23,8 @@
  */
 LocalFileSystem2 lf("local");
 SDFileSystem sd(p5, p6, p7, p8,"sd");
+Net* net;
+
 unsigned int p;
 /**
  * MiMic RemoteMCU httpd.<br/>
@@ -34,12 +39,18 @@
 private:
     ModLocalFileSystem modlocal;
     ModLocalFileSystem modsd;
+    ModUPnPDevice modupnp;
+    ModRomFiles modromfs; //ROM file module
+    
 public:
-    FsHttpd(NetConfig& i_cfg):Httpd(i_cfg._inst.services.http_port)
+    FsHttpd(NetConfig& i_cfg):Httpd(i_cfg.getHttpPort())
     {
+    
+        this->modromfs.setParam("rom",FSDATA,1);
         //bind local file system path to /local/*
         modlocal.setParam("local");
-        modsd.setParam("sd");
+        modsd.setParam("sd",ModLocalFileSystem::FST_SDFATFS);
+        this->modupnp.setParam(*net);
     }
     virtual void onRequest(HttpdConnection& i_connection)
     {
@@ -52,6 +63,10 @@
             lpcxled = p%2;
             break;
         }
+        //try to ModRomFS module.
+        if(this->modromfs.execute(i_connection)){
+            return;
+        }        
         //try to ModLocalFileSystem
         if(this->modlocal.execute(i_connection)){
             return;
@@ -60,6 +75,9 @@
         if(this->modsd.execute(i_connection)){
             return;
         }
+        if(this->modupnp.execute(i_connection)){
+            return;
+        }
         //Otherwise, Send simple top index page.
         i_connection.sendHeader(200,"text/html",NULL);
         if(i_connection.isMethodType(Http::MT_GET)){
@@ -82,15 +100,19 @@
 
 int main()
 {
-    Net net;  //create a net instance.
+    net=new Net();//Net constructor must be created after started RTOS
+    //Prepare configulation.
+    cfg.setUPnPIcon(64,64,8,"image/png","/rom/icon.png");
+    cfg.setUPnPUdn(0xe29f7102,0x4ba2,0x01e0,0);
+    cfg.setFriendlyName("MbedFileServer");
 
     //try to override setting by local file.
     if(!cfg.loadFromFile("/local/mimic.cfg")){
-        wait_ms(1000);
+        Thread::wait(2000);//wait for SD card initialization.
         cfg.loadFromFile("/sd/mimic.cfg");
     }
     FsHttpd httpd(cfg); //create a httpd instance.
-    net.start(cfg);
+    net->start(cfg);
     httpd.loop();  //start httpd loop.
     return 0;
 }