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のデータをリアルタイムに表示するページが開きます。

main.cpp

Committer:
nyatla
Date:
2013-06-20
Revision:
12:218b57d9a6d4
Parent:
10:80c05810f911
Child:
19:66d729b94d16

File content as of revision 12:218b57d9a6d4:

/**
 * @file * This is ModLocalFileSystem sample program.
 *
 * <pre>
 * 1. Compile this program and write to your mbed.
 * 2. Write files for testing to mbed disk.
 * 2. Access via web browser to http://192.168.0.39/local/<filename>
 * 3. You can see <filename> file on browser.
 * </pre>
 */
#include "mbed.h"
#include "SDFileSystem.h"
#include "mimic.h"
#include "utils/PlatformInfo.h"
DigitalOut mbedled(LED1);
DigitalOut lpcxled(P0_22);

/**
 * local filesystem support.
 */
LocalFileSystem2 lf("local");
SDFileSystem sd(p5, p6, p7, p8,"sd");
unsigned int p;
/**
 * MiMic RemoteMCU httpd.<br/>
 * Number of simultaneous connections:4
 * <p>Service list</p>
 * <pre>
 * /local/ - mbed LocalFileSystem
 * </pre>
 */
class FsHttpd:public MiMic::Httpd
{
private:
    ModLocalFileSystem modlocal;
    ModLocalFileSystem modsd;
public:
    FsHttpd(NetConfig& i_cfg):Httpd(i_cfg._inst.services.http_port)
    {
        //bind local file system path to /local/*
        modlocal.setParam("local");
        modsd.setParam("sd");
    }
    virtual void onRequest(HttpdConnection& i_connection)
    {
        p++;
        switch(PlatformInfo::getPlatformType()){
        case PlatformInfo::PF_MBED:
            mbedled = p%2;
            break;
        case PlatformInfo::PF_LPCXPRESSO:        
            lpcxled = p%2;
            break;
        }
        //try to ModLocalFileSystem
        if(this->modlocal.execute(i_connection)){
            return;
        }
        //try to ModLocalFileSystem(SD)
        if(this->modsd.execute(i_connection)){
            return;
        }
        //Otherwise, Send simple top index page.
        i_connection.sendHeader(200,"text/html",NULL);
        if(i_connection.isMethodType(Http::MT_GET)){
            i_connection.sendBodyF(
                "<!DOCTYPE html>"
                "<html lang=\"ja\">"  
                "<head></head>"
                "<body>"
                "<h1>This is MiMic Server!</h1>"
                "<hr/>"
                "<ul>"
                "<li><a href=\"/local/\">mbed Local Filesystem</a></li>"
                "<li><a href=\"/sd/\">SDCard</a></li>"
                "</ul></body>");
        }
    }
};

NetConfig cfg; //create network configulation

int main()
{
    Net net;  //create a net instance.

    //try to override setting by local file.
    if(!cfg.loadFromFile("/local/mimic.cfg")){
        wait_ms(1000);
        cfg.loadFromFile("/sd/mimic.cfg");
    }
    FsHttpd httpd(cfg); //create a httpd instance.
    net.start(cfg);
    httpd.loop();  //start httpd loop.
    return 0;
}