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);
}
Beispiel #2
0
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);
}