MiMic WebServer port to LPC1768-Mini-DK2 (Alpha ver.) *On uVision4(MDK-STD), -O2 option is required to run.

Dependencies:   NySDFileSystem libMiMic mbed-rtos mbed

Fork of MbedFileServer by Ryo Iizuka

main.cpp

Committer:
mio
Date:
2013-07-11
Revision:
12:e642e14ecb21
Parent:
11:5c1608e46104

File content as of revision 12:e642e14ecb21:

/**
 * MbedFileServer , LPC1768-MiniDK2 Port
 *
 * See:
 *  https://mbed.org/users/nyatla/code/libMiMic/
 *  http://nyatla.jp/mimic/wp/
 *
 * 2013.7.11 : Following original update.
 *
 */

#include "mbed.h"
#include "SDFileSystem.h"
#include "mimic.h"
#include "utils/PlatformInfo.h"

#define URL_HANDLE 1 /* if you use TEST URL HANDLER */

DigitalOut LED_1(P3_25),LED_2(P3_26);
Serial pc(P0_2,P0_3) ;

/**
 * sd filesystem support.
 */
SDFileSystem sd(P1_24, P1_23, P1_20, P1_21,"sd");
unsigned int p = 0; // LED TOGGLE COUNTER

/**
 * MiMic RemoteMCU httpd.<br/>
 * Number of simultaneous connections:4
 * <p>Service list</p>
 * <pre>
 * /sd/  - mbed LocalFileSystem
 * /**** - URL Handler for test
 * </pre>
 */
class FsHttpd:public MiMic::Httpd
{
private:
    ModUrl modurl; //basic URL parser
    ModLocalFileSystem modsd;
public:
    FsHttpd(NetConfig& i_cfg):Httpd(i_cfg._inst.services.http_port)
    {
        //bind local file system path to /local/*
        modsd.setParam("sd");
    }
    virtual void onRequest(HttpdConnection& i_connection)
    {
        p++;
        LED_1 = p%2;
        
        //try to ModLocalFileSystem(SD)
        if(this->modsd.execute(i_connection)){
            return;
        }
        
#ifdef URL_HANDLE
        // URL 
        char url[32];
        int method;
        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("Your Request No is [%d] , path is %s.",p,url);
            pc.printf("%s\r\n",url) ;
            return;
        }
#endif

        //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 : Mini1768DK2 Port.</h1>"
                "<hr/>"
                "<ul>"
                "<li><a href=\"/sd/\">SDCard</a></li>"
                "</ul></body>");
        }
    }
};

NetConfig cfg; //create network configulation
int main()
{
    Net net;  //create a net instance.
    pc.baud(9600) ; // serial port for debug

    //try to override setting by SD file.
    if (cfg.loadFromFile("/sd/mimic.cfg")) {
        pc.printf("Setting is Overridden by /sd/mimic.cfg\r\n") ;
    } else {
        pc.printf("MY ADDR is 192.168.1.239\r\n") ;
        cfg.setEmac(0x1,0x2,0x3,0x4,0x5,0x6);
        cfg.setIpAddr(192,168,1,239) ;
        cfg.setGateway(192,168,1,1) ;
        cfg.setNetMask(255,255,255,0) ;
    }

    FsHttpd httpd(cfg); //create a httpd instance.
    net.start(cfg);
    httpd.loop();  //start httpd loop.
    return 0;
}