Code snipet

Dependencies:   NySDFileSystem libMiMic mbed-rtos mbed

Fork of AsyncHttpdSample by Ryo Iizuka

main.cpp

Committer:
nyatla
Date:
2013-11-16
Revision:
8:384c8fb9f401
Parent:
7:8d030ae8ddc3
Child:
9:c6427be12f0d

File content as of revision 8:384c8fb9f401:

#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.
 */
 
 
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.getHttpPort())
    {
    }
    virtual void onRequest(HttpdConnection& i_connection)
    {
        char url[32];
        int method;
        unsigned int v;
        i_connection.lockHttpd();
        v=counter;
        i_connection.unlockHttpd();
        

        //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);
            //show current counter value.
            i_connection.sendBodyF(
                "<html><body><h1>Asynchronous test</h1><div>Counter: %u</body></html>",v);
            return;
        }
        
        return;
    }
};


NetConfig cfg; //create network configulation
int main()
{
    Net net;  //create a net instance.

    //try to override setting by local file.
    cfg.loadFromFile("/local/mimic.cfg");
    
    SimpleHttpd httpd(cfg); //create a httpd instance.
    net.start(cfg);
    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;
}