This is Webservice SDK for mbed. LPCXpresso1769/LPC1768/FRDM-K64F/LPC4088
Dependents: MbedFileServer_1768MiniDK2 RedWireBridge IssueDebug_gcc MiMicRemoteMCU-for-Mbed ... more
RpcI2CSlave.cpp
00001 #include "RpcHandlerBase.h" 00002 namespace MiMic 00003 { 00004 class I2CSlaveHandler :RpcHandlerBase 00005 { 00006 public: 00007 static NyLPC_TBool new1(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param) 00008 { 00009 //u 00010 ModJsonRpc* mod=((ModJsonRpc::TcJsonRpcEx_t*)i_param)->cppmod_ptr; 00011 PinName pins[2]; 00012 if(getParamsAsPin(mod,i_rpc,pins,2)){ 00013 addNewObjectBatch(mod,i_rpc->method.id,new ModJsonRpc::RpcObject<I2CSlave>(new I2CSlave(pins[0],pins[1]))); 00014 } 00015 return NyLPC_TBool_TRUE; 00016 } 00017 static NyLPC_TBool frequency(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param) 00018 { 00019 //d return d 00020 ModJsonRpc* mod=((ModJsonRpc::TcJsonRpcEx_t*)i_param)->cppmod_ptr; 00021 I2CSlave* inst=(I2CSlave*)getObjectBatch(mod,i_rpc); 00022 if(inst!=NULL){ 00023 int v; 00024 if(getParamInt(mod,i_rpc,v,1)){ 00025 inst->frequency(v); 00026 mod->putResult(i_rpc->method.id); 00027 } 00028 } 00029 return NyLPC_TBool_TRUE; 00030 } 00031 static NyLPC_TBool receive(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param) 00032 { 00033 //d return d 00034 ModJsonRpc* mod=((ModJsonRpc::TcJsonRpcEx_t*)i_param)->cppmod_ptr; 00035 I2CSlave* inst=(I2CSlave*)getObjectBatch(mod,i_rpc); 00036 if(inst!=NULL){ 00037 mod->putResult(i_rpc->method.id,"%d",inst->receive()); 00038 } 00039 return NyLPC_TBool_TRUE; 00040 } 00041 static NyLPC_TBool read1(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param) 00042 { 00043 //db return dB 00044 ModJsonRpc* mod=((ModJsonRpc::TcJsonRpcEx_t*)i_param)->cppmod_ptr; 00045 I2CSlave* inst=(I2CSlave*)getObjectBatch(mod,i_rpc); 00046 if(inst!=NULL){ 00047 unsigned char len; 00048 if(getParamByte(mod,i_rpc,len,1)){ 00049 char* data=new char[len]; 00050 int r=inst->read(data,len); 00051 mod->putResult(i_rpc->method.id,"%d,\"%.*B\"",r,(int)len,data); 00052 delete[] data; 00053 } 00054 } 00055 return NyLPC_TBool_TRUE; 00056 } 00057 static NyLPC_TBool read2(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param) 00058 { 00059 //dd return d 00060 ModJsonRpc* mod=((ModJsonRpc::TcJsonRpcEx_t*)i_param)->cppmod_ptr; 00061 I2CSlave* inst=(I2CSlave*)getObjectBatch(mod,i_rpc); 00062 if(inst!=NULL){ 00063 mod->putResult(i_rpc->method.id,"%d",inst->read()); 00064 } 00065 return NyLPC_TBool_TRUE; 00066 } 00067 static NyLPC_TBool write1(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param) 00068 { 00069 //ddBd return d 00070 ModJsonRpc* mod=((ModJsonRpc::TcJsonRpcEx_t*)i_param)->cppmod_ptr; 00071 I2CSlave* inst=(I2CSlave*)getObjectBatch(mod,i_rpc); 00072 if(inst!=NULL){ 00073 const unsigned char* data; 00074 unsigned char len; 00075 if(getParamByteArray(mod,i_rpc,data,len,1)){ 00076 mod->putResult(i_rpc->method.id,"%d",inst->write((const char*)data,len)); 00077 } 00078 } 00079 return NyLPC_TBool_TRUE; 00080 } 00081 static NyLPC_TBool write2(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param) 00082 { 00083 //dd return d 00084 ModJsonRpc* mod=((ModJsonRpc::TcJsonRpcEx_t*)i_param)->cppmod_ptr; 00085 I2CSlave* inst=(I2CSlave*)getObjectBatch(mod,i_rpc); 00086 if(inst!=NULL){ 00087 int data; 00088 if(getParamInt(mod,i_rpc,data,1)){ 00089 mod->putResult(i_rpc->method.id,"%d",inst->write(data)); 00090 } 00091 } 00092 return NyLPC_TBool_TRUE; 00093 } 00094 static NyLPC_TBool address(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param) 00095 { 00096 //dd return d 00097 ModJsonRpc* mod=((ModJsonRpc::TcJsonRpcEx_t*)i_param)->cppmod_ptr; 00098 I2CSlave* inst=(I2CSlave*)getObjectBatch(mod,i_rpc); 00099 if(inst!=NULL){ 00100 int addr; 00101 if(getParamInt(mod,i_rpc,addr,1)){ 00102 inst->address(addr); 00103 mod->putResult(i_rpc->method.id); 00104 } 00105 } 00106 return NyLPC_TBool_TRUE; 00107 } 00108 static NyLPC_TBool stop(const union NyLPC_TJsonRpcParserResult* i_rpc,void* i_param) 00109 { 00110 //d return d 00111 ModJsonRpc* mod=((ModJsonRpc::TcJsonRpcEx_t*)i_param)->cppmod_ptr; 00112 I2CSlave* inst=(I2CSlave*)getObjectBatch(mod,i_rpc); 00113 if(inst!=NULL){ 00114 inst->stop(); 00115 mod->putResult(i_rpc->method.id); 00116 } 00117 return NyLPC_TBool_TRUE; 00118 } 00119 }; 00120 00121 00122 const static struct NyLPC_TJsonRpcMethodDef func_table[]= 00123 { 00124 { "_new1" ,"uu" ,I2CSlaveHandler::new1}, 00125 { "frequency" ,"dd" ,I2CSlaveHandler::frequency}, 00126 { "receive" ,"d" ,I2CSlaveHandler::receive}, 00127 { "read1" ,"db" ,I2CSlaveHandler::read1}, 00128 { "read2" ,"d" ,I2CSlaveHandler::read2}, 00129 { "write1" ,"dB" ,I2CSlaveHandler::write1}, 00130 { "write2" ,"dd" ,I2CSlaveHandler::write2}, 00131 { "address" ,"dd" ,I2CSlaveHandler::address}, 00132 { "stop" ,"d" ,I2CSlaveHandler::stop}, 00133 { NULL ,NULL ,NULL} 00134 }; 00135 00136 const struct NyLPC_TJsonRpcClassDef MbedJsApi::RPC_MBED_I2C_SLAVE={ 00137 "mbedJS","I2CSlave",func_table 00138 }; 00139 } 00140
Generated on Tue Jul 12 2022 15:46:17 by 1.7.2