RPC_Handle_t RPC_SYS_RegisterClient(const RPC_InitParams_t *params) { UInt8 userClientID; UInt8 clientIndex = 0; gClientIndex++; clientIndex = gClientIndex; if(clientIndex >= MAX_RPC_CLIENTS) return (RPC_Handle_t)NULL; gClientMap[clientIndex] = *params; RPC_PACKET_RegisterDataInd(0, (PACKET_InterfaceType_t)(gClientMap[clientIndex].iType), RPC_BufferDelivery, params->flowCb); rpc_internal_xdr_init(); rpc_register_xdr(clientIndex, params->xdrtbl, params->table_size); userClientID = SYS_GenClientID(); gClientIDs[userClientID] = clientIndex; gClientIDMap[clientIndex] = userClientID; gClientLocalMap[clientIndex].notifyUnsolicited = FALSE; _DBG_(RPC_TRACE("RPC_SYS_RegisterClient index=%d userClientID=%d", clientIndex, userClientID)); return (RPC_Handle_t)clientIndex; }
RPC_Handle_t RPC_SYS_RegisterClient(const RPC_InitParams_t *params) { UInt8 userClientID; UInt8 clientIndex = 0; int index; _DBG_(RPC_TRACE("RPC_SYS_RegisterClient gRpcInit=%d tblSize=%d", gRpcInit, params->table_size)); if (!gRpcInit) RPC_SYS_Init(NULL); RPC_USER_LOCK(gRpcLock); index = RPC_FindUnsedSlot(); if (index == -1) { _DBG_(RPC_TRACE ("RPC_SYS_RegisterClient ERROR Max clients reached")); RPC_USER_UNLOCK(gRpcLock); return (RPC_Handle_t) 0; } gClientIndex++; clientIndex = index; gClientMap[clientIndex] = *params; userClientID = SYS_GenClientID(); if (userClientID == 0) { _DBG_(RPC_TRACE ("RPC_SYS_RegisterClient client ID allocation fail")); RPC_USER_UNLOCK(gRpcLock); return (RPC_Handle_t) 0; } _DBG_(RPC_TRACE ("RPC_SYS_RegisterClient index=%d userClientID=%d gClientIndex=%d", clientIndex, userClientID, gClientIndex)); RPC_PACKET_RegisterDataInd(userClientID, (PACKET_InterfaceType_t)(gClientMap [clientIndex]. iType), RPC_BufferDelivery, params->flowCb, RPC_Handle_CPReset); rpc_internal_xdr_init(); rpc_register_xdr(clientIndex, params->xdrtbl, params->table_size); gClientIDs[userClientID] = clientIndex; gClientIDMap[clientIndex] = userClientID; gClientLocalMap[clientIndex].notifyUnsolicited = FALSE; gClientLocalMap[clientIndex].ackdCPReset = FALSE; RPC_USER_UNLOCK(gRpcLock); return (RPC_Handle_t) clientIndex; }