OSDN Git Service

update libMiMic
[mimic/MiMicSDK.git] / lib / src / jsonrpc / NyLPC_cJsonRpcFunction_Memory.c
1 #include "NyLPC_net.h"\r
2 \r
3 ///**\r
4 // * 1バイトをメモリに書き込む\r
5 // */\r
6 //static NyLPC_TBool write(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)\r
7 //{\r
8 //      //ubb\r
9 //      NyLPC_TcModJsonRpc_t* mod=(NyLPC_TcModJsonRpc_t*)i_param;\r
10 //      NyLPC_TUInt8* addr;\r
11 //      NyLPC_TUInt8 v,mask;\r
12 //      if(NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,0,((NyLPC_TUInt32*)&addr))){\r
13 //              if(NyLPC_TJsonRpcParserResult_getByte(i_rpc,1,((NyLPC_TUInt8*)&v))){\r
14 //                      if(NyLPC_TJsonRpcParserResult_getByte(i_rpc,2,((NyLPC_TUInt8*)&mask))){\r
15 //                              *addr=((*addr)&(~mask))|((*addr)|mask);\r
16 //                              return NyLPC_cModJsonRpc_putResult(mod,i_rpc->method.id,"");\r
17 //                      }\r
18 //              }\r
19 //      }\r
20 //      NyLPC_cModJsonRpc_putError(mod,i_rpc->method.id,NyLPC_TJsonRpcErrorCode_INVALID_PARAMS);\r
21 //      return NyLPC_TBool_FALSE;\r
22 //}\r
23 ///**\r
24 // * 1バイトをメモリから読み込む\r
25 // */\r
26 //static NyLPC_TBool read(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)\r
27 //{\r
28 //      //u\r
29 //      NyLPC_TcModJsonRpc_t* mod=(NyLPC_TcModJsonRpc_t*)i_param;\r
30 //      NyLPC_TUInt8* addr;\r
31 //      if(NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,0,((NyLPC_TUInt32*)&addr))){\r
32 //              return NyLPC_cModJsonRpc_putResult(mod,i_rpc->method.id,"%u",(int)(*addr));\r
33 //      }\r
34 //      NyLPC_cModJsonRpc_putError(mod,i_rpc->method.id,NyLPC_TJsonRpcErrorCode_INVALID_PARAMS);\r
35 //      return NyLPC_TBool_FALSE;\r
36 //}\r
37 //\r
38 ///**\r
39 // * write32\r
40 // */\r
41 //static NyLPC_TBool write32(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)\r
42 //{\r
43 //      //uuu\r
44 //      NyLPC_TcModJsonRpc_t* mod=(NyLPC_TcModJsonRpc_t*)i_param;\r
45 //      NyLPC_TUInt32* addr;\r
46 //      NyLPC_TUInt32 v,mask;\r
47 //      if(NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,0,((NyLPC_TUInt32*)&addr))){\r
48 //              if(NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,1,((NyLPC_TUInt32*)&v))){\r
49 //                      if(NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,2,((NyLPC_TUInt32*)&mask))){\r
50 //                              *addr=((*addr)&(~mask))|((*addr)|mask);\r
51 //                              return NyLPC_cModJsonRpc_putResult(mod,i_rpc->method.id,"");\r
52 //                      }\r
53 //              }\r
54 //      }\r
55 //      NyLPC_cModJsonRpc_putError(mod,i_rpc->method.id,NyLPC_TJsonRpcErrorCode_INVALID_PARAMS);\r
56 //      return NyLPC_TBool_FALSE;\r
57 //}\r
58 ///**\r
59 // * read32\r
60 // */\r
61 //static NyLPC_TBool read32(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)\r
62 //{\r
63 //      //u\r
64 //      NyLPC_TcModJsonRpc_t* mod=(NyLPC_TcModJsonRpc_t*)i_param;\r
65 //      NyLPC_TUInt32* addr;\r
66 //      NyLPC_TUInt32 v;\r
67 //      if(NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,0,((NyLPC_TUInt32*)&addr))){\r
68 //              v=(*addr);\r
69 //              return NyLPC_cModJsonRpc_putResult(mod,i_rpc->method.id,"%u",v);\r
70 //      }\r
71 //      NyLPC_cModJsonRpc_putError(mod,i_rpc->method.id,NyLPC_TJsonRpcErrorCode_INVALID_PARAMS);\r
72 //      return NyLPC_TBool_FALSE;\r
73 //}\r
74 /**\r
75  * 準備(特にやることない)\r
76  */\r
77 static NyLPC_TBool init(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)\r
78 {\r
79         //uB\r
80         NyLPC_TcModJsonRpc_t* mod=(NyLPC_TcModJsonRpc_t*)i_param;\r
81         return NyLPC_cModJsonRpc_putResult(mod,i_rpc->method.id,"");\r
82 }\r
83 \r
84 /**\r
85  * メモリブロックを書き込む\r
86  */\r
87 static NyLPC_TBool write(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)\r
88 {\r
89         //uB\r
90         NyLPC_TcModJsonRpc_t* mod=(NyLPC_TcModJsonRpc_t*)i_param;\r
91         NyLPC_TUInt8* addr;\r
92         const NyLPC_TUInt8* v;\r
93         NyLPC_TUInt8 l;\r
94         if(NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,0,((NyLPC_TUInt32*)&addr))){\r
95                 if(NyLPC_TJsonRpcParserResult_getByteArray(i_rpc,1,&v,&l)){\r
96                         memcpy(addr,v,l);\r
97                         return NyLPC_cModJsonRpc_putResult(mod,i_rpc->method.id,"");\r
98                 }\r
99         }\r
100         NyLPC_cModJsonRpc_putError(mod,i_rpc->method.id,NyLPC_TJsonRpcErrorCode_INVALID_PARAMS);\r
101         return NyLPC_TBool_FALSE;\r
102 }\r
103 /**\r
104  * メモリブロックを読み込む\r
105  */\r
106 static NyLPC_TBool read(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)\r
107 {\r
108         //uu\r
109         NyLPC_TcModJsonRpc_t* mod=(NyLPC_TcModJsonRpc_t*)i_param;\r
110         NyLPC_TUInt8* addr;\r
111         NyLPC_TUInt32 l;\r
112         if(NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,0,((NyLPC_TUInt32*)&addr))){\r
113                 if(NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,1,((NyLPC_TUInt32*)&l))){\r
114                         return NyLPC_cModJsonRpc_putResult(mod,i_rpc->method.id,"\"%.*B\"",(int)l,addr);\r
115                 }\r
116         }\r
117         NyLPC_cModJsonRpc_putError(mod,i_rpc->method.id,NyLPC_TJsonRpcErrorCode_INVALID_PARAMS);\r
118         return NyLPC_TBool_FALSE;\r
119 }\r
120 \r
121 \r
122 \r
123 const static struct NyLPC_TJsonRpcMethodDef func_table[]=\r
124 {\r
125         { "init"        ,""             ,init},\r
126         { "write"       ,"uB"   ,write},\r
127         { "read"        ,"uu"   ,read},\r
128         { NULL      ,NULL   ,NULL}\r
129 };\r
130 \r
131 const struct NyLPC_TJsonRpcClassDef NyLPC_cJsonRpcFunction_Memory={\r
132         "MiMic","Memory",func_table\r
133 };\r
134 \r