MiMic RemoteMCU for mbed. This program provides MCU control API over REST API. It can control MCU from Javascript,PHP or any HTTP rest client directly. And, The application has self development environment.
Dependencies: libMiMic mbed-rtos mbed NySDFileSystem
main.cpp
00001 #include "mbed.h" 00002 #include "rtos.h" 00003 #include "SDFileSystem.h" 00004 #include "mimic.h" 00005 #include "fsdata.h" 00006 00007 /** 00008 * local filesystem support. 00009 * MiMic::LocalFileSystem2 do not freeze on LPCXpresso. 00010 */ 00011 LocalFileSystem2 lf("local"); 00012 SDFileSystem sd(p5, p6, p7, p8,"sd"); 00013 00014 Net* net; 00015 00016 00017 /** 00018 * MiMic RemoteMCU httpd.<br/> 00019 * <p>Service list</p> 00020 * <pre> 00021 * /rom/ - romfs 00022 * /setup/ - MiMic configulation REST API. 00023 * /local/ - mbed LocalFileSystem 00024 * /mvm/ - MiMicVM REST API 00025 * </pre> 00026 */ 00027 class MiMicRemoteMcu:public MiMic::Httpd 00028 { 00029 private: 00030 ModRomFiles modromfs; //ROM file module 00031 ModMiMicSetting mimicsetting; //mimic setting API 00032 ModRemoteMcu remotemcu; // remotemcu API 00033 ModLocalFileSystem modlocal; //FileSystem mounter 00034 ModLocalFileSystem modsd; //FileSystem mounter 00035 ModFileIo modfio; //fileupload API 00036 ModUPnPDevice modupnp; 00037 public: 00038 MiMicRemoteMcu(NetConfig& i_cfg):Httpd(i_cfg.getHttpPort()) 00039 { 00040 this->modromfs.setParam("rom",RMCU_FSDATA,18); 00041 this->mimicsetting.setParam("setup"); 00042 this->remotemcu.setParam("mvm"); 00043 this->modlocal.setParam("local"); 00044 this->modsd.setParam("sd",ModLocalFileSystem::FST_SDFATFS); 00045 this->modfio.setParam("fio"); 00046 this->modupnp.setParam(*net); 00047 } 00048 /** 00049 * Http handler 00050 */ 00051 virtual void onRequest(HttpdConnection& i_connection) 00052 { 00053 //try to ModRomFS module. 00054 if(this->modromfs.execute(i_connection)){ 00055 return; 00056 } 00057 //try to ModMiMicSetting module. 00058 if(this->mimicsetting.execute(i_connection)){ 00059 return; 00060 } 00061 //try to ModRemoteMcu module. 00062 if(this->remotemcu.execute(i_connection)){ 00063 return; 00064 } 00065 //try to ModLocalFileSystem 00066 if(this->modlocal.execute(i_connection)){ 00067 return; 00068 } 00069 //try to ModLocalFileSystem(SD) 00070 if(this->modsd.execute(i_connection)){ 00071 return; 00072 } 00073 //try to FileUpload 00074 if(this->modfio.execute(i_connection)){ 00075 return; 00076 } 00077 //try to UPnP 00078 if(this->modupnp.execute(i_connection)){ 00079 return; 00080 } 00081 00082 //Otherwise, Send the redirect response to /rom/index.html 00083 i_connection.sendHeader(302, 00084 "text/html", 00085 "Status: 302:Moved Temporarily\r\n" 00086 "Location: /rom/index.html\r\n"); 00087 return; 00088 } 00089 }; 00090 00091 00092 NetConfig cfg; //create network configulation with onchip-setting. 00093 int main() 00094 { 00095 net=new Net();//Net constructor must be created after started RTOS 00096 //Prepare configulation. 00097 cfg.setUPnPIcon(64,64,8,"image/png","/rom/icon.png"); 00098 cfg.setUPnPUdn(0xe29f7101,0x4ba2,0x01e0,0); 00099 cfg.setFriendlyName("MiMicRemoteMCU"); 00100 cfg.setUPnPPresentationURL("/rom/index.html"); 00101 00102 //try to override setting by local file. 00103 if(!cfg.loadFromFile("/local/mimic.cfg")){ 00104 Thread::wait(2000);//wait for SD card initialization. 00105 cfg.loadFromFile("/sd/mimic.cfg"); 00106 } 00107 00108 MiMicRemoteMcu httpd(cfg); //create a httpd instance. 00109 net->start(cfg); 00110 httpd.loop(); //start httpd loop. 00111 return 0; 00112 }
Generated on Tue Jul 12 2022 21:51:27 by 1.7.2