Example #1
0
void RTPSsocketInit(RTPSsocket* socket, microRTPS* mRTPS)
{
	unsigned portBASE_TYPE i;
	socket->semNewMsg = xSemaphoreCreateCounting(MSG_QUEUE_LENGTH, 0);
	socket->mRTPS = mRTPS;
	socket->last_read.msgID=0;
	socket->last_read.tpbufID=0;
	socket->startup=1;

	for(i=0; i<MAX_TOPICS; i++)
	{
		socket->subscribedTopics[i].topicID=0;
		socket->subscribedTopics[i].tpbufID=MAX_TOPICS;
	}

	MsgQueueInit(&(socket->msgQueue));

	SLE_Init(&(socket->listItem), socket);
	SLE_Push(&socket->mRTPS->socketList, &socket->listItem);
}
Example #2
0
/******************************************************************************
			RPC IPC Buffer Pool Config Init
*******************************************************************************/
RPC_Result_t RPC_IPC_Init(RpcProcessorType_t rpcProcType)
{
	PACKET_InterfaceType_t itype;
	Int8 index;
	int ret;

#if defined(CNEON_COMMON) && defined(FUSE_APPS_PROCESSOR)
	/* wait for CP RPC ready - need to find better way */
	OSTASK_Sleep(TICKS_ONE_SECOND / 10);
#endif /* (CNEON_COMMON) && (FUSE_APPS_PROCESSOR) */
	memset(ipcBufList, 0, sizeof(ipcBufList));

	for (itype = INTERFACE_START; itype < INTERFACE_TOTAL; itype++) {

		if (itype >= INTERFACE_CAPI2 && itype < INTERFACE_PACKET) {
			ipcBufList[itype].max_pkts[0] = CFG_RPC_CMD_MAX_PACKETS;
			ipcBufList[itype].max_pkts[1] =
			    CFG_RPC_CMD_MAX_PACKETS2;
			ipcBufList[itype].max_pkts[2] =
			    CFG_RPC_CMD_MAX_PACKETS3;

			ipcBufList[itype].pkt_size[0] = CFG_RPC_CMD_PKT_SIZE;
			ipcBufList[itype].pkt_size[1] = CFG_RPC_CMD_PKT_SIZE2;
			ipcBufList[itype].pkt_size[2] = CFG_RPC_CMD_PKT_SIZE3;

			ipcBufList[itype].start_threshold =
			    CFG_RPC_CMD_START_THRESHOLD;
			ipcBufList[itype].end_threshold =
			    CFG_RPC_CMD_END_THRESHOLD;

			ipcBufList[itype].srcEpId =
			    (rpcProcType ==
			     RPC_COMMS) ? IPC_EP_Capi2Cp : IPC_EP_Capi2App;
			ipcBufList[itype].destEpId =
			    (rpcProcType ==
			     RPC_COMMS) ? IPC_EP_Capi2App : IPC_EP_Capi2Cp;
		} else if (itype == INTERFACE_DRX) {
			ipcBufList[itype].max_pkts[0] = CFG_RPC_DRX_MAX_PACKETS;
			ipcBufList[itype].pkt_size[0] = CFG_RPC_DRX_PKT_SIZE;

			ipcBufList[itype].start_threshold =
			    CFG_RPC_DRX_START_THRESHOLD;
			ipcBufList[itype].end_threshold =
			    CFG_RPC_DRX_END_THRESHOLD;

			ipcBufList[itype].srcEpId =
			    (rpcProcType ==
			     RPC_COMMS) ? IPC_EP_DrxCP : IPC_EP_DrxAP;
			ipcBufList[itype].destEpId =
			    (rpcProcType ==
			     RPC_COMMS) ? IPC_EP_DrxAP : IPC_EP_DrxCP;
		} else if (itype == INTERFACE_PACKET) {
			for (index = 0; index < MAX_CHANNELS; index++) {
				ipcBufList[itype].pkt_size[(int)index] =
				    CFG_RPC_PKTDATA_PKT_SIZE;
				ipcBufList[itype].max_pkts[(int)index] =
				    (rpcProcType ==
				     RPC_COMMS) ?
				    CFG_RPC_PKTDATA_MAX_NW2TE_PACKETS :
				    CFG_RPC_PKTDATA_MAX_TE2NW_PACKETS;
			}
			ipcBufList[itype].start_threshold =
			    CFG_RPC_PKT_START_THRESHOLD;
			ipcBufList[itype].end_threshold =
			    CFG_RPC_PKT_END_THRESHOLD;

			ipcBufList[itype].srcEpId =
			    (rpcProcType ==
			     RPC_COMMS) ? IPC_EP_PsCpData : IPC_EP_PsAppData;
			ipcBufList[itype].destEpId =
			    (rpcProcType ==
			     RPC_COMMS) ? IPC_EP_PsAppData : IPC_EP_PsCpData;
		} else if (itype == INTERFACE_USB_EEM) {
			for (index = 0; index < MAX_CHANNELS; index++) {
				ipcBufList[itype].pkt_size[(int)index] =
				    CFG_RPC_EEMDATA_PKT_SIZE;
				ipcBufList[itype].max_pkts[(int)index] =
				    CFG_RPC_EEMDATA_MAX_PACKETS;
			}
			ipcBufList[itype].start_threshold =
			    CFG_RPC_EEM_START_THRESHOLD;
			ipcBufList[itype].end_threshold =
			    CFG_RPC_EEM_END_THRESHOLD;

#ifdef IPC_EP_EemAP
			ipcBufList[itype].srcEpId =
			    (rpcProcType ==
			     RPC_COMMS) ? IPC_EP_EemCP : IPC_EP_EemAP;
			ipcBufList[itype].destEpId =
			    (rpcProcType ==
			     RPC_COMMS) ? IPC_EP_EemAP : IPC_EP_EemCP;
#endif
		} else if (itype == INTERFACE_CSD) {
			for (index = 0; index < MAX_CHANNELS; index++) {
				ipcBufList[itype].pkt_size[(int)index] =
				    CFG_RPC_CSDDATA_PKT_SIZE;
				ipcBufList[itype].max_pkts[(int)index] =
				    CFG_RPC_CSDDATA_MAX_PACKETS;
			}
			ipcBufList[itype].start_threshold =
			    CFG_RPC_CSD_START_THRESHOLD;
			ipcBufList[itype].end_threshold =
			    CFG_RPC_CSD_END_THRESHOLD;

			ipcBufList[itype].srcEpId =
			    (rpcProcType ==
			     RPC_COMMS) ? IPC_EP_CsdCpCSDData :
			    IPC_EP_CsdAppCSDData;
			ipcBufList[itype].destEpId =
			    (rpcProcType ==
			     RPC_COMMS) ? IPC_EP_CsdAppCSDData :
			    IPC_EP_CsdCpCSDData;
		} else if (itype == INTERFACE_LOGGING) {
#if !defined(UNDER_CE) &&  !defined(UNDER_LINUX)	/*modify for UDP log */
			for (index = 0; index < MAX_CHANNELS; index++) {
				ipcBufList[itype].pkt_size[index] =
				    CFG_RPC_LOG_PKT_SIZE;
				ipcBufList[itype].max_pkts[index] =
				    CFG_RPC_LOG_MAX_PACKETS;
			}
			ipcBufList[itype].start_threshold =
			    CFG_RPC_LOG_START_THRESHOLD;
			ipcBufList[itype].end_threshold =
			    CFG_RPC_LOG_END_THRESHOLD;

			ipcBufList[itype].srcEpId =
			    (rpcProcType ==
			     RPC_COMMS) ? IPC_EP_LogCp : IPC_EP_LogApps;
			ipcBufList[itype].destEpId =
			    (rpcProcType ==
			     RPC_COMMS) ? IPC_EP_LogApps : IPC_EP_LogCp;
#endif
		} else if (itype == INTERFACE_SERIAL) {
			ipcBufList[itype].max_pkts[0] =
			    CFG_RPC_SERIALDATA_MAX_PACKETS;
			ipcBufList[itype].max_pkts[1] =
			    CFG_RPC_SERIALDATA_MAX_PACKETS2;

			ipcBufList[itype].pkt_size[0] =
			    CFG_RPC_SERIALDATA_PKT_SIZE;
			ipcBufList[itype].pkt_size[1] =
			    CFG_RPC_SERIALDATA_PKT_SIZE2;

			ipcBufList[itype].start_threshold =
			    CFG_RPC_SERIAL_START_THRESHOLD;
			ipcBufList[itype].end_threshold =
			    CFG_RPC_SERIAL_END_THRESHOLD;

			ipcBufList[itype].srcEpId =
			    (rpcProcType ==
			     RPC_COMMS) ? IPC_EP_SerialCP : IPC_EP_SerialAP;
			ipcBufList[itype].destEpId =
			    (rpcProcType ==
			     RPC_COMMS) ? IPC_EP_SerialAP : IPC_EP_SerialCP;
		} else
			xassert(0, itype);

	}

	RPC_LOCK_INIT;

#ifdef USE_KTHREAD_HANDOVER
	ret = MsgQueueInit(&rpcMQhandle, rpcKthreadFn,
			   "RpcKThread", 0, NULL, "krpc_wake_lock");

	if (ret != 0) {
		_DBG_(RPC_TRACE("RPC_IPC_Init: MsgQueueInit failed\n"));
		printk(KERN_CRIT "RPC_IPC_Init: MsgQueueInit fail\n");
		return RPC_RESULT_ERROR;
	}
#endif
	sCPResetting = FALSE;
	sIsNotifyingCPReset = FALSE;
	/* register notification handler for silent CP reset */
	sIPCResetClientId =
	    IPCAP_RegisterCPResetHandler(RPC_PACKET_RPCNotificationHandler);

	rpc_wake_lock_init();
	recvRpcPkts = 0;
	freeRpcPkts = 0;
	return RPC_RESULT_OK;
}