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

Dependents:   MbedFileServer_1768MiniDK2 RedWireBridge IssueDebug_gcc MiMicRemoteMCU-for-Mbed ... more

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers RpcI2CSlave.cpp Source File

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