Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: NyFileSystems libMiMic mbed-rtos mbed
Fork of MiMicSimpleHttpd by
Diff: main.cpp
- 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
