OSDN Git Service

update libMiMic
[mimic/MiMicSDK.git] / lib / src / net / httpd / mod / NyLPC_cModRemoteMcu.c
index efa7256..470d0c7 100644 (file)
@@ -19,8 +19,8 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
  *\r
  * For further information please contact.\r
- *     http://nyatla.jp/\r
- *     <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp>\r
+ *  http://nyatla.jp/\r
+ *  <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp>\r
  *\r
  *********************************************************************************/\r
 #include "NyLPC_cModRemoteMcu.h"\r
 #define SIZE_OF_IBUF 256\r
 struct TModMiMicRemoteMcuHeader\r
 {\r
-       struct NyLPC_THttpBasicHeader super;\r
-       NyLPC_TUInt8 _content_id;\r
-       //解析用\r
-       NyLPC_TUInt8 _qery_name_id;\r
-       NyLPC_TUInt8 _astate;\r
-       NyLPC_TInt16 _prefix_len;\r
-       NyLPC_TcStr_t _tstr;\r
-       NyLPC_TChar _tstr_buf[16];\r
-       struct NyLPC_TUInt32ArrayPtr _binarray;\r
-       /** 文字列のパーサ*/\r
-       NyLPC_TcMiMicDbCompiler_t _binparser;\r
-       NyLPC_TcMiMicTxtCompiler_t _txtcmp;\r
-       union{\r
-               struct{\r
-                       NyLPC_TUInt8 v;//バージョン\r
-                       NyLPC_TUInt8 o;//outputスタイル\r
-                       /**\r
-                        * il_bufはbcとdbの2パートのデータを格納します。\r
-                        * 先頭からbc_lenの長さのBCパートと、db_partからdb_lenの長さのデータです。\r
-                        */\r
-                       struct{\r
-                               /** MiMicVMインストラクションの蓄積用。前半にTXT,後半にDBを格納する。 */\r
-                               NyLPC_TUInt32 bc_buf[SIZE_OF_IBUF];\r
-                               /** MiMicVM入力ストリーム(MimicDB)の開始位置(bufの一部を指す) */\r
-                               const NyLPC_TUInt32* db_part;\r
-                               /** MiMicTXTのワード長(1ワード32bit)*/\r
-                               NyLPC_TUInt16 txt_len;\r
-                               /** MiMicDBのワード長(1ワード32bit)*/\r
-                               NyLPC_TUInt16 db_len;\r
-                       }vm_instruction;\r
-               }mvm;\r
-               struct{\r
-                       /**\r
-                        * 不明な名前の場合は、ここに名前をコピー\r
-                        */\r
-                       NyLPC_TChar path[32];\r
-               }unknown;\r
-       }content;\r
+    struct NyLPC_THttpBasicHeader super;\r
+    NyLPC_TUInt8 _content_id;\r
+    //解析用\r
+    NyLPC_TUInt8 _qery_name_id;\r
+    NyLPC_TUInt8 _astate;\r
+    NyLPC_TInt16 _prefix_len;\r
+    NyLPC_TcStr_t _tstr;\r
+    NyLPC_TChar _tstr_buf[16];\r
+    struct NyLPC_TUInt32ArrayPtr _binarray;\r
+    /** 文字列のパーサ*/\r
+    NyLPC_TcMiMicDbCompiler_t _binparser;\r
+    NyLPC_TcMiMicTxtCompiler_t _txtcmp;\r
+    union{\r
+        struct{\r
+            NyLPC_TUInt8 v;//バージョン\r
+            NyLPC_TUInt8 o;//outputスタイル\r
+            /**\r
+             * il_bufはbcとdbの2パートのデータを格納します。\r
+             * 先頭からbc_lenの長さのBCパートと、db_partからdb_lenの長さのデータです。\r
+             */\r
+            struct{\r
+                /** MiMicVMインストラクションの蓄積用。前半にTXT,後半にDBを格納する。 */\r
+                NyLPC_TUInt32 bc_buf[SIZE_OF_IBUF];\r
+                /** MiMicVM入力ストリーム(MimicDB)の開始位置(bufの一部を指す) */\r
+                const NyLPC_TUInt32* db_part;\r
+                /** MiMicTXTのワード長(1ワード32bit)*/\r
+                NyLPC_TUInt16 txt_len;\r
+                /** MiMicDBのワード長(1ワード32bit)*/\r
+                NyLPC_TUInt16 db_len;\r
+            }vm_instruction;\r
+        }mvm;\r
+        struct{\r
+            /**\r
+             * 不明な名前の場合は、ここに名前をコピー\r
+             */\r
+            NyLPC_TChar path[32];\r
+        }unknown;\r
+    }content;\r
 };\r
 \r
 \r
@@ -84,7 +84,7 @@ static void status(NyLPC_TcHttpdConnection_t* i_connection);
 \r
 #define ST_PARSE_PATH 1\r
 #define ST_PARSE_QUERY_NAME 2\r
-#define ST_PARSE_QUERY_VALUE 3         //Query読み出し中\r
+#define ST_PARSE_QUERY_VALUE 3      //Query読み出し中\r
 #define ST_PARSE_QUERY_VALUE_V 4\r
 #define ST_PARSE_QUERY_VALUE_O 5\r
 #define ST_PARSE_QUERY_VALUE_BC 6\r
@@ -97,214 +97,214 @@ static void status(NyLPC_TcHttpdConnection_t* i_connection);
 #define CONTENT_ID_UNKNOWN 0\r
 \r
 \r
-#define QNAME_ID_V     1\r
-#define QNAME_ID_O     2\r
-#define QNAME_ID_BC    3\r
+#define QNAME_ID_V  1\r
+#define QNAME_ID_O  2\r
+#define QNAME_ID_BC 3\r
 #define QNAME_ID_UNKNOWN 0\r
 \r
 /**\r
  * TRemoteMcuRequest.content.mvm.oの値\r
  */\r
-#define QVAL_O_UNKNOWN 0       //default\r
+#define QVAL_O_UNKNOWN 0    //default\r
 #define QVAL_O_XML     1\r
 #define QVAL_O_JSON    2\r
 \r
-#define QVAL_V_UNKNOWN 0\r
-#define QVAL_V_1               1\r
+#define QVAL_V_UNKNOWN  0\r
+#define QVAL_V_1        1\r
 \r
 \r
 static const struct NyLPC_TTextIdTbl url_tbl[]=\r
 {\r
-       {"mvm.api",CONTENT_ID_MVM},\r
-       {"status.api",CONTENT_ID_STATUS},\r
-       {NULL,CONTENT_ID_UNKNOWN}\r
+    {"mvm.api",CONTENT_ID_MVM},\r
+    {"status.api",CONTENT_ID_STATUS},\r
+    {NULL,CONTENT_ID_UNKNOWN}\r
 };\r
 \r
 static const struct NyLPC_TTextIdTbl qname_id_table[]=\r
 {\r
-       {"o",QNAME_ID_O},\r
-       {"bc",QNAME_ID_BC},\r
-       {"v",QNAME_ID_V},\r
-       {NULL,QNAME_ID_UNKNOWN}\r
+    {"o",QNAME_ID_O},\r
+    {"bc",QNAME_ID_BC},\r
+    {"v",QNAME_ID_V},\r
+    {NULL,QNAME_ID_UNKNOWN}\r
 };\r
 \r
 \r
 \r
 static NyLPC_TBool urlHandler(NyLPC_TcHttpBasicHeaderParser_t* i_inst,NyLPC_TChar i_c,struct NyLPC_THttpBasicHeader* o_out)\r
 {\r
-       NyLPC_TUInt16 ol;\r
-       struct TModMiMicRemoteMcuHeader* out=(struct TModMiMicRemoteMcuHeader*)o_out;\r
-       //読み飛ばし\r
-       if(out->_prefix_len<0){\r
-               out->_prefix_len++;\r
-               return NyLPC_TBool_TRUE;//読み飛ばし\r
-       }\r
-       if(out->_astate==ST_PARSE_PATH){\r
-               if(i_c!='\0' && i_c!='?'){\r
-                       if(!NyLPC_cStr_put(&(out->_tstr),i_c)){\r
-                               //ERROR\r
-                               NyLPC_OnErrorGoto(ERROR);\r
-                       }\r
-               }else{\r
-                       out->_content_id=NyLPC_TTextIdTbl_getMatchId(NyLPC_cStr_str(&(out->_tstr)),url_tbl);\r
-                       switch(out->_content_id)\r
-                       {\r
-                       case CONTENT_ID_MVM:\r
-                               out->content.mvm.vm_instruction.txt_len=0;\r
-                               out->content.mvm.vm_instruction.db_len=0;\r
-                               out->content.mvm.vm_instruction.db_part=NULL;\r
-                               NyLPC_TUInt32ArrayPtr_setBuf(&out->_binarray,out->content.mvm.vm_instruction.bc_buf,SIZE_OF_IBUF);\r
-                               out->content.mvm.o=QVAL_O_JSON;\r
-                               out->content.mvm.v=QVAL_V_UNKNOWN;\r
-                               break;\r
-                       default:\r
-                               break;\r
-                       }\r
-                       NyLPC_cStr_clear(&(out->_tstr));\r
-                       out->_astate=ST_PARSE_QUERY_NAME;//クエリ名解析へ\r
-               }\r
-               return NyLPC_TBool_TRUE;\r
-       }\r
-       switch(out->_content_id)\r
-       {\r
-       case CONTENT_ID_MVM:\r
-               switch(out->_astate){\r
-               case ST_PARSE_QUERY_NAME:\r
-                       if(i_c!='\0' && i_c!='&' && i_c!='='){\r
-                               if(!NyLPC_cStr_put(&(out->_tstr),i_c)){\r
-                                       NyLPC_OnErrorGoto(ERROR);\r
-                               }\r
-                       }else{\r
-                               //Query確定。\r
-                               out->_qery_name_id=NyLPC_TTextIdTbl_getMatchId(NyLPC_cStr_str(&(out->_tstr)),qname_id_table);\r
-                               NyLPC_cStr_clear(&(out->_tstr));\r
-                               //クエリ値がある場合\r
-                               switch(out->_qery_name_id){\r
-                               case QNAME_ID_O:\r
-                                       out->_astate=ST_PARSE_QUERY_VALUE_O;//MIMICBCのDBパラメータパーサを借用。\r
-                                       break;\r
-                               case QNAME_ID_V:\r
-                                       out->_astate=ST_PARSE_QUERY_VALUE_V;\r
-                                       break;\r
-                               case QNAME_ID_BC:\r
-                                       out->_astate=ST_PARSE_QUERY_VALUE_BC;\r
-                                       break;\r
-                               default:\r
-                                       out->_astate=ST_PARSE_QUERY_VALUE;\r
-                                       break;\r
-                               }\r
-                       }\r
-                       return NyLPC_TBool_TRUE;\r
-               case ST_PARSE_QUERY_VALUE:\r
-                       //未知のクエリは無視\r
-                       if(i_c!='\0' && i_c!='&'){\r
-                       }else{\r
-                               //クエリ値解析完了\r
-                               out->_astate=ST_PARSE_QUERY_NAME;\r
-                       }\r
-                       return NyLPC_TBool_TRUE;\r
-               case ST_PARSE_QUERY_VALUE_O:\r
-                       if(i_c!='\0' && i_c!='&'){\r
-                               if(!NyLPC_cStr_put(&(out->_tstr),i_c)){\r
-                                       NyLPC_OnErrorGoto(ERROR);\r
-                               }\r
-                       }else{\r
-                               if(NyLPC_cStr_isEqual(&(out->_tstr),"j")){\r
-                                       out->content.mvm.o=QVAL_O_JSON;\r
-                               }else if(NyLPC_cStr_isEqual(&(out->_tstr),"x")){\r
-                                       out->content.mvm.o=QVAL_O_XML;\r
-                               }\r
-                               out->_astate=ST_PARSE_QUERY_NAME;\r
-                               NyLPC_cStr_clear(&(out->_tstr));\r
-                       }\r
-                       return NyLPC_TBool_TRUE;\r
-               case ST_PARSE_QUERY_VALUE_V:\r
-                       if(i_c!='\0' && i_c!='&'){\r
-                               if(!NyLPC_cStr_put(&(out->_tstr),i_c)){\r
-                                       NyLPC_OnErrorGoto(ERROR);\r
-                               }\r
-                       }else{\r
-                               if(NyLPC_cStr_isEqual(&(out->_tstr),"1")){\r
-                                       out->content.mvm.v=QVAL_V_1;\r
-                               }\r
-                               out->_astate=ST_PARSE_QUERY_NAME;\r
-                               NyLPC_cStr_clear(&(out->_tstr));\r
-                       }\r
-                       return NyLPC_TBool_TRUE;\r
-               case ST_PARSE_QUERY_VALUE_BC:\r
-                       if(i_c!='\0' && i_c!='&'){\r
-                               //コンパイル\r
-                               switch(NyLPC_cMiMicTxtCompiler_compileFragment2(&(out->_txtcmp),i_c,&(out->_binarray),&ol))\r
-                               {\r
-                               case NyLPC_TcMiMicTxtCompiler_RET_OK:\r
-                                       //命令確定。\r
-                                       break;\r
-                               case NyLPC_TcMiMicTxtCompiler_RET_OK_END:\r
-                                       //命令終端検出->モード切替\r
-                                       out->content.mvm.vm_instruction.txt_len=SIZE_OF_IBUF-out->_binarray.len+ol;\r
-                                       out->content.mvm.vm_instruction.db_part=out->content.mvm.vm_instruction.bc_buf+out->content.mvm.vm_instruction.txt_len;\r
-                                       out->_astate=ST_PARSE_QUERY_VALUE_DB;\r
-                                       break;\r
-                               case NyLPC_TcMiMicTxtCompiler_RET_CONTINUE:\r
-                                       //何もしない\r
-                                       break;\r
-                               case NyLPC_TcMiMicTxtCompiler_RET_NG:\r
-                               default:\r
-                                       //ERROR\r
-                                       NyLPC_OnErrorGoto(ERROR);\r
-                               }\r
-                       }\r
-                       return NyLPC_TBool_TRUE;\r
-//                     //フラグメント終端が検出できない終了はエラー\r
-//                     NyLPC_OnErrorGoto(ERROR);\r
-               case ST_PARSE_QUERY_VALUE_DB:\r
-                       if(i_c!='\0' && i_c!='&'){\r
-                               switch(NyLPC_cMiMicDbCompiler_compileFragment2(&(out->_binparser),i_c,out->_binarray.ptr))\r
-                               {\r
-                               case NyLPC_TcMiMicDbCompiler_RET_CONTINUE:\r
-                                       break;\r
-                               case NyLPC_TcMiMicDbCompiler_RET_OK:\r
-                                       //\r
-                                       if(!NyLPC_TUInt32ArrayPtr_seek(&(out->_binarray),1)){\r
-                                               //ERROR\r
-                                               NyLPC_OnErrorGoto(ERROR);\r
-                                       }\r
-                                       break;\r
-                               case NyLPC_TcMiMicDbCompiler_RET_ERROR:\r
-                               default:\r
-                                       //ERROR\r
-                                       NyLPC_OnErrorGoto(ERROR);\r
-                               }\r
-                       }else{\r
-                               //区切りのいいところで終わってる?\r
-                               if(NyLPC_cMiMicDbCompiler_hasFragment(&(out->_binparser))){\r
-                                       //ERROR\r
-                                       NyLPC_OnErrorGoto(ERROR);\r
-                               }\r
-                               out->content.mvm.vm_instruction.db_len=((NyLPC_TUInt8*)(out->_binarray.ptr)-(NyLPC_TUInt8*)(out->content.mvm.vm_instruction.db_part))/sizeof(NyLPC_TUInt32);\r
-\r
-                               //終端しているなら、次のクエリへ\r
-                               out->_astate=ST_PARSE_QUERY_NAME;\r
-                       }\r
-                       return NyLPC_TBool_TRUE;\r
-               default:\r
-                       break;\r
-               }\r
-               NyLPC_OnErrorGoto(ERROR);\r
-       default:\r
-               NyLPC_OnErrorGoto(ERROR);\r
-       }\r
-       return NyLPC_TBool_TRUE;\r
+    NyLPC_TUInt16 ol;\r
+    struct TModMiMicRemoteMcuHeader* out=(struct TModMiMicRemoteMcuHeader*)o_out;\r
+    //読み飛ばし\r
+    if(out->_prefix_len<0){\r
+        out->_prefix_len++;\r
+        return NyLPC_TBool_TRUE;//読み飛ばし\r
+    }\r
+    if(out->_astate==ST_PARSE_PATH){\r
+        if(i_c!='\0' && i_c!='?'){\r
+            if(!NyLPC_cStr_put(&(out->_tstr),i_c)){\r
+                //ERROR\r
+                NyLPC_OnErrorGoto(ERROR);\r
+            }\r
+        }else{\r
+            out->_content_id=NyLPC_TTextIdTbl_getMatchId(NyLPC_cStr_str(&(out->_tstr)),url_tbl);\r
+            switch(out->_content_id)\r
+            {\r
+            case CONTENT_ID_MVM:\r
+                out->content.mvm.vm_instruction.txt_len=0;\r
+                out->content.mvm.vm_instruction.db_len=0;\r
+                out->content.mvm.vm_instruction.db_part=NULL;\r
+                NyLPC_TUInt32ArrayPtr_setBuf(&out->_binarray,out->content.mvm.vm_instruction.bc_buf,SIZE_OF_IBUF);\r
+                out->content.mvm.o=QVAL_O_JSON;\r
+                out->content.mvm.v=QVAL_V_UNKNOWN;\r
+                break;\r
+            default:\r
+                break;\r
+            }\r
+            NyLPC_cStr_clear(&(out->_tstr));\r
+            out->_astate=ST_PARSE_QUERY_NAME;//クエリ名解析へ\r
+        }\r
+        return NyLPC_TBool_TRUE;\r
+    }\r
+    switch(out->_content_id)\r
+    {\r
+    case CONTENT_ID_MVM:\r
+        switch(out->_astate){\r
+        case ST_PARSE_QUERY_NAME:\r
+            if(i_c!='\0' && i_c!='&' && i_c!='='){\r
+                if(!NyLPC_cStr_put(&(out->_tstr),i_c)){\r
+                    NyLPC_OnErrorGoto(ERROR);\r
+                }\r
+            }else{\r
+                //Query確定。\r
+                out->_qery_name_id=NyLPC_TTextIdTbl_getMatchId(NyLPC_cStr_str(&(out->_tstr)),qname_id_table);\r
+                NyLPC_cStr_clear(&(out->_tstr));\r
+                //クエリ値がある場合\r
+                switch(out->_qery_name_id){\r
+                case QNAME_ID_O:\r
+                    out->_astate=ST_PARSE_QUERY_VALUE_O;//MIMICBCのDBパラメータパーサを借用。\r
+                    break;\r
+                case QNAME_ID_V:\r
+                    out->_astate=ST_PARSE_QUERY_VALUE_V;\r
+                    break;\r
+                case QNAME_ID_BC:\r
+                    out->_astate=ST_PARSE_QUERY_VALUE_BC;\r
+                    break;\r
+                default:\r
+                    out->_astate=ST_PARSE_QUERY_VALUE;\r
+                    break;\r
+                }\r
+            }\r
+            return NyLPC_TBool_TRUE;\r
+        case ST_PARSE_QUERY_VALUE:\r
+            //未知のクエリは無視\r
+            if(i_c!='\0' && i_c!='&'){\r
+            }else{\r
+                //クエリ値解析完了\r
+                out->_astate=ST_PARSE_QUERY_NAME;\r
+            }\r
+            return NyLPC_TBool_TRUE;\r
+        case ST_PARSE_QUERY_VALUE_O:\r
+            if(i_c!='\0' && i_c!='&'){\r
+                if(!NyLPC_cStr_put(&(out->_tstr),i_c)){\r
+                    NyLPC_OnErrorGoto(ERROR);\r
+                }\r
+            }else{\r
+                if(NyLPC_cStr_isEqual(&(out->_tstr),"j")){\r
+                    out->content.mvm.o=QVAL_O_JSON;\r
+                }else if(NyLPC_cStr_isEqual(&(out->_tstr),"x")){\r
+                    out->content.mvm.o=QVAL_O_XML;\r
+                }\r
+                out->_astate=ST_PARSE_QUERY_NAME;\r
+                NyLPC_cStr_clear(&(out->_tstr));\r
+            }\r
+            return NyLPC_TBool_TRUE;\r
+        case ST_PARSE_QUERY_VALUE_V:\r
+            if(i_c!='\0' && i_c!='&'){\r
+                if(!NyLPC_cStr_put(&(out->_tstr),i_c)){\r
+                    NyLPC_OnErrorGoto(ERROR);\r
+                }\r
+            }else{\r
+                if(NyLPC_cStr_isEqual(&(out->_tstr),"1")){\r
+                    out->content.mvm.v=QVAL_V_1;\r
+                }\r
+                out->_astate=ST_PARSE_QUERY_NAME;\r
+                NyLPC_cStr_clear(&(out->_tstr));\r
+            }\r
+            return NyLPC_TBool_TRUE;\r
+        case ST_PARSE_QUERY_VALUE_BC:\r
+            if(i_c!='\0' && i_c!='&'){\r
+                //コンパイル\r
+                switch(NyLPC_cMiMicTxtCompiler_compileFragment2(&(out->_txtcmp),i_c,&(out->_binarray),&ol))\r
+                {\r
+                case NyLPC_TcMiMicTxtCompiler_RET_OK:\r
+                    //命令確定。\r
+                    break;\r
+                case NyLPC_TcMiMicTxtCompiler_RET_OK_END:\r
+                    //命令終端検出->モード切替\r
+                    out->content.mvm.vm_instruction.txt_len=SIZE_OF_IBUF-out->_binarray.len+ol;\r
+                    out->content.mvm.vm_instruction.db_part=out->content.mvm.vm_instruction.bc_buf+out->content.mvm.vm_instruction.txt_len;\r
+                    out->_astate=ST_PARSE_QUERY_VALUE_DB;\r
+                    break;\r
+                case NyLPC_TcMiMicTxtCompiler_RET_CONTINUE:\r
+                    //何もしない\r
+                    break;\r
+                case NyLPC_TcMiMicTxtCompiler_RET_NG:\r
+                default:\r
+                    //ERROR\r
+                    NyLPC_OnErrorGoto(ERROR);\r
+                }\r
+            }\r
+            return NyLPC_TBool_TRUE;\r
+//          //フラグメント終端が検出できない終了はエラー\r
+//          NyLPC_OnErrorGoto(ERROR);\r
+        case ST_PARSE_QUERY_VALUE_DB:\r
+            if(i_c!='\0' && i_c!='&'){\r
+                switch(NyLPC_cMiMicDbCompiler_compileFragment2(&(out->_binparser),i_c,out->_binarray.ptr))\r
+                {\r
+                case NyLPC_TcMiMicDbCompiler_RET_CONTINUE:\r
+                    break;\r
+                case NyLPC_TcMiMicDbCompiler_RET_OK:\r
+                    //\r
+                    if(!NyLPC_TUInt32ArrayPtr_seek(&(out->_binarray),1)){\r
+                        //ERROR\r
+                        NyLPC_OnErrorGoto(ERROR);\r
+                    }\r
+                    break;\r
+                case NyLPC_TcMiMicDbCompiler_RET_ERROR:\r
+                default:\r
+                    //ERROR\r
+                    NyLPC_OnErrorGoto(ERROR);\r
+                }\r
+            }else{\r
+                //区切りのいいところで終わってる?\r
+                if(NyLPC_cMiMicDbCompiler_hasFragment(&(out->_binparser))){\r
+                    //ERROR\r
+                    NyLPC_OnErrorGoto(ERROR);\r
+                }\r
+                out->content.mvm.vm_instruction.db_len=((NyLPC_TUInt8*)(out->_binarray.ptr)-(NyLPC_TUInt8*)(out->content.mvm.vm_instruction.db_part))/sizeof(NyLPC_TUInt32);\r
+\r
+                //終端しているなら、次のクエリへ\r
+                out->_astate=ST_PARSE_QUERY_NAME;\r
+            }\r
+            return NyLPC_TBool_TRUE;\r
+        default:\r
+            break;\r
+        }\r
+        NyLPC_OnErrorGoto(ERROR);\r
+    default:\r
+        NyLPC_OnErrorGoto(ERROR);\r
+    }\r
+    return NyLPC_TBool_TRUE;\r
 ERROR:\r
-       return NyLPC_TBool_FALSE;\r
+    return NyLPC_TBool_FALSE;\r
 }\r
 /**\r
  * デフォルトハンドラ\r
  */\r
 static const struct NyLPC_TcHttpBasicHeaderParser_Handler handler=\r
 {\r
-       NULL,\r
-       urlHandler\r
+    NULL,\r
+    urlHandler\r
 };\r
 \r
 \r
@@ -313,18 +313,18 @@ static const struct NyLPC_TcHttpBasicHeaderParser_Handler handler=
  */\r
 void NyLPC_cModRemoteMcu_initialize(NyLPC_TcModRemoteMcu_t* i_inst,const NyLPC_TChar* i_ref_root_path)\r
 {\r
-       NyLPC_cModRomFiles_initialize(&i_inst->super,i_ref_root_path,NULL,0);\r
+    NyLPC_cModRomFiles_initialize(&i_inst->super,i_ref_root_path,NULL,0);\r
 }\r
 void NyLPC_cModRemoteMcu_finalize(NyLPC_TcModRemoteMcu_t* i_inst)\r
 {\r
-       NyLPC_cModRomFiles_finalize(&i_inst->super);\r
+    NyLPC_cModRomFiles_finalize(&i_inst->super);\r
 }\r
 /**\r
  * モジュールがコネクションをハンドリングできるかを返します。\r
  */\r
 NyLPC_TBool NyLPC_cModRemoteMcu_canHandle(NyLPC_TcModRemoteMcu_t* i_inst,NyLPC_TcHttpdConnection_t* i_connection)\r
 {\r
-       return NyLPC_cModRomFiles_canHandle(&i_inst->super,i_connection);\r
+    return NyLPC_cModRomFiles_canHandle(&i_inst->super,i_connection);\r
 }\r
 \r
 static struct TModMiMicRemoteMcuHeader single_header;\r
@@ -334,78 +334,78 @@ static struct TModMiMicRemoteMcuHeader single_header;
  */\r
 NyLPC_TBool NyLPC_cModRemoteMcu_execute(NyLPC_TcModRemoteMcu_t* i_inst,NyLPC_TcHttpdConnection_t* i_connection)\r
 {\r
-       NyLPC_TcHttpBasicHeaderParser_t parser;\r
-       NyLPC_TUInt8 method_type;\r
-       //リクエストParse済へ遷移(この関数の後はModが責任を持ってリクエストを返却)\r
-       NyLPC_cHttpdConnection_setReqStatusParsed(i_connection);\r
-\r
-\r
-       //VM起動の為の排他ロック\r
-       NyLPC_cHttpdConnection_lock(i_connection);\r
-\r
-\r
-       //URL解析の準備\r
-       single_header._prefix_len=-((NyLPC_TInt16)strlen(i_inst->super._ref_root_path)+2);\r
-       single_header._astate=ST_PARSE_PATH;\r
-       NyLPC_cStr_initialize(&single_header._tstr,single_header._tstr_buf,16);\r
-       NyLPC_cMiMicDbCompiler_initialize(&single_header._binparser);\r
-       NyLPC_cMiMicTxtCompiler_initialize(&single_header._txtcmp);\r
-\r
-       NyLPC_cHttpBasicHeaderParser_initialize(&parser,&handler);\r
-\r
-\r
-       //プリフェッチしたデータを流す\r
-       NyLPC_cHttpBasicHeaderParser_parseInit(&parser,&(single_header.super));\r
-       NyLPC_cHttpdConnection_pushPrefetchInfo(i_connection,&parser,&single_header.super);\r
-       //後続をストリームから取り込む\r
-       if(!NyLPC_cHttpBasicHeaderParser_parseStream(&parser,NyLPC_cHttpdConnection_refStream(i_connection),&(single_header.super))){\r
-               NyLPC_cHttpdUtils_sendErrorResponse(i_connection,500);\r
-               NyLPC_OnErrorGoto(Error1);\r
-       }\r
-       if(!NyLPC_cHttpBasicHeaderParser_parseFinish(&parser,&(single_header.super))){\r
-               NyLPC_cHttpdUtils_sendErrorResponse(i_connection,500);\r
-               NyLPC_OnErrorGoto(Error1);\r
-       }\r
-       //GETかHEADに制限\r
-       method_type=NyLPC_cHttpdConnection_getMethod(i_connection);\r
-       if(method_type!=NyLPC_THttpMethodType_GET && method_type!=NyLPC_THttpMethodType_HEAD)\r
-       {\r
-               NyLPC_cHttpdUtils_sendErrorResponse(i_connection,405);\r
-               NyLPC_OnErrorGoto(Error1);\r
-       }\r
-       //Request::ConnectionがClose設定,又はHTTP1.1では無い場合,CLOSE\r
-       if(single_header.super.connection==NyLPC_THttpMessgeHeader_Connection_CLOSE || single_header.super.startline.req.version!=NyLPC_THttpVersion_11)\r
-       {\r
-               NyLPC_cHttpdConnection_setConnectionMode(i_connection,NyLPC_TcHttpdConnection_CONNECTION_MODE_CLOSE);\r
-       }\r
-       //CGIの実行\r
-       switch(single_header._content_id)\r
-       {\r
-       case CONTENT_ID_MVM:\r
-               mvm(i_connection,&single_header);\r
-               break;\r
-       case CONTENT_ID_STATUS:\r
-               status(i_connection);\r
-               break;\r
-       default:\r
-               NyLPC_cHttpdUtils_sendErrorResponse(i_connection,400);\r
-               NyLPC_OnErrorGoto(Error1);\r
-       }\r
-       NyLPC_cStr_finalize(&single_header._tstr);\r
-       NyLPC_cMiMicDbCompiler_finalize(&single_header._binparser);\r
-       NyLPC_cMiMicTxtCompiler_finalize(&single_header._txtcmp);\r
-       NyLPC_cHttpBasicHeaderParser_finalize(&parser);\r
+    NyLPC_TcHttpBasicHeaderParser_t parser;\r
+    NyLPC_TUInt8 method_type;\r
+    //リクエストParse済へ遷移(この関数の後はModが責任を持ってリクエストを返却)\r
+    NyLPC_cHttpdConnection_setReqStatusParsed(i_connection);\r
+\r
+\r
+    //VM起動の為の排他ロック\r
+    NyLPC_cHttpdConnection_lock(i_connection);\r
+\r
+\r
+    //URL解析の準備\r
+    single_header._prefix_len=-((NyLPC_TInt16)strlen(i_inst->super._ref_root_path)+2);\r
+    single_header._astate=ST_PARSE_PATH;\r
+    NyLPC_cStr_initialize(&single_header._tstr,single_header._tstr_buf,16);\r
+    NyLPC_cMiMicDbCompiler_initialize(&single_header._binparser);\r
+    NyLPC_cMiMicTxtCompiler_initialize(&single_header._txtcmp);\r
+\r
+    NyLPC_cHttpBasicHeaderParser_initialize(&parser,&handler);\r
+\r
+\r
+    //プリフェッチしたデータを流す\r
+    NyLPC_cHttpBasicHeaderParser_parseInit(&parser,&(single_header.super));\r
+    NyLPC_cHttpdConnection_pushPrefetchInfo(i_connection,&parser,&single_header.super);\r
+    //後続をストリームから取り込む\r
+    if(!NyLPC_cHttpBasicHeaderParser_parseStream(&parser,NyLPC_cHttpdConnection_refStream(i_connection),&(single_header.super))){\r
+        NyLPC_cHttpdUtils_sendErrorResponse(i_connection,500);\r
+        NyLPC_OnErrorGoto(Error1);\r
+    }\r
+    if(!NyLPC_cHttpBasicHeaderParser_parseFinish(&parser,&(single_header.super))){\r
+        NyLPC_cHttpdUtils_sendErrorResponse(i_connection,500);\r
+        NyLPC_OnErrorGoto(Error1);\r
+    }\r
+    //GETかHEADに制限\r
+    method_type=NyLPC_cHttpdConnection_getMethod(i_connection);\r
+    if(method_type!=NyLPC_THttpMethodType_GET && method_type!=NyLPC_THttpMethodType_HEAD)\r
+    {\r
+        NyLPC_cHttpdUtils_sendErrorResponse(i_connection,405);\r
+        NyLPC_OnErrorGoto(Error1);\r
+    }\r
+    //Request::ConnectionがClose設定,又はHTTP1.1では無い場合,CLOSE\r
+    if(single_header.super.connection==NyLPC_THttpMessgeHeader_Connection_CLOSE || single_header.super.startline.req.version!=NyLPC_THttpVersion_11)\r
+    {\r
+        NyLPC_cHttpdConnection_setConnectionMode(i_connection,NyLPC_TcHttpdConnection_CONNECTION_MODE_CLOSE);\r
+    }\r
+    //CGIの実行\r
+    switch(single_header._content_id)\r
+    {\r
+    case CONTENT_ID_MVM:\r
+        mvm(i_connection,&single_header);\r
+        break;\r
+    case CONTENT_ID_STATUS:\r
+        status(i_connection);\r
+        break;\r
+    default:\r
+        NyLPC_cHttpdUtils_sendErrorResponse(i_connection,400);\r
+        NyLPC_OnErrorGoto(Error1);\r
+    }\r
+    NyLPC_cStr_finalize(&single_header._tstr);\r
+    NyLPC_cMiMicDbCompiler_finalize(&single_header._binparser);\r
+    NyLPC_cMiMicTxtCompiler_finalize(&single_header._txtcmp);\r
+    NyLPC_cHttpBasicHeaderParser_finalize(&parser);\r
 //占有解除\r
-       NyLPC_cHttpdConnection_unlock(i_connection);\r
-       return NyLPC_TBool_TRUE;\r
+    NyLPC_cHttpdConnection_unlock(i_connection);\r
+    return NyLPC_TBool_TRUE;\r
 Error1:\r
-       NyLPC_cStr_finalize(&single_header._tstr);\r
-       NyLPC_cMiMicDbCompiler_finalize(&single_header._binparser);\r
-       NyLPC_cMiMicTxtCompiler_finalize(&single_header._txtcmp);\r
-       NyLPC_cHttpBasicHeaderParser_finalize(&parser);\r
-       //VM排他ロックの解除\r
-       NyLPC_cHttpdConnection_unlock(i_connection);\r
-       return NyLPC_TBool_FALSE;\r
+    NyLPC_cStr_finalize(&single_header._tstr);\r
+    NyLPC_cMiMicDbCompiler_finalize(&single_header._binparser);\r
+    NyLPC_cMiMicTxtCompiler_finalize(&single_header._txtcmp);\r
+    NyLPC_cHttpBasicHeaderParser_finalize(&parser);\r
+    //VM排他ロックの解除\r
+    NyLPC_cHttpdConnection_unlock(i_connection);\r
+    return NyLPC_TBool_FALSE;\r
 }\r
 \r
 \r
@@ -414,14 +414,14 @@ Error1:
  */\r
 struct TVmEventHandler\r
 {\r
-       struct NyLPC_TcMiMicVM_TEvent super;\r
-       const struct TModMiMicRemoteMcuHeader* req;\r
-       NyLPC_TcHttpdConnection_t* connection;\r
-       NyLPC_TUInt16 db_pos;\r
-       /** ストリームへ出力したデータの数*/\r
-       NyLPC_TUInt16 st_len;\r
-       /** Bodyを送信するかのフラグ*/\r
-       NyLPC_TBool is_send_body;\r
+    struct NyLPC_TcMiMicVM_TEvent super;\r
+    const struct TModMiMicRemoteMcuHeader* req;\r
+    NyLPC_TcHttpdConnection_t* connection;\r
+    NyLPC_TUInt16 db_pos;\r
+    /** ストリームへ出力したデータの数*/\r
+    NyLPC_TUInt16 st_len;\r
+    /** Bodyを送信するかのフラグ*/\r
+    NyLPC_TBool is_send_body;\r
 };\r
 \r
 /**\r
@@ -429,17 +429,17 @@ struct TVmEventHandler
  */\r
 static NyLPC_TBool mvmputs_json(struct NyLPC_TcMiMicVM_TEvent* i_eh,NyLPC_TUInt32 i_val)\r
 {\r
-       struct TVmEventHandler* eh=(struct TVmEventHandler*)i_eh;\r
-       if(eh->is_send_body){\r
-               if(eh->st_len>0){\r
-                       eh->st_len++;\r
-                       return NyLPC_cHttpdConnection_sendResponseBodyF(eh->connection,",%u",i_val);\r
-               }else{\r
-                       eh->st_len++;\r
-                       return NyLPC_cHttpdConnection_sendResponseBodyF(eh->connection,"%u",i_val);\r
-               }\r
-       }\r
-       return NyLPC_TBool_TRUE;\r
+    struct TVmEventHandler* eh=(struct TVmEventHandler*)i_eh;\r
+    if(eh->is_send_body){\r
+        if(eh->st_len>0){\r
+            eh->st_len++;\r
+            return NyLPC_cHttpdConnection_sendResponseBodyF(eh->connection,",%u",i_val);\r
+        }else{\r
+            eh->st_len++;\r
+            return NyLPC_cHttpdConnection_sendResponseBodyF(eh->connection,"%u",i_val);\r
+        }\r
+    }\r
+    return NyLPC_TBool_TRUE;\r
 }\r
 \r
 /**\r
@@ -447,53 +447,53 @@ static NyLPC_TBool mvmputs_json(struct NyLPC_TcMiMicVM_TEvent* i_eh,NyLPC_TUInt3
  */\r
 static NyLPC_TBool mvmgets(struct NyLPC_TcMiMicVM_TEvent* i_eh,NyLPC_TUInt32* o_val)\r
 {\r
-       struct TVmEventHandler* eh=(struct TVmEventHandler*)i_eh;\r
-       //読み出し済みDBサイズの確認\r
-       if(eh->req->content.mvm.vm_instruction.db_len<=eh->db_pos){\r
-               //読めない\r
-               return NyLPC_TBool_FALSE;\r
-       }\r
-       *o_val=eh->req->content.mvm.vm_instruction.db_part[eh->db_pos];\r
-       eh->db_pos++;\r
-       return NyLPC_TBool_TRUE;\r
+    struct TVmEventHandler* eh=(struct TVmEventHandler*)i_eh;\r
+    //読み出し済みDBサイズの確認\r
+    if(eh->req->content.mvm.vm_instruction.db_len<=eh->db_pos){\r
+        //読めない\r
+        return NyLPC_TBool_FALSE;\r
+    }\r
+    *o_val=eh->req->content.mvm.vm_instruction.db_part[eh->db_pos];\r
+    eh->db_pos++;\r
+    return NyLPC_TBool_TRUE;\r
 }\r
 /**\r
  * ネイティブCALLハンドラ\r
  */\r
 static NyLPC_TUInt32 nativeCall(struct NyLPC_TcMiMicVM_TEvent* i_evh,NyLPC_TUInt32 i_id,NyLPC_TcMiMicVM_t* i_vm)\r
 {\r
-       (void)i_evh;\r
-//     NyLPC_TNativeFunction f=getNativeFunctionById(i_id);\r
-//     if(f==NULL){\r
-//             return NyLPC_cMiMicVM_RESULT_RUNTIME_NG_UNKNOWN_CALL;\r
-//     }\r
-//     return f(i_vm)?NyLPC_cMiMicVM_RESULT_OK:NyLPC_cMiMicVM_RESULT_RUNTIME_NG_CALL;\r
-       return NyLPC_cMiMicVM_RESULT_RUNTIME_NG_CALL;\r
+    (void)i_evh;\r
+//  NyLPC_TNativeFunction f=getNativeFunctionById(i_id);\r
+//  if(f==NULL){\r
+//      return NyLPC_cMiMicVM_RESULT_RUNTIME_NG_UNKNOWN_CALL;\r
+//  }\r
+//  return f(i_vm)?NyLPC_cMiMicVM_RESULT_OK:NyLPC_cMiMicVM_RESULT_RUNTIME_NG_CALL;\r
+    return NyLPC_cMiMicVM_RESULT_RUNTIME_NG_CALL;\r
 }\r
 \r
 \r
 static void mvmsleep(struct NyLPC_TcMiMicVM_TEvent* i_eh,NyLPC_TUInt32 i_sleep_in_msec)\r
 {\r
-       (void)i_eh;\r
-       NyLPC_cThread_sleep(i_sleep_in_msec);\r
+    (void)i_eh;\r
+    NyLPC_cThread_sleep(i_sleep_in_msec);\r
 }\r
 \r
 /**\r
  * RemoteMCUのステータスを返す。基本的にjson\r
  * {\r
- *     application:"[VERSION]"\r
+ *  application:"[VERSION]"\r
  * }\r
  */\r
 static void status(NyLPC_TcHttpdConnection_t* i_connection)\r
 {\r
-       if(!NyLPC_cHttpdUtils_sendJsonHeader(i_connection)){\r
-               return;\r
-       }\r
-       //JSONを書く。\r
-       if(NyLPC_cHttpdConnection_getMethod(i_connection)==NyLPC_THttpMethodType_GET){\r
-               NyLPC_cHttpdConnection_sendResponseBodyF(i_connection,"{\"application\":\""MVM_VERSION"\"}");\r
-       }\r
-       return;\r
+    if(!NyLPC_cHttpdUtils_sendJsonHeader(i_connection)){\r
+        return;\r
+    }\r
+    //JSONを書く。\r
+    if(NyLPC_cHttpdConnection_getMethod(i_connection)==NyLPC_THttpMethodType_GET){\r
+        NyLPC_cHttpdConnection_sendResponseBodyF(i_connection,"{\"application\":\""MVM_VERSION"\"}");\r
+    }\r
+    return;\r
 }\r
 /**\r
  * MimicVMの起動と,ResponseJSONの起動\r
@@ -502,52 +502,52 @@ static void status(NyLPC_TcHttpdConnection_t* i_connection)
  */\r
 static void mvm(NyLPC_TcHttpdConnection_t* i_connection,const struct TModMiMicRemoteMcuHeader* i_rqh)\r
 {\r
-       struct TVmEventHandler he;\r
-       NyLPC_TcMiMicVM_t vm;\r
-       NyLPC_TUInt32 vmret;\r
-       if(i_rqh->content.mvm.v!=QVAL_V_1 || i_rqh->content.mvm.o!=QVAL_O_JSON)\r
-       {\r
-               NyLPC_cHttpdUtils_sendErrorResponse(i_connection,400);\r
-               return;\r
-       }\r
-\r
-       //Bodyを書く\r
-       //ハンドラインスタンスの設定\r
-       if(!NyLPC_cHttpdUtils_sendJsonHeader(i_connection)){\r
-               NyLPC_OnErrorGoto(Error1);\r
-       }\r
-\r
-       he.super.get_stream=mvmgets;\r
-       he.super.put_stream=mvmputs_json;\r
-       he.super.native_call=nativeCall;\r
-       he.super.sleep=mvmsleep;\r
-       he.db_pos=0;\r
-       he.st_len=0;\r
-       he.connection=i_connection;\r
-       he.req=i_rqh;\r
-       he.is_send_body=(NyLPC_cHttpdConnection_getMethod(i_connection)==NyLPC_THttpMethodType_GET);\r
-\r
-       //起動VMの初期化\r
-       NyLPC_cMiMicVM_initialize(&vm,(struct NyLPC_TcMiMicVM_TEvent*)&(he.super));\r
-\r
-       //JSONを書く。\r
-       if(he.is_send_body){\r
-               if(!NyLPC_cHttpdConnection_sendResponseBodyF(i_connection,"{\"version\":\""MVM_VERSION"\",\"stream\":[")){\r
-                       NyLPC_OnErrorGoto(Error1);\r
-               }\r
-       }\r
-       //VMの実行\r
-       vmret=NyLPC_cMiMicVM_run(&(vm),i_rqh->content.mvm.vm_instruction.bc_buf,i_rqh->content.mvm.vm_instruction.txt_len);\r
-       //only GET method\r
-       if(he.is_send_body){\r
-               if(!NyLPC_cHttpdConnection_sendResponseBodyF(i_connection,"],\"result\":%u}",vmret)){\r
-                       NyLPC_OnErrorGoto(Error1);\r
-               }\r
-       }\r
-       NyLPC_cMiMicVM_finalize(&vm);\r
-       return;\r
+    struct TVmEventHandler he;\r
+    NyLPC_TcMiMicVM_t vm;\r
+    NyLPC_TUInt32 vmret;\r
+    if(i_rqh->content.mvm.v!=QVAL_V_1 || i_rqh->content.mvm.o!=QVAL_O_JSON)\r
+    {\r
+        NyLPC_cHttpdUtils_sendErrorResponse(i_connection,400);\r
+        return;\r
+    }\r
+\r
+    //Bodyを書く\r
+    //ハンドラインスタンスの設定\r
+    if(!NyLPC_cHttpdUtils_sendJsonHeader(i_connection)){\r
+        NyLPC_OnErrorGoto(Error1);\r
+    }\r
+\r
+    he.super.get_stream=mvmgets;\r
+    he.super.put_stream=mvmputs_json;\r
+    he.super.native_call=nativeCall;\r
+    he.super.sleep=mvmsleep;\r
+    he.db_pos=0;\r
+    he.st_len=0;\r
+    he.connection=i_connection;\r
+    he.req=i_rqh;\r
+    he.is_send_body=(NyLPC_cHttpdConnection_getMethod(i_connection)==NyLPC_THttpMethodType_GET);\r
+\r
+    //起動VMの初期化\r
+    NyLPC_cMiMicVM_initialize(&vm,(struct NyLPC_TcMiMicVM_TEvent*)&(he.super));\r
+\r
+    //JSONを書く。\r
+    if(he.is_send_body){\r
+        if(!NyLPC_cHttpdConnection_sendResponseBodyF(i_connection,"{\"version\":\""MVM_VERSION"\",\"stream\":[")){\r
+            NyLPC_OnErrorGoto(Error1);\r
+        }\r
+    }\r
+    //VMの実行\r
+    vmret=NyLPC_cMiMicVM_run(&(vm),i_rqh->content.mvm.vm_instruction.bc_buf,i_rqh->content.mvm.vm_instruction.txt_len);\r
+    //only GET method\r
+    if(he.is_send_body){\r
+        if(!NyLPC_cHttpdConnection_sendResponseBodyF(i_connection,"],\"result\":%u}",vmret)){\r
+            NyLPC_OnErrorGoto(Error1);\r
+        }\r
+    }\r
+    NyLPC_cMiMicVM_finalize(&vm);\r
+    return;\r
 Error1:\r
-       NyLPC_cMiMicVM_finalize(&vm);\r
-       return;\r
+    NyLPC_cMiMicVM_finalize(&vm);\r
+    return;\r
 }\r
 \r