Jun Furutani / libMiMic

Fork of libMiMic by Ryo Iizuka

Revision:
77:8651d3c19a55
Parent:
76:b375b3d750d8
Child:
85:416f8bbbdf54
--- a/mbed/jsonrpc/RpcDigitalOut.cpp	Sat Jun 14 17:42:11 2014 +0000
+++ b/mbed/jsonrpc/RpcDigitalOut.cpp	Fri Jun 20 15:38:30 2014 +0000
@@ -1,75 +1,42 @@
-#include "mod/ModJsonRpc.h"
-#include "MbedJsApi.h"
-#include "mbed.h"
+#include "RpcHandlerBase.h"
+
 namespace MiMic
 {
-
-
-    class RpcHandlerBase
-    {
-    public:
-        static void addNewObjectBatch(ModJsonRpc& i_mod,unsigned int i_id,ModJsonRpc::BasicRpcObject* i_new_object)
-        {
-            int i=i_mod.addObject(i_new_object);
-            if(i<0){
-                delete i_new_object;
-                i_mod.putError(i_id,ModJsonRpc::INVALID_PARAMS);
-                return;
-            }
-            i_mod.putResult(i_id,"%d",i);
-            return;
-        }
-        static void* getObjectBatch(ModJsonRpc& i_mod,unsigned int i_id,int i_iid)
-        {
-            void* ret=i_mod.getObject(i_iid);
-            if(ret==NULL){
-                i_mod.putError(i_id,ModJsonRpc::INTERNAL_ERROR);
-            }
-            return ret;
-        }
-    };
-    
     class DigitalOutHandler :RpcHandlerBase
     {
     public:
         static NyLPC_TBool new1(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)
         {
+            //u
             ModJsonRpc* mod=(ModJsonRpc*)i_param;
-            NyLPC_TUInt32 pin;
-            if(!NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,0,&pin)){
-                mod->putError(i_rpc->method.id,ModJsonRpc::INVALID_PARAMS);
-            }else{
-                addNewObjectBatch(*mod,i_rpc->method.id,new ModJsonRpc::RpcObject<DigitalOut>(new DigitalOut(MbedJsApi::pinId2PinName(pin))));
+            PinName pin;
+            if(getParamsAsPin(mod,i_rpc,&pin,1)){
+                addNewObjectBatch(mod,i_rpc->method.id,new ModJsonRpc::RpcObject<DigitalOut>(new DigitalOut(pin)));
             }
             return NyLPC_TBool_TRUE;
         }
         static NyLPC_TBool new2(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)
         {
+            //ud return iid
             ModJsonRpc* mod=(ModJsonRpc*)i_param;
-            NyLPC_TUInt32 pin;
-            NyLPC_TInt32 value;
-            //pin number
-            if( (!NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,0,&pin)) ||
-                (!NyLPC_TJsonRpcParserResult_getInt32(i_rpc,1,&value)))
-            {
-                mod->putError(i_rpc->method.id,ModJsonRpc::INVALID_PARAMS);
-            }else{
-                addNewObjectBatch(*mod,i_rpc->method.id,new ModJsonRpc::RpcObject<DigitalOut>(new DigitalOut(MbedJsApi::pinId2PinName(pin),value)));
+            PinName pin;
+            if(getParamsAsPin(mod,i_rpc,&pin,1)){
+                int v;
+                if(getParamInt(mod,i_rpc,v,1)){
+                    addNewObjectBatch(mod,i_rpc->method.id,new ModJsonRpc::RpcObject<DigitalOut>(new DigitalOut(pin,v)));
+                }
             }
-            return NyLPC_TBool_TRUE;            
+            return NyLPC_TBool_TRUE;
         }
         static NyLPC_TBool write(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)
         {
+            //dd return void
             ModJsonRpc* mod=(ModJsonRpc*)i_param;
-            NyLPC_TInt32 iid,value;            
-            if( (!NyLPC_TJsonRpcParserResult_getInt32(i_rpc,0,&iid)) ||
-                (!NyLPC_TJsonRpcParserResult_getInt32(i_rpc,1,&value)))
-            {
-                mod->putError(i_rpc->method.id,ModJsonRpc::INVALID_PARAMS);
-            }else{
-                DigitalOut* inst=(DigitalOut*)getObjectBatch(*mod,i_rpc->method.id,iid);
-                if(inst!=NULL){
-                    inst->write(value);
+            DigitalOut* inst=(DigitalOut*)getObjectBatch(mod,i_rpc);
+            if(inst!=NULL){
+                int v;
+                if(getParamInt(mod,i_rpc,v,1)){
+                    inst->write(v);
                     mod->putResult(i_rpc->method.id,"");
                 }
             }
@@ -77,19 +44,13 @@
         }
         static NyLPC_TBool read(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)
         {
+            //d return d
             ModJsonRpc* mod=(ModJsonRpc*)i_param;
-            NyLPC_TInt32 iid;            
-            if( (!NyLPC_TJsonRpcParserResult_getInt32(i_rpc,0,&iid)))
-            {
-                mod->putError(i_rpc->method.id,ModJsonRpc::INVALID_PARAMS);
-            }else{
-                DigitalOut* inst=(DigitalOut*)getObjectBatch(*mod,i_rpc->method.id,iid);
-                if(inst!=NULL){
-                    int v=inst->read();
-                    mod->putResult(i_rpc->method.id,"%d",v);
-                }
+            DigitalOut* inst=(DigitalOut*)getObjectBatch(mod,i_rpc);
+            if(inst!=NULL){
+                mod->putResult(i_rpc->method.id,"%d",(int)(inst->read()));
             }
-            return NyLPC_TBool_TRUE; 
+            return NyLPC_TBool_TRUE;
         }
     };