This is Webservice SDK for mbed. LPCXpresso1769/LPC1768/FRDM-K64F/LPC4088

Fork of libMiMic by Ryo Iizuka

Revision:
83:d46aa580722a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/jsonrpc/NyLPC_cJsonRpcFunction_Memory.c	Sun Jun 29 12:56:59 2014 +0000
@@ -0,0 +1,134 @@
+#include "NyLPC_net.h"
+
+///**
+// * 1バイトをメモリに書き込む
+// */
+//static NyLPC_TBool write(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)
+//{
+//	//ubb
+//	NyLPC_TcModJsonRpc_t* mod=(NyLPC_TcModJsonRpc_t*)i_param;
+//	NyLPC_TUInt8* addr;
+//	NyLPC_TUInt8 v,mask;
+//	if(NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,0,((NyLPC_TUInt32*)&addr))){
+//		if(NyLPC_TJsonRpcParserResult_getByte(i_rpc,1,((NyLPC_TUInt8*)&v))){
+//			if(NyLPC_TJsonRpcParserResult_getByte(i_rpc,2,((NyLPC_TUInt8*)&mask))){
+//				*addr=((*addr)&(~mask))|((*addr)|mask);
+//				return NyLPC_cModJsonRpc_putResult(mod,i_rpc->method.id,"");
+//			}
+//		}
+//	}
+//	NyLPC_cModJsonRpc_putError(mod,i_rpc->method.id,NyLPC_TJsonRpcErrorCode_INVALID_PARAMS);
+//	return NyLPC_TBool_FALSE;
+//}
+///**
+// * 1バイトをメモリから読み込む
+// */
+//static NyLPC_TBool read(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)
+//{
+//	//u
+//	NyLPC_TcModJsonRpc_t* mod=(NyLPC_TcModJsonRpc_t*)i_param;
+//	NyLPC_TUInt8* addr;
+//	if(NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,0,((NyLPC_TUInt32*)&addr))){
+//		return NyLPC_cModJsonRpc_putResult(mod,i_rpc->method.id,"%u",(int)(*addr));
+//	}
+//	NyLPC_cModJsonRpc_putError(mod,i_rpc->method.id,NyLPC_TJsonRpcErrorCode_INVALID_PARAMS);
+//	return NyLPC_TBool_FALSE;
+//}
+//
+///**
+// * write32
+// */
+//static NyLPC_TBool write32(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)
+//{
+//	//uuu
+//	NyLPC_TcModJsonRpc_t* mod=(NyLPC_TcModJsonRpc_t*)i_param;
+//	NyLPC_TUInt32* addr;
+//	NyLPC_TUInt32 v,mask;
+//	if(NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,0,((NyLPC_TUInt32*)&addr))){
+//		if(NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,1,((NyLPC_TUInt32*)&v))){
+//			if(NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,2,((NyLPC_TUInt32*)&mask))){
+//				*addr=((*addr)&(~mask))|((*addr)|mask);
+//				return NyLPC_cModJsonRpc_putResult(mod,i_rpc->method.id,"");
+//			}
+//		}
+//	}
+//	NyLPC_cModJsonRpc_putError(mod,i_rpc->method.id,NyLPC_TJsonRpcErrorCode_INVALID_PARAMS);
+//	return NyLPC_TBool_FALSE;
+//}
+///**
+// * read32
+// */
+//static NyLPC_TBool read32(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)
+//{
+//	//u
+//	NyLPC_TcModJsonRpc_t* mod=(NyLPC_TcModJsonRpc_t*)i_param;
+//	NyLPC_TUInt32* addr;
+//	NyLPC_TUInt32 v;
+//	if(NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,0,((NyLPC_TUInt32*)&addr))){
+//		v=(*addr);
+//		return NyLPC_cModJsonRpc_putResult(mod,i_rpc->method.id,"%u",v);
+//	}
+//	NyLPC_cModJsonRpc_putError(mod,i_rpc->method.id,NyLPC_TJsonRpcErrorCode_INVALID_PARAMS);
+//	return NyLPC_TBool_FALSE;
+//}
+/**
+ * 準備(特にやることない)
+ */
+static NyLPC_TBool init(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)
+{
+	//uB
+	NyLPC_TcModJsonRpc_t* mod=(NyLPC_TcModJsonRpc_t*)i_param;
+	return NyLPC_cModJsonRpc_putResult(mod,i_rpc->method.id,"");
+}
+
+/**
+ * メモリブロックを書き込む
+ */
+static NyLPC_TBool write(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)
+{
+	//uB
+	NyLPC_TcModJsonRpc_t* mod=(NyLPC_TcModJsonRpc_t*)i_param;
+	NyLPC_TUInt8* addr;
+	const NyLPC_TUInt8* v;
+	NyLPC_TUInt8 l;
+	if(NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,0,((NyLPC_TUInt32*)&addr))){
+		if(NyLPC_TJsonRpcParserResult_getByteArray(i_rpc,1,&v,&l)){
+			memcpy(addr,v,l);
+			return NyLPC_cModJsonRpc_putResult(mod,i_rpc->method.id,"");
+		}
+	}
+	NyLPC_cModJsonRpc_putError(mod,i_rpc->method.id,NyLPC_TJsonRpcErrorCode_INVALID_PARAMS);
+	return NyLPC_TBool_FALSE;
+}
+/**
+ * メモリブロックを読み込む
+ */
+static NyLPC_TBool read(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)
+{
+	//uu
+	NyLPC_TcModJsonRpc_t* mod=(NyLPC_TcModJsonRpc_t*)i_param;
+	NyLPC_TUInt8* addr;
+	NyLPC_TUInt32 l;
+	if(NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,0,((NyLPC_TUInt32*)&addr))){
+		if(NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,1,((NyLPC_TUInt32*)&l))){
+			return NyLPC_cModJsonRpc_putResult(mod,i_rpc->method.id,"\"%.*B\"",(int)l,addr);
+		}
+	}
+	NyLPC_cModJsonRpc_putError(mod,i_rpc->method.id,NyLPC_TJsonRpcErrorCode_INVALID_PARAMS);
+	return NyLPC_TBool_FALSE;
+}
+
+
+
+const static struct NyLPC_TJsonRpcMethodDef func_table[]=
+{
+	{ "init"	,""		,init},
+	{ "write"	,"uB"	,write},
+	{ "read"	,"uu"   ,read},
+	{ NULL      ,NULL   ,NULL}
+};
+
+const struct NyLPC_TJsonRpcClassDef NyLPC_cJsonRpcFunction_Memory={
+	"MiMic","Memory",func_table
+};
+