1c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*
2c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Copyright (c) 2010, Texas Instruments Incorporated
3c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * All rights reserved.
4c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
5c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Redistribution and use in source and binary forms, with or without
6c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * modification, are permitted provided that the following conditions
7c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * are met:
8c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
9c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * *  Redistributions of source code must retain the above copyright
10c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *    notice, this list of conditions and the following disclaimer.
11c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
12c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * *  Redistributions in binary form must reproduce the above copyright
13c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *    notice, this list of conditions and the following disclaimer in the
14c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *    documentation and/or other materials provided with the distribution.
15c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
16c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * *  Neither the name of Texas Instruments Incorporated nor the names of
17c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *    its contributors may be used to endorse or promote products derived
18c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *    from this software without specific prior written permission.
19c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
20c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
32c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
33c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
34c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  @file  omx_rpc_utils.c
35c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *         This file contains methods that provides the functionality for
36c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *         the OpenMAX1.1 DOMX Framework RPC.
37c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
38c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  @path \WTSD_DucatiMMSW\framework\domx\omx_rpc\src
39c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
40c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  @rev 1.0
41c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
42c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
43c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*==============================================================
44c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *! Revision History
45c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *! ============================
46c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *! 29-Mar-2010 Abhishek Ranka : Revamped DOMX implementation
47c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *!
48c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *! 19-August-2009 B Ravi Kiran ravi.kiran@ti.com: Initial Version
49c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *================================================================*/
50c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/******************************************************************
51c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *   INCLUDE FILES
52c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev ******************************************************************/
53c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <string.h>
54c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <stdio.h>
55c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
56c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include "omx_rpc.h"
57c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include "omx_rpc_internal.h"
58c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include "omx_rpc_utils.h"
59c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <MultiProc.h>
60c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <ProcMgr.h>
61c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
62c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevextern char rcmservertable[MAX_PROC][MAX_SERVER_NAME_LENGTH];
63c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevextern char Core_Array[MAX_PROC][MAX_CORENAME_LENGTH];
64c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
65c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
66c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
67c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @name EMPTY-STUB
68c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @brief
69c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @param
70c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @return
71c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
72c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
73c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
74c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevRPC_OMX_ERRORTYPE RPC_UTIL_GetTargetServerName(OMX_STRING ComponentName,
75c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_STRING ServerName)
76c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
77c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_U8 count = 0;
78c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_U8 i = 0;
79c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_U8 servertable_idx = 0;
80c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_STRING str;
81c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	char Core[MAX_CORENAME_LENGTH];
82c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
83c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_ENTER("");
84c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_DEBUG(" Calling Component Name %s", ComponentName);
85c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
86c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	while (*ComponentName != '\0')
87c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	{
88c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		if (*ComponentName == '.')
89c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		{
90c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev			count++;
91c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev			if (count == 2)
92c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev			{
93c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev				ComponentName++;
94c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev				str = ComponentName;
95c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
96c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev				while (*str != '.')
97c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev				{
98c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev					Core[i] = *str;
99c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev					i++;
100c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev					str++;
101c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev				}
102c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev				Core[i] = '\0';
103c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev				break;
104c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev			}
105c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
106c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		}
107c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
108c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		ComponentName++;
109c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	}
110c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
111c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_DEBUG(" CORE NAME RECOVERED: %s", Core);
112c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_DEBUG
113c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    ("____________________________________________________________");
114c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_DEBUG("Recovering Server Table Index");
115c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	for (i = 0; i < CORE_MAX; i++)
116c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	{
117c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
118c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		if (strcmp(Core, Core_Array[i]) == 0)
119c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		{
120c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev			servertable_idx = i;
121c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev			DOMX_DEBUG("Recovered Server table index = %d", i);
122c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev			break;
123c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		}
124c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	}
125c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	strncpy(ServerName, (OMX_STRING) rcmservertable[servertable_idx],
126c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    MAX_SERVER_NAME_LENGTH);
127c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_DEBUG(" ServerName recovered = %s", ServerName);
128c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
129c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	return RPC_OMX_ErrorNone;
130c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}
131c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
132c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
133c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
134c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @name EMPTY-STUB
135c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @brief
136c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @param
137c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @return
138c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
139c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
140c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
141c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevRPC_OMX_ERRORTYPE RPC_UTIL_GetLocalServerName(OMX_STRING ComponentName,
142c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_STRING * ServerName)
143c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
144c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* Implementation returns only current core ID - But this is a place holder to abstract out the
145c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevdefault server and other additional servers available on the current core. This additional servers
146c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevshould be available in the RPC global that is indexed using the calling component name*/
147c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	RPC_OMX_ERRORTYPE eRPCError = RPC_OMX_ErrorNone;
148c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_U8 servertable_idx = 0;
149c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
150c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	servertable_idx = MultiProc_getId(NULL);	//This can be replace with the mechanism to obtain new addition rcm servers
151c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	if (MultiProc_INVALIDID != servertable_idx)
152c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		*ServerName = rcmservertable[servertable_idx];
153c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	else
154c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		eRPCError = RPC_OMX_ErrorUndefined;
155c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
156c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	return eRPCError;
157c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}
158c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
159c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
160c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
161c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
162c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
163c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @name RPC_UTIL_GenerateLocalServerName()
164c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @brief This function generates a server name to be used while creating the
165c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *        RCM server. The name is based on the pid so that eacj process gets a
166c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *        unique server name.
167c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @param cServerName - This is filled in and returned with a valid value.
168c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @return RPC_OMX_ErrorNone = Successful
169c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @sa TBD
170c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
171c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
172c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
173c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevRPC_OMX_ERRORTYPE RPC_UTIL_GenerateLocalServerName(OMX_STRING cServerName)
174c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
175c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	RPC_OMX_ERRORTYPE eRPCError = RPC_OMX_ErrorNone;
176c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_S32 pid = 0;
177c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_U32 nProcId = 0;
178c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
179c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	pid = getpid();
180c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	/*Using pid as the server name, thus limiting to only 1 server per process.
181c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	   This limitaion is partly enforce by syslink as well since max size of server
182c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	   name is 32 so only pid can fit into the name */
183c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	sprintf(cServerName, "%ld", pid);
184c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
185c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	nProcId = MultiProc_getId(NULL);
186c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	if (MultiProc_INVALIDID != nProcId)
187c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		/*Fill the server table with the newly generated name */
188c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		strncpy(rcmservertable[nProcId], cServerName,
189c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		    MAX_SERVER_NAME_LENGTH);
190c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	else
191c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		eRPCError = RPC_OMX_ErrorUndefined;
192c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
193c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	return eRPCError;
194c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}
195c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
196c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
197c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
198c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
199c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
200c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @name RPC_UTIL_GetTargetCore()
201c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @brief This function gets the target core id by parsing the component name.
202c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *        It is assumed that component names follow the convention
203c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *        <OMX>.<Company Name>.<Core Name>.<Domain>.<Component Details> with
204c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *        all characters in upper case for e.g. OMX.TI.DUCATI1.VIDEO.H264E
205c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @param cComponentName - Name of the component.
206c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @param nCoreId - Core ID, this is filled in and returned.
207c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @return RPC_OMX_ErrorNone = Successful
208c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @sa TBD
209c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
210c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
211c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
212c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevRPC_OMX_ERRORTYPE RPC_UTIL_GetTargetCore(OMX_STRING cComponentName,
213c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 * nCoreId)
214c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
215c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	RPC_OMX_ERRORTYPE eRPCError = RPC_OMX_ErrorNone;
216c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_S8 cCoreName[MAX_SERVER_NAME_LENGTH] = { 0 };
217c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_S32 ret = 0;
218c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_U32 i = 0;
219c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
220c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	ret =
221c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    sscanf(cComponentName, "%*[^'.'].%*[^'.'].%[^'.'].%*s",
222c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    cCoreName);
223c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	RPC_assert(ret == 1, RPC_OMX_ErrorBadParameter,
224c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    "Incorrect component name");
225c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
226c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	for (i = 0; i < CORE_MAX; i++)
227c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	{
228c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		if (strcmp((char *)cCoreName, Core_Array[i]) == 0)
229c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev			break;
230c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	}
231c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	RPC_assert(i < CORE_MAX, RPC_OMX_ErrorBadParameter,
232c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    "Unknown core name");
233c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	*nCoreId = i;
234c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
235c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev      EXIT:
236c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	return eRPCError;
237c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}
238c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
239c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
240c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
241c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
242c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
243c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @name EMPTY-STUB
244c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @brief  the Api creates the RCM client on the target core(where the component sits).
245c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevThis happens in the context of the Default RCM server on the target core.
246c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevThe RCM server name to connect for this client will be the default RCM server on the calling core.
247c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevThis can be provided as an option as the name that you pass in the string server is used as the RCM server name
248c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevinput to the client create call.
249c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev@Default_RcmServer - The default rcm server on the target core
250c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev@Server - The name of the server on the calling core to connect to
251c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @param
252c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @return
253c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
254c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
255c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
256c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*
257c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevRPC_OMX_ERRORTYPE RPC_GetTargetClient(OMX_STRING Default_RcmServer, OMX_STRING server, rcmhHndl)
258c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
259c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
260c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
261c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}
262c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev*/
263c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
264c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
265c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
266c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @name EMPTY-STUB
267c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @brief
268c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @param
269c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @return
270c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
271c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
272c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
273c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevRPC_OMX_ERRORTYPE RPC_MapBuffer(OMX_U32 mappedBuffer)
274c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
275c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_ENTER("");
276c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_DEBUG("Empty implementation ");
277c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	//PlaceHolder for Mapping Buffers - Cuurently no implementation here
278c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	return RPC_OMX_ErrorNone;
279c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}
280c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
281c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
282c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
283c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @name EMPTY-STUB
284c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @brief
285c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @param
286c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @return
287c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
288c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
289c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
290c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevRPC_OMX_ERRORTYPE RPC_UnMapBuffer(OMX_U32 mappedBuffer)
291c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
292c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_ENTER("");
293c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_DEBUG("Empty implementation ");
294c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	//PlaceHolder for UnMapping Buffers - Cuurently no implementation here
295c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	return RPC_OMX_ErrorNone;
296c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}
297c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
298c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
299c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
300c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @name RPC_FlushBuffer
301c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @brief Used to flush buffers from cache to memory. Used when buffers are
302c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *        being transferred across processor boundaries.
303c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @param pBuffer       : Pointer to the data that has to be flushed.
304c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *        size          : Size of the data to be flushed.
305c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *        nTargetCoreId : Core to which buffer is being transferred.
306c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @return RPC_OMX_ErrorNone      : Success.
307c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *         RPC_OMX_ErrorUndefined : Flush operation failed.
308c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
309c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
310c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevRPC_OMX_ERRORTYPE RPC_FlushBuffer(OMX_U8 * pBuffer, OMX_U32 size,
311c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nTargetCoreId)
312c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
313c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_ENTER("");
314c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	RPC_OMX_ERRORTYPE eRPCError = RPC_OMX_ErrorNone;
315c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_S32 nStatus = 0;
316c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
317c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_DEBUG("About to flush %d bytes", size);
318c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	nStatus = ProcMgr_flushMemory((OMX_PTR) pBuffer, size,
319c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    (ProcMgr_ProcId) nTargetCoreId);
320c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	RPC_assert(nStatus >= 0, RPC_OMX_ErrorUndefined,
321c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    "Cache flush failed");
322c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
323c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev      EXIT:
324c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	return eRPCError;
325c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}
326c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
327c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
328c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
329c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
330c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
331c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @name RPC_InvalidateBuffer
332c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @brief Used to flush buffers from cache to memory. Used when buffers are
333c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *        being transferred across processor boundaries.
334c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @param pBuffer       : Pointer to the data that has to be flushed.
335c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *        size          : Size of the data to be flushed.
336c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *        nTargetCoreId : Core to which buffer is being transferred.
337c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @return RPC_OMX_ErrorNone      : Success.
338c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *         RPC_OMX_ErrorUndefined : Invalidate operation failed.
339c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
340c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
341c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevRPC_OMX_ERRORTYPE RPC_InvalidateBuffer(OMX_U8 * pBuffer, OMX_U32 size,
342c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nTargetCoreId)
343c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
344c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	RPC_OMX_ERRORTYPE eRPCError = RPC_OMX_ErrorNone;
345c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_S32 nStatus = 0;
346c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_ENTER("");
347c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
348c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_DEBUG("About to invalidate %d bytes", size);
349c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	nStatus = ProcMgr_invalidateMemory((OMX_PTR) pBuffer, size,
350c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    (ProcMgr_ProcId) nTargetCoreId);
351c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	RPC_assert(nStatus >= 0, RPC_OMX_ErrorUndefined,
352c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    "Cache invalidate failed");
353c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
354c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev      EXIT:
355c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	return eRPCError;
356c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}
357c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
358c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
359c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
360c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
361c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
362c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @name RPC_Util_AcquireJobId
363c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @brief Used to get a new job id from syslink - all messages sent with the
364c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *        same job id will be processed serially. Messages with different job id
365c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *        will be processed parallely.
366c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @param hRPCCtx       : RPC context handle.
367c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *        pJobId        : Pointer to job id - this'll be filled in and returned.
368c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @return RPC_OMX_ErrorNone      : Success.
369c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *         Any other              : Operation failed.
370c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
371c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
372c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevRPC_OMX_ERRORTYPE RPC_Util_AcquireJobId(RPC_OMX_CONTEXT * hRPCCtx,
373c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U16 * pJobId)
374c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
375c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	RPC_OMX_ERRORTYPE eRPCError = RPC_OMX_ErrorNone;
376c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_S32 nStatus = 0;
377c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_ENTER("");
378c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
379c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	nStatus =
380c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    RcmClient_acquireJobId(hRPCCtx->ClientHndl[RCM_DEFAULT_CLIENT],
381c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    pJobId);
382c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	RPC_assert(nStatus >= 0, RPC_OMX_ErrorUndefined,
383c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    "Acquire job id failed");
384c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
385c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev      EXIT:
386c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_EXIT("eRPCError = %d", eRPCError);
387c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	return eRPCError;
388c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}
389c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
390c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
391c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
392c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
393c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
394c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @name RPC_Util_ReleaseJobId
395c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @brief Used to release job id to syslink. Once release, this job id cannot be
396c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *        reused.
397c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @param hRPCCtx       : RPC context handle.
398c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *        nJobId        : Job ID to be released.
399c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @return RPC_OMX_ErrorNone      : Success.
400c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *         Any other              : Operation failed.
401c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
402c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
403c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevRPC_OMX_ERRORTYPE RPC_Util_ReleaseJobId(RPC_OMX_CONTEXT * hRPCCtx,
404c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U16 nJobId)
405c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
406c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	RPC_OMX_ERRORTYPE eRPCError = RPC_OMX_ErrorNone;
407c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_S32 nStatus = 0;
408c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_ENTER("");
409c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
410c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	nStatus =
411c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    RcmClient_releaseJobId(hRPCCtx->ClientHndl[RCM_DEFAULT_CLIENT],
412c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    nJobId);
413c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	RPC_assert(nStatus >= 0, RPC_OMX_ErrorUndefined,
414c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	    "Release job id failed");
415c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
416c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev      EXIT:
417c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_EXIT("eRPCError = %d", eRPCError);
418c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	return eRPCError;
419c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}
420c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
421c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
422c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
423c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
424c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
425c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @name RPC_Util_GetPoolId
426c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @brief Used to get pool id. Messages sent with same pool id will get
427c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *        processed at the same priority on remote core.
428c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @param hRPCCtx       : RPC context handle.
429c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *        pPoolId       : Pointer to pool id - this'll be filled in and
430c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                        returned.
431c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @return RPC_OMX_ErrorNone      : Success.
432c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *         Any other              : Operation failed.
433c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
434c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ===========================================================================*/
435c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevRPC_OMX_ERRORTYPE RPC_Util_GetPoolId(RPC_OMX_CONTEXT * hRPCCtx,
436c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U16 * pPoolId)
437c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
438c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	RPC_OMX_ERRORTYPE eRPCError = RPC_OMX_ErrorNone;
439c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_ENTER("");
440c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
441c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	*pPoolId = 0x8001;
442c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
443c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev//EXIT:
444c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	DOMX_EXIT("eRPCError = %d", eRPCError);
445c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	return eRPCError;
446c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}
447