static void HandleSysReqMsg(RPC_Msg_t* pMsg, ResultDataBufHandle_t dataBufHandle, UInt32 userContextData) { Boolean ret; SYS_ReqRep_t* req = (SYS_ReqRep_t*)pMsg->dataBuf; RPC_SendAckForRequest(dataBufHandle, 0); #ifndef UNDER_LINUX ret = SYS_IsRegisteredClientID(pMsg->clientID); SYS_TRACE( "HandleSysReqMsg msg=0x%x clientID=%d ret=%d\n", pMsg->msgId, pMsg->clientID, ret); if(pMsg->clientID > 0 && !ret && pMsg->msgId != MSG_SYS_SYNC_REG_EVENT_REQ) { SYS_RegisterForPredefinedClient(SYS_DefaultRemoteHandler, pMsg->clientID, 0xFFFFFFFF); } #endif if(pMsg->msgId == MSG_AT_COMMAND_REQ) { } else { SYS_GenCommsMsgHnd(pMsg,req); } RPC_SYSFreeResultDataBuffer(dataBufHandle); }
Result_t RPC_SerializeMsg(RPC_InternalMsg_t* rpcMsg, char* stream, UInt32 streamLen, UInt32 *outLen) { XDR xdrs; Result_t result = RESULT_OK; Boolean isValid = SYS_IsRegisteredClientID(rpcMsg->rootMsg.clientID); if(!isValid) _DBG_(RPC_TRACE_INFO("RPC_SYS_isValidClientID (Invalid) %d", rpcMsg->rootMsg.clientID)); //assert(isValid); if(DETAIL_LOG_ENABLED) xdrmem_create(&xdrs, stream, streamLen, log_buf, MAX_LOG_BUFFER_SIZE, XDR_ENCODE); else xdrmem_create(&xdrs, stream, streamLen, NULL, 0, XDR_ENCODE); result = (xdr_RPC_InternalMsg_t(&xdrs, rpcMsg)) ? RESULT_OK : RESULT_ERROR; #ifdef DEVELOPMENT_RPC_XDR_DETAIL_LOG if(DETAIL_LOG_ENABLED) { if(rpcMsg->rootMsg.msgId != MSG_CAPI2_ACK_RSP && (xdrs.x_op == XDR_ENCODE || xdrs.x_op == XDR_DECODE)) { if((strlen(log_buf)+3) < MAX_LOG_BUFFER_SIZE) strncat(log_buf,"}\r\n",3); _DBG_(Rpc_DebugOutputString(log_buf)); } } #endif *outLen = xdr_getpos(&xdrs); xdr_destroy(&xdrs); return(result); }