OSDN Git Service

1.change core file extension to .c from .cpp
[mimic/MiMicSDK.git] / projects / app.RemoteMCU / src / sketch.c
1 /**\r
2  * httpdサーバのサンプルです。\r
3  * ROMにある定義済みファイルの入出力と、クロスドメインRESTが確認できます。\r
4  */\r
5 #include "boot/sketch.h"\r
6 #include "NyLPC_net.h"\r
7 \r
8 #include "NyLPC_http.h"\r
9 #include "NyLPC_utils.h"\r
10 #include <stdio.h>\r
11 \r
12 \r
13 NyLPC_TcNet_t net;\r
14 struct MyHttpd{\r
15         NyLPC_TcHttpd_t super;\r
16 }httpd;\r
17 \r
18 #define NUM_OF_FSDATA 4\r
19 extern struct NyLPC_TRomFileData fsdata[];\r
20 \r
21 static const char* ROM_PATH="rom";\r
22 static const char* SETUP_PATH="setup";\r
23 static const char* MVM_PATH="mvm";\r
24 void handler(NyLPC_TcHttpdConnection_t* i_connection)\r
25 {\r
26         union{\r
27                 NyLPC_TcModRomFiles_t rom;\r
28                 NyLPC_TcModMiMicSetting_t setting;\r
29                 NyLPC_TcModRemoteMcu_t mvm;\r
30         }mod;\r
31 \r
32 \r
33         //SETUP\r
34         NyLPC_cModMiMicSetting_initialize(&mod.setting,SETUP_PATH);\r
35         if(NyLPC_cModMiMicSetting_canHandle(&mod.setting,i_connection)){\r
36                 NyLPC_cModMiMicSetting_execute(&mod.setting,i_connection);\r
37                 NyLPC_cModMiMicSetting_finalize(&mod.setting);\r
38                 return;\r
39         }\r
40         NyLPC_cModMiMicSetting_finalize(&mod.setting);\r
41 \r
42         //MIMICBC\r
43         NyLPC_cModRemoteMcu_initialize(&mod.mvm,MVM_PATH);\r
44         if(NyLPC_cModRemoteMcu_canHandle(&mod.mvm,i_connection)){\r
45                 NyLPC_cModRemoteMcu_execute(&mod.mvm,i_connection);\r
46                 NyLPC_cModRemoteMcu_finalize(&mod.mvm);\r
47                 return;\r
48         }\r
49         NyLPC_cModRemoteMcu_finalize(&mod.mvm);\r
50 \r
51         //ROM\r
52         NyLPC_cModRomFiles_initialize(&mod.rom,ROM_PATH,fsdata,NUM_OF_FSDATA);\r
53         if(NyLPC_cModRomFiles_canHandle(&mod.rom,i_connection)){\r
54                 NyLPC_cModRomFiles_execute(&mod.rom,i_connection);\r
55                 NyLPC_cModRomFiles_finalize(&mod.rom);\r
56                 return;\r
57         }\r
58         NyLPC_cModRomFiles_finalize(&mod.rom);\r
59 \r
60         //Redirect to index html\r
61         NyLPC_cHttpdConnection_sendResponseHeader(\r
62                 i_connection,301,\r
63                 "text/html",\r
64                 "Status: 301:Moved Permanently\r\n"\r
65                 "Location: /rom/index.html\r\n");\r
66         return;\r
67 }\r
68 void setup(void)\r
69 {\r
70         //uipサービス初期化。いろいろ利用可能に。\r
71         NyLPC_cNet_initialize(&net);\r
72         NyLPC_cHttpd_initialize(&httpd.super,80);\r
73         httpd.super.function.onRequest=handler;\r
74 \r
75 }\r
76 \r
77 \r
78 void loop(void)\r
79 {\r
80         NyLPC_TcNetConfig_t c2;\r
81         NyLPC_cNetConfig_initialize(&c2,NyLPC_TBool_FALSE);\r
82         NyLPC_cNet_start(&net,&c2);\r
83         NyLPC_cHttpd_loop(&httpd.super);\r
84         for(;;);\r
85 }\r
86 \r
87 \r