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

Fork of libMiMic by Ryo Iizuka

Committer:
nyatla
Date:
Fri Jun 13 11:06:33 2014 +0000
Revision:
72:c118a7aa37a3
Child:
75:2a18df0ef111
mbedAPI???????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nyatla 72:c118a7aa37a3 1 #include "NyLPC_http.h"
nyatla 72:c118a7aa37a3 2 #include "mod/ModJsonRpc.h"
nyatla 72:c118a7aa37a3 3 #include "mbed.h"
nyatla 72:c118a7aa37a3 4 namespace MiMic
nyatla 72:c118a7aa37a3 5 {
nyatla 72:c118a7aa37a3 6 class RpcHandlerBase
nyatla 72:c118a7aa37a3 7 {
nyatla 72:c118a7aa37a3 8 public:
nyatla 72:c118a7aa37a3 9 static void addNewObjectBatch(ModJsonRpc& i_mod,unsigned int i_id,void* i_new_object)
nyatla 72:c118a7aa37a3 10 {
nyatla 72:c118a7aa37a3 11 int i=i_mod.addObject(i_new_object);
nyatla 72:c118a7aa37a3 12 if(i<0){
nyatla 72:c118a7aa37a3 13 delete i_new_object;
nyatla 72:c118a7aa37a3 14 i_mod.putError(i_id,ModJsonRpc::INVALID_PARAMS);
nyatla 72:c118a7aa37a3 15 return;
nyatla 72:c118a7aa37a3 16 }
nyatla 72:c118a7aa37a3 17 i_mod.putResult(i_id,"%d",i);
nyatla 72:c118a7aa37a3 18 return;
nyatla 72:c118a7aa37a3 19 }
nyatla 72:c118a7aa37a3 20 static void* getObjectBatch(ModJsonRpc& i_mod,unsigned int i_id,int i_iid)
nyatla 72:c118a7aa37a3 21 {
nyatla 72:c118a7aa37a3 22 void* ret=i_mod.getObject(i_iid);
nyatla 72:c118a7aa37a3 23 if(ret==NULL){
nyatla 72:c118a7aa37a3 24 i_mod.putError(i_id,ModJsonRpc::INTERNAL_ERROR);
nyatla 72:c118a7aa37a3 25 }
nyatla 72:c118a7aa37a3 26 return ret;
nyatla 72:c118a7aa37a3 27 }
nyatla 72:c118a7aa37a3 28 };
nyatla 72:c118a7aa37a3 29
nyatla 72:c118a7aa37a3 30 class DigitalOutHandler :RpcHandlerBase
nyatla 72:c118a7aa37a3 31 {
nyatla 72:c118a7aa37a3 32 public:
nyatla 72:c118a7aa37a3 33 static NyLPC_TBool new1(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)
nyatla 72:c118a7aa37a3 34 {
nyatla 72:c118a7aa37a3 35 ModJsonRpc* mod=(ModJsonRpc*)i_param;
nyatla 72:c118a7aa37a3 36 NyLPC_TUInt32 pin;
nyatla 72:c118a7aa37a3 37 if(!NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,0,&pin)){
nyatla 72:c118a7aa37a3 38 mod->putError(i_rpc->method.id,ModJsonRpc::INVALID_PARAMS);
nyatla 72:c118a7aa37a3 39 }else{
nyatla 72:c118a7aa37a3 40 addNewObjectBatch(*mod,i_rpc->method.id,new DigitalOut(PinName(pin)));
nyatla 72:c118a7aa37a3 41 }
nyatla 72:c118a7aa37a3 42 return NyLPC_TBool_TRUE;
nyatla 72:c118a7aa37a3 43 }
nyatla 72:c118a7aa37a3 44 static NyLPC_TBool new2(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)
nyatla 72:c118a7aa37a3 45 {
nyatla 72:c118a7aa37a3 46 ModJsonRpc* mod=(ModJsonRpc*)i_param;
nyatla 72:c118a7aa37a3 47 NyLPC_TUInt32 pin;
nyatla 72:c118a7aa37a3 48 NyLPC_TInt32 value;
nyatla 72:c118a7aa37a3 49 //pin number
nyatla 72:c118a7aa37a3 50 if( (!NyLPC_TJsonRpcParserResult_getUInt32(i_rpc,0,&pin)) ||
nyatla 72:c118a7aa37a3 51 (!NyLPC_TJsonRpcParserResult_getInt32(i_rpc,1,&value)))
nyatla 72:c118a7aa37a3 52 {
nyatla 72:c118a7aa37a3 53 mod->putError(i_rpc->method.id,ModJsonRpc::INVALID_PARAMS);
nyatla 72:c118a7aa37a3 54 }else{
nyatla 72:c118a7aa37a3 55 addNewObjectBatch(*mod,i_rpc->method.id,new DigitalOut(PinName(pin),value));
nyatla 72:c118a7aa37a3 56 }
nyatla 72:c118a7aa37a3 57 return NyLPC_TBool_TRUE;
nyatla 72:c118a7aa37a3 58 }
nyatla 72:c118a7aa37a3 59 static NyLPC_TBool write(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)
nyatla 72:c118a7aa37a3 60 {
nyatla 72:c118a7aa37a3 61 ModJsonRpc* mod=(ModJsonRpc*)i_param;
nyatla 72:c118a7aa37a3 62 NyLPC_TInt32 iid,value;
nyatla 72:c118a7aa37a3 63 if( (!NyLPC_TJsonRpcParserResult_getInt32(i_rpc,0,&iid)) ||
nyatla 72:c118a7aa37a3 64 (!NyLPC_TJsonRpcParserResult_getInt32(i_rpc,1,&value)))
nyatla 72:c118a7aa37a3 65 {
nyatla 72:c118a7aa37a3 66 mod->putError(i_rpc->method.id,ModJsonRpc::INVALID_PARAMS);
nyatla 72:c118a7aa37a3 67 }else{
nyatla 72:c118a7aa37a3 68 DigitalOut* inst=(DigitalOut*)getObjectBatch(*mod,i_rpc->method.id,iid);
nyatla 72:c118a7aa37a3 69 if(inst!=NULL){
nyatla 72:c118a7aa37a3 70 inst->write(value);
nyatla 72:c118a7aa37a3 71 mod->putResult(i_rpc->method.id,"");
nyatla 72:c118a7aa37a3 72 }
nyatla 72:c118a7aa37a3 73 }
nyatla 72:c118a7aa37a3 74 return NyLPC_TBool_TRUE;
nyatla 72:c118a7aa37a3 75 }
nyatla 72:c118a7aa37a3 76 static NyLPC_TBool read(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param)
nyatla 72:c118a7aa37a3 77 {
nyatla 72:c118a7aa37a3 78 ModJsonRpc* mod=(ModJsonRpc*)i_param;
nyatla 72:c118a7aa37a3 79 NyLPC_TInt32 iid;
nyatla 72:c118a7aa37a3 80 if( (!NyLPC_TJsonRpcParserResult_getInt32(i_rpc,0,&iid)))
nyatla 72:c118a7aa37a3 81 {
nyatla 72:c118a7aa37a3 82 mod->putError(i_rpc->method.id,ModJsonRpc::INVALID_PARAMS);
nyatla 72:c118a7aa37a3 83 }else{
nyatla 72:c118a7aa37a3 84 DigitalOut* inst=(DigitalOut*)getObjectBatch(*mod,i_rpc->method.id,iid);
nyatla 72:c118a7aa37a3 85 if(inst!=NULL){
nyatla 72:c118a7aa37a3 86 int v=inst->read();
nyatla 72:c118a7aa37a3 87 mod->putResult(i_rpc->method.id,"%d",v);
nyatla 72:c118a7aa37a3 88 }
nyatla 72:c118a7aa37a3 89 }
nyatla 72:c118a7aa37a3 90 return NyLPC_TBool_TRUE;
nyatla 72:c118a7aa37a3 91 }
nyatla 72:c118a7aa37a3 92 };
nyatla 72:c118a7aa37a3 93
nyatla 72:c118a7aa37a3 94
nyatla 72:c118a7aa37a3 95
nyatla 72:c118a7aa37a3 96 const struct NyLPC_TJsonRpcMethodDef RpcDigitalOut[]=
nyatla 72:c118a7aa37a3 97 {
nyatla 72:c118a7aa37a3 98 { "_new1" ,"u" ,DigitalOutHandler::new1},
nyatla 72:c118a7aa37a3 99 { "_new2" ,"ud" ,DigitalOutHandler::new2},
nyatla 72:c118a7aa37a3 100 { "write" ,"dd" ,DigitalOutHandler::write},
nyatla 72:c118a7aa37a3 101 { "read" ,"d" ,DigitalOutHandler::read},
nyatla 72:c118a7aa37a3 102 { NULL ,NULL ,NULL}
nyatla 72:c118a7aa37a3 103 };
nyatla 72:c118a7aa37a3 104
nyatla 72:c118a7aa37a3 105
nyatla 72:c118a7aa37a3 106
nyatla 72:c118a7aa37a3 107
nyatla 72:c118a7aa37a3 108 }