OSDN Git Service

index.htmlへのリダイレクト、モジュールバージョン情報の統合、プラットフォーム名表示の復帰
[mimic/MiMicSDK.git] / projects / example / sample.romfsmod / src / sketch.c
1 /**\r
2  * httpdサーバのサンプルです。\r
3  * ROMにある定義済みファイルの入出力と、クロスドメインRESTが確認できます。\r
4  */\r
5 #include "boot/sketch.h"\r
6 //#include "NyLPC_uipService.h"\r
7 #include "NyLPC_httpService.h"\r
8 #include "NyLPC_utils.h"\r
9 #include <stdio.h>\r
10 \r
11 #include "../net/NyLPC_cNet.h"\r
12 #include "../net/httpd/NyLPC_cHttpd.h"\r
13 #include "../net/httpd/mod/NyLPC_cModShortUrl.h"\r
14 #include "../net/httpd/mod/NyLPC_cModRemoteMcu.h"\r
15 #include "../net/httpd/mod/NyLPC_cModMiMicSetting.h"\r
16 #include "../net/httpd/mod/NyLPC_cModRomFiles.h"\r
17 \r
18 NyLPC_TcNet_t net;\r
19 struct MyHttpd{\r
20         NyLPC_TcHttpd_t super;\r
21 }httpd;\r
22 \r
23 #define NUM_OF_FSDATA 4\r
24 extern struct NyLPC_TRomFileData fsdata[];\r
25 \r
26 static const char* ROM_PATH="/rom/";\r
27 static const char* SETUP_PATH="/setup/";\r
28 static const char* MVM_PATH="/mvm/";\r
29 void handler(NyLPC_TcHttpdConnection_t* i_connection)\r
30 {\r
31         union{\r
32                 NyLPC_TcModShortUrl_t surl;\r
33                 NyLPC_TcModRomFiles_t rom;\r
34                 NyLPC_TcModMiMicSetting_t setting;\r
35                 NyLPC_TcModRemoteMcu_t mvm;\r
36         }mod;\r
37 \r
38         NyLPC_THttpMethodType m;\r
39 \r
40         //SETUP\r
41         NyLPC_cModMiMicSetting_initialize(&mod.setting,SETUP_PATH);\r
42         if(NyLPC_cModMiMicSetting_canHandle(&mod.setting,i_connection)){\r
43                 NyLPC_cModMiMicSetting_execute(&mod.setting,i_connection);\r
44                 NyLPC_cModMiMicSetting_finalize(&mod.setting);\r
45                 return;\r
46         }\r
47         NyLPC_cModMiMicSetting_finalize(&mod.setting);\r
48 \r
49         //MIMICBC\r
50         NyLPC_cModRemoteMcu_initialize(&mod.mvm,MVM_PATH);\r
51         if(NyLPC_cModRemoteMcu_canHandle(&mod.mvm,i_connection)){\r
52                 NyLPC_cModRemoteMcu_execute(&mod.mvm,i_connection);\r
53                 NyLPC_cModRemoteMcu_finalize(&mod.mvm);\r
54                 return;\r
55         }\r
56         NyLPC_cModRemoteMcu_finalize(&mod.mvm);\r
57 \r
58         //ROM\r
59         NyLPC_cModRomFiles_initialize(&mod.rom,ROM_PATH,fsdata,NUM_OF_FSDATA);\r
60         if(NyLPC_cModRomFiles_canHandle(&mod.rom,i_connection)){\r
61                 NyLPC_cModRomFiles_execute(&mod.rom,i_connection);\r
62                 NyLPC_cModRomFiles_finalize(&mod.rom);\r
63                 return;\r
64         }\r
65         NyLPC_cModRomFiles_finalize(&mod.rom);\r
66 \r
67 \r
68 \r
69         //SHORT URL\r
70         NyLPC_cModShortUrl_initialize(&mod.surl);\r
71         if(!NyLPC_cModShortUrl_execute(&mod.surl,i_connection)){\r
72                 return;\r
73         }\r
74         //Redirect to index html\r
75         NyLPC_cHttpdConnection_sendResponseHeader(\r
76                 i_connection,301,\r
77                 "text/html",\r
78                 "Status: 301:Moved Permanently\r\n"\r
79                 "Location: /rom/index.html\r\n");\r
80         return;\r
81 }\r
82 void setup(void)\r
83 {\r
84         //uipサービス初期化。いろいろ利用可能に。\r
85         NyLPC_cNet_initialize(&net);\r
86         NyLPC_cHttpd_initialize(&httpd.super,80);\r
87         httpd.super.function._handler=handler;\r
88 \r
89 }\r
90 \r
91 \r
92 void loop(void)\r
93 {\r
94         NyLPC_TcNetConfig_t c2;\r
95         NyLPC_cNetConfig_initialize(&c2);\r
96         NyLPC_cNet_start(&net,&c2);\r
97         NyLPC_cHttpd_loop(&httpd.super);\r
98         for(;;);\r
99 }\r
100 \r
101 \r