1*53ee8cc1Swenshuai.xi //<MStar Software>
2*53ee8cc1Swenshuai.xi //******************************************************************************
3*53ee8cc1Swenshuai.xi // MStar Software
4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are
6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties.
8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all
9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written
10*53ee8cc1Swenshuai.xi // permission has been granted by MStar.
11*53ee8cc1Swenshuai.xi //
12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you
13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to
14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations:
15*53ee8cc1Swenshuai.xi //
16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar
17*53ee8cc1Swenshuai.xi // Software and any modification/derivatives thereof.
18*53ee8cc1Swenshuai.xi // No right, ownership, or interest to MStar Software and any
19*53ee8cc1Swenshuai.xi // modification/derivatives thereof is transferred to you under Terms.
20*53ee8cc1Swenshuai.xi //
21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be
22*53ee8cc1Swenshuai.xi // supplied together with third party`s software and the use of MStar
23*53ee8cc1Swenshuai.xi // Software may require additional licenses from third parties.
24*53ee8cc1Swenshuai.xi // Therefore, you hereby agree it is your sole responsibility to separately
25*53ee8cc1Swenshuai.xi // obtain any and all third party right and license necessary for your use of
26*53ee8cc1Swenshuai.xi // such third party`s software.
27*53ee8cc1Swenshuai.xi //
28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29*53ee8cc1Swenshuai.xi // MStar`s confidential information and you agree to keep MStar`s
30*53ee8cc1Swenshuai.xi // confidential information in strictest confidence and not disclose to any
31*53ee8cc1Swenshuai.xi // third party.
32*53ee8cc1Swenshuai.xi //
33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34*53ee8cc1Swenshuai.xi // kind. Any warranties are hereby expressly disclaimed by MStar, including
35*53ee8cc1Swenshuai.xi // without limitation, any warranties of merchantability, non-infringement of
36*53ee8cc1Swenshuai.xi // intellectual property rights, fitness for a particular purpose, error free
37*53ee8cc1Swenshuai.xi // and in conformity with any international standard. You agree to waive any
38*53ee8cc1Swenshuai.xi // claim against MStar for any loss, damage, cost or expense that you may
39*53ee8cc1Swenshuai.xi // incur related to your use of MStar Software.
40*53ee8cc1Swenshuai.xi // In no event shall MStar be liable for any direct, indirect, incidental or
41*53ee8cc1Swenshuai.xi // consequential damages, including without limitation, lost of profit or
42*53ee8cc1Swenshuai.xi // revenues, lost or damage of data, and unauthorized system use.
43*53ee8cc1Swenshuai.xi // You agree that this Section 4 shall still apply without being affected
44*53ee8cc1Swenshuai.xi // even if MStar Software has been modified by MStar in accordance with your
45*53ee8cc1Swenshuai.xi // request or instruction for your use, except otherwise agreed by both
46*53ee8cc1Swenshuai.xi // parties in writing.
47*53ee8cc1Swenshuai.xi //
48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or
49*53ee8cc1Swenshuai.xi // services in relation with MStar Software to you for your use of
50*53ee8cc1Swenshuai.xi // MStar Software in conjunction with your or your customer`s product
51*53ee8cc1Swenshuai.xi // ("Services").
52*53ee8cc1Swenshuai.xi // You understand and agree that, except otherwise agreed by both parties in
53*53ee8cc1Swenshuai.xi // writing, Services are provided on an "AS IS" basis and the warranty
54*53ee8cc1Swenshuai.xi // disclaimer set forth in Section 4 above shall apply.
55*53ee8cc1Swenshuai.xi //
56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels
57*53ee8cc1Swenshuai.xi // or otherwise:
58*53ee8cc1Swenshuai.xi // (a) conferring any license or right to use MStar name, trademark, service
59*53ee8cc1Swenshuai.xi // mark, symbol or any other identification;
60*53ee8cc1Swenshuai.xi // (b) obligating MStar or any of its affiliates to furnish any person,
61*53ee8cc1Swenshuai.xi // including without limitation, you and your customers, any assistance
62*53ee8cc1Swenshuai.xi // of any kind whatsoever, or any information; or
63*53ee8cc1Swenshuai.xi // (c) conferring any license or right under any intellectual property right.
64*53ee8cc1Swenshuai.xi //
65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws
66*53ee8cc1Swenshuai.xi // of Taiwan, R.O.C., excluding its conflict of law rules.
67*53ee8cc1Swenshuai.xi // Any and all dispute arising out hereof or related hereto shall be finally
68*53ee8cc1Swenshuai.xi // settled by arbitration referred to the Chinese Arbitration Association,
69*53ee8cc1Swenshuai.xi // Taipei in accordance with the ROC Arbitration Law and the Arbitration
70*53ee8cc1Swenshuai.xi // Rules of the Association by three (3) arbitrators appointed in accordance
71*53ee8cc1Swenshuai.xi // with the said Rules.
72*53ee8cc1Swenshuai.xi // The place of arbitration shall be in Taipei, Taiwan and the language shall
73*53ee8cc1Swenshuai.xi // be English.
74*53ee8cc1Swenshuai.xi // The arbitration award shall be final and binding to both parties.
75*53ee8cc1Swenshuai.xi //
76*53ee8cc1Swenshuai.xi //******************************************************************************
77*53ee8cc1Swenshuai.xi //<MStar Software>
78*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
79*53ee8cc1Swenshuai.xi //
80*53ee8cc1Swenshuai.xi // Copyright (c) 2006-2007 MStar Semiconductor, Inc.
81*53ee8cc1Swenshuai.xi // All rights reserved.
82*53ee8cc1Swenshuai.xi //
83*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained
84*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of
85*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence
86*53ee8cc1Swenshuai.xi // (��MStar Confidential Information��) by the recipient.
87*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure,
88*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling,
89*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential
90*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the
91*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom.
92*53ee8cc1Swenshuai.xi //
93*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
94*53ee8cc1Swenshuai.xi
95*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
96*53ee8cc1Swenshuai.xi ///
97*53ee8cc1Swenshuai.xi /// file msAPI_CEC.c
98*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc.
99*53ee8cc1Swenshuai.xi /// @brief HDMI CEC API Interface
100*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
101*53ee8cc1Swenshuai.xi
102*53ee8cc1Swenshuai.xi
103*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
104*53ee8cc1Swenshuai.xi // Include Files
105*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
106*53ee8cc1Swenshuai.xi
107*53ee8cc1Swenshuai.xi #define _APICEC_C_
108*53ee8cc1Swenshuai.xi
109*53ee8cc1Swenshuai.xi #ifdef MSOS_TYPE_LINUX_KERNEL
110*53ee8cc1Swenshuai.xi #include <linux/string.h>
111*53ee8cc1Swenshuai.xi #else
112*53ee8cc1Swenshuai.xi #include <string.h>
113*53ee8cc1Swenshuai.xi #endif
114*53ee8cc1Swenshuai.xi #include "MsCommon.h"
115*53ee8cc1Swenshuai.xi #include "MsVersion.h"
116*53ee8cc1Swenshuai.xi #include "MsOS.h"
117*53ee8cc1Swenshuai.xi #include "MsTypes.h"
118*53ee8cc1Swenshuai.xi
119*53ee8cc1Swenshuai.xi #include "utopia.h"
120*53ee8cc1Swenshuai.xi #include "utopia_dapi.h"
121*53ee8cc1Swenshuai.xi
122*53ee8cc1Swenshuai.xi #include "apiCEC.h"
123*53ee8cc1Swenshuai.xi #include "drvCEC.h"
124*53ee8cc1Swenshuai.xi #include "apiCEC_private.h"
125*53ee8cc1Swenshuai.xi
126*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
127*53ee8cc1Swenshuai.xi // Local Defines
128*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
129*53ee8cc1Swenshuai.xi #if(defined(CONFIG_MLOG))
130*53ee8cc1Swenshuai.xi #include "ULog.h"
131*53ee8cc1Swenshuai.xi
132*53ee8cc1Swenshuai.xi #define MAPI_CEC_MSG_INFO(format, args...) ULOGI("CEC", format, ##args)
133*53ee8cc1Swenshuai.xi #define MAPI_CEC_MSG_WARNING(format, args...) ULOGW("CEC", format, ##args)
134*53ee8cc1Swenshuai.xi #define MAPI_CEC_MSG_DEBUG(format, args...) ULOGD("CEC", format, ##args)
135*53ee8cc1Swenshuai.xi #define MAPI_CEC_MSG_ERROR(format, args...) ULOGE("CEC", format, ##args)
136*53ee8cc1Swenshuai.xi #define MAPI_CEC_MSG_FATAL(format, args...) ULOGF("CEC", format, ##args)
137*53ee8cc1Swenshuai.xi
138*53ee8cc1Swenshuai.xi #else
139*53ee8cc1Swenshuai.xi #define MAPI_CEC_MSG_INFO(format, args...) printf(format, ##args)
140*53ee8cc1Swenshuai.xi #define MAPI_CEC_MSG_WARNING(format, args...) printf(format, ##args)
141*53ee8cc1Swenshuai.xi #define MAPI_CEC_MSG_DEBUG(format, args...) printf(format, ##args)
142*53ee8cc1Swenshuai.xi #define MAPI_CEC_MSG_ERROR(format, args...) printf(format, ##args)
143*53ee8cc1Swenshuai.xi #define MAPI_CEC_MSG_FATAL(format, args...) printf(format, ##args)
144*53ee8cc1Swenshuai.xi
145*53ee8cc1Swenshuai.xi #endif
146*53ee8cc1Swenshuai.xi
147*53ee8cc1Swenshuai.xi
148*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
149*53ee8cc1Swenshuai.xi // Local Structures
150*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
151*53ee8cc1Swenshuai.xi
152*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
153*53ee8cc1Swenshuai.xi // Global Variables
154*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
155*53ee8cc1Swenshuai.xi
156*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
157*53ee8cc1Swenshuai.xi // Local Variables
158*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
159*53ee8cc1Swenshuai.xi static MSIF_Version _api_cec_version = {
160*53ee8cc1Swenshuai.xi .DDI = { CEC_API_VERSION },
161*53ee8cc1Swenshuai.xi };
162*53ee8cc1Swenshuai.xi
163*53ee8cc1Swenshuai.xi static MS_CEC_Status _cec_status = {.bIsInitialized = FALSE, .bIsRunning = FALSE,};
164*53ee8cc1Swenshuai.xi static MS_U16 _u16CEC_DBG_SWITCH = FALSE;
165*53ee8cc1Swenshuai.xi
166*53ee8cc1Swenshuai.xi void* pulCECInst;
167*53ee8cc1Swenshuai.xi
168*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
169*53ee8cc1Swenshuai.xi // Local Functions
170*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
171*53ee8cc1Swenshuai.xi
172*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
173*53ee8cc1Swenshuai.xi // Global Functions
174*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
175*53ee8cc1Swenshuai.xi
176*53ee8cc1Swenshuai.xi //**************************************************************************
177*53ee8cc1Swenshuai.xi // [Function Name]:
178*53ee8cc1Swenshuai.xi // MApi_CEC_PortSelcet()
179*53ee8cc1Swenshuai.xi // [Description]
180*53ee8cc1Swenshuai.xi // Select CEC bank mapping
181*53ee8cc1Swenshuai.xi // [Arguments]:
182*53ee8cc1Swenshuai.xi //
183*53ee8cc1Swenshuai.xi // [Return]:
184*53ee8cc1Swenshuai.xi //
185*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_PortSelcet(MsCEC_INPUT_PORT InputPort)186*53ee8cc1Swenshuai.xi void SYMBOL_WEAK MApi_CEC_PortSelcet(MsCEC_INPUT_PORT InputPort)
187*53ee8cc1Swenshuai.xi {
188*53ee8cc1Swenshuai.xi stCEC_PORT_SELECT pCECArgs = {0};
189*53ee8cc1Swenshuai.xi
190*53ee8cc1Swenshuai.xi pCECArgs.InputPort = InputPort;
191*53ee8cc1Swenshuai.xi
192*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
193*53ee8cc1Swenshuai.xi {
194*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
195*53ee8cc1Swenshuai.xi }
196*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_PORT_SELECT, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
197*53ee8cc1Swenshuai.xi {
198*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
199*53ee8cc1Swenshuai.xi }
200*53ee8cc1Swenshuai.xi }
201*53ee8cc1Swenshuai.xi
202*53ee8cc1Swenshuai.xi //**************************************************************************
203*53ee8cc1Swenshuai.xi // [Function Name]:
204*53ee8cc1Swenshuai.xi // MApi_CEC_GetLibVer()
205*53ee8cc1Swenshuai.xi // [Description]
206*53ee8cc1Swenshuai.xi //
207*53ee8cc1Swenshuai.xi // [Arguments]:
208*53ee8cc1Swenshuai.xi //
209*53ee8cc1Swenshuai.xi // [Return]:
210*53ee8cc1Swenshuai.xi //
211*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_GetLibVer(const MSIF_Version ** ppVersion)212*53ee8cc1Swenshuai.xi MS_BOOL MApi_CEC_GetLibVer(const MSIF_Version **ppVersion) ///< Get version
213*53ee8cc1Swenshuai.xi {
214*53ee8cc1Swenshuai.xi if (!ppVersion)
215*53ee8cc1Swenshuai.xi {
216*53ee8cc1Swenshuai.xi return FALSE;
217*53ee8cc1Swenshuai.xi }
218*53ee8cc1Swenshuai.xi
219*53ee8cc1Swenshuai.xi *ppVersion = &_api_cec_version;
220*53ee8cc1Swenshuai.xi return TRUE;
221*53ee8cc1Swenshuai.xi }
222*53ee8cc1Swenshuai.xi
223*53ee8cc1Swenshuai.xi //**************************************************************************
224*53ee8cc1Swenshuai.xi // [Function Name]:
225*53ee8cc1Swenshuai.xi // MApi_DDC2BI_GetInfo()
226*53ee8cc1Swenshuai.xi // [Description]
227*53ee8cc1Swenshuai.xi //
228*53ee8cc1Swenshuai.xi // [Arguments]:
229*53ee8cc1Swenshuai.xi //
230*53ee8cc1Swenshuai.xi // [Return]:
231*53ee8cc1Swenshuai.xi //
232*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_DDC2BI_GetInfo(MS_CEC_INFO_LIST * pInfo)233*53ee8cc1Swenshuai.xi MS_BOOL MApi_DDC2BI_GetInfo(MS_CEC_INFO_LIST *pInfo)
234*53ee8cc1Swenshuai.xi {
235*53ee8cc1Swenshuai.xi stCEC_DDC2BI_GET_INFO pCECArgs = {0};
236*53ee8cc1Swenshuai.xi
237*53ee8cc1Swenshuai.xi pCECArgs.eInfo = pInfo;
238*53ee8cc1Swenshuai.xi pCECArgs.bGetInfo = FALSE;
239*53ee8cc1Swenshuai.xi
240*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
241*53ee8cc1Swenshuai.xi {
242*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
243*53ee8cc1Swenshuai.xi }
244*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_DDC2BI_GET_INFO, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
245*53ee8cc1Swenshuai.xi {
246*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
247*53ee8cc1Swenshuai.xi }
248*53ee8cc1Swenshuai.xi
249*53ee8cc1Swenshuai.xi return pCECArgs.bGetInfo;
250*53ee8cc1Swenshuai.xi }
251*53ee8cc1Swenshuai.xi
252*53ee8cc1Swenshuai.xi //**************************************************************************
253*53ee8cc1Swenshuai.xi // [Function Name]:
254*53ee8cc1Swenshuai.xi // MApi_DDC2BI_GetStatus()
255*53ee8cc1Swenshuai.xi // [Description]
256*53ee8cc1Swenshuai.xi //
257*53ee8cc1Swenshuai.xi // [Arguments]:
258*53ee8cc1Swenshuai.xi //
259*53ee8cc1Swenshuai.xi // [Return]:
260*53ee8cc1Swenshuai.xi //
261*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_DDC2BI_GetStatus(MS_CEC_Status * pStatus)262*53ee8cc1Swenshuai.xi MS_BOOL MApi_DDC2BI_GetStatus(MS_CEC_Status *pStatus)
263*53ee8cc1Swenshuai.xi {
264*53ee8cc1Swenshuai.xi if (!pStatus)
265*53ee8cc1Swenshuai.xi {
266*53ee8cc1Swenshuai.xi return FALSE;
267*53ee8cc1Swenshuai.xi }
268*53ee8cc1Swenshuai.xi
269*53ee8cc1Swenshuai.xi memcpy((void*)pStatus, (void*)&_cec_status, sizeof(MS_CEC_Status ));
270*53ee8cc1Swenshuai.xi
271*53ee8cc1Swenshuai.xi return TRUE;
272*53ee8cc1Swenshuai.xi }
273*53ee8cc1Swenshuai.xi
274*53ee8cc1Swenshuai.xi //**************************************************************************
275*53ee8cc1Swenshuai.xi // [Function Name]:
276*53ee8cc1Swenshuai.xi // MApi_DDC2BI_SetDbgLevel()
277*53ee8cc1Swenshuai.xi // [Description]
278*53ee8cc1Swenshuai.xi //
279*53ee8cc1Swenshuai.xi // [Arguments]:
280*53ee8cc1Swenshuai.xi //
281*53ee8cc1Swenshuai.xi // [Return]:
282*53ee8cc1Swenshuai.xi //
283*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_DDC2BI_SetDbgLevel(MS_U16 u16DbgSwitch)284*53ee8cc1Swenshuai.xi MS_BOOL MApi_DDC2BI_SetDbgLevel(MS_U16 u16DbgSwitch)
285*53ee8cc1Swenshuai.xi {
286*53ee8cc1Swenshuai.xi _u16CEC_DBG_SWITCH = u16DbgSwitch;
287*53ee8cc1Swenshuai.xi //_u16CEC_DBG_SWITCH = _u16CEC_DBG_SWITCH;
288*53ee8cc1Swenshuai.xi return TRUE;
289*53ee8cc1Swenshuai.xi }
290*53ee8cc1Swenshuai.xi
291*53ee8cc1Swenshuai.xi //**************************************************************************
292*53ee8cc1Swenshuai.xi // [Function Name]:
293*53ee8cc1Swenshuai.xi // MApi_CEC_Exit()
294*53ee8cc1Swenshuai.xi // [Description]
295*53ee8cc1Swenshuai.xi // Mask CEC interrupt and release CEC
296*53ee8cc1Swenshuai.xi // [Arguments]:
297*53ee8cc1Swenshuai.xi //
298*53ee8cc1Swenshuai.xi // [Return]:
299*53ee8cc1Swenshuai.xi //
300*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Exit(void)301*53ee8cc1Swenshuai.xi void MApi_CEC_Exit(void)
302*53ee8cc1Swenshuai.xi {
303*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
304*53ee8cc1Swenshuai.xi {
305*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
306*53ee8cc1Swenshuai.xi }
307*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_EXIT, NULL) != UTOPIA_STATUS_SUCCESS)
308*53ee8cc1Swenshuai.xi {
309*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
310*53ee8cc1Swenshuai.xi }
311*53ee8cc1Swenshuai.xi }
312*53ee8cc1Swenshuai.xi
313*53ee8cc1Swenshuai.xi //**************************************************************************
314*53ee8cc1Swenshuai.xi // [Function Name]:
315*53ee8cc1Swenshuai.xi // MApi_CEC_Init()
316*53ee8cc1Swenshuai.xi // [Description]
317*53ee8cc1Swenshuai.xi // CEC initial sequence
318*53ee8cc1Swenshuai.xi // [Arguments]:
319*53ee8cc1Swenshuai.xi //
320*53ee8cc1Swenshuai.xi // [Return]:
321*53ee8cc1Swenshuai.xi //
322*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Init(MS_CEC_INIT_INFO * pCECInfo)323*53ee8cc1Swenshuai.xi void MApi_CEC_Init(MS_CEC_INIT_INFO *pCECInfo)
324*53ee8cc1Swenshuai.xi {
325*53ee8cc1Swenshuai.xi stCEC_INIT pCECArgs = {0};
326*53ee8cc1Swenshuai.xi
327*53ee8cc1Swenshuai.xi pCECArgs.u32XTAL_CLK_Hz = pCECInfo->u32XTAL_CLK_Hz;
328*53ee8cc1Swenshuai.xi
329*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
330*53ee8cc1Swenshuai.xi {
331*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
332*53ee8cc1Swenshuai.xi }
333*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_INIT, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
334*53ee8cc1Swenshuai.xi {
335*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
336*53ee8cc1Swenshuai.xi }
337*53ee8cc1Swenshuai.xi }
338*53ee8cc1Swenshuai.xi
339*53ee8cc1Swenshuai.xi //**************************************************************************
340*53ee8cc1Swenshuai.xi // [Function Name]:
341*53ee8cc1Swenshuai.xi // MApi_CEC_InitChip()
342*53ee8cc1Swenshuai.xi // [Description]
343*53ee8cc1Swenshuai.xi // CEC chip relatived part initial (Initiation)
344*53ee8cc1Swenshuai.xi // [Arguments]:
345*53ee8cc1Swenshuai.xi //
346*53ee8cc1Swenshuai.xi // [Return]:
347*53ee8cc1Swenshuai.xi //
348*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_InitChip(MS_CEC_INIT_INFO * pCECInfo)349*53ee8cc1Swenshuai.xi void MApi_CEC_InitChip(MS_CEC_INIT_INFO *pCECInfo)
350*53ee8cc1Swenshuai.xi {
351*53ee8cc1Swenshuai.xi MS_BOOL bInitialFlag = FALSE;
352*53ee8cc1Swenshuai.xi stCEC_INIT_CHIP pCECArgs = {0};
353*53ee8cc1Swenshuai.xi
354*53ee8cc1Swenshuai.xi pCECArgs.u32XTAL_CLK_Hz = pCECInfo->u32XTAL_CLK_Hz;
355*53ee8cc1Swenshuai.xi
356*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
357*53ee8cc1Swenshuai.xi {
358*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_CEC, &pulCECInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
359*53ee8cc1Swenshuai.xi {
360*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("UtopiaOpen pulCECInst failed\n");
361*53ee8cc1Swenshuai.xi
362*53ee8cc1Swenshuai.xi bInitialFlag = TRUE;
363*53ee8cc1Swenshuai.xi }
364*53ee8cc1Swenshuai.xi }
365*53ee8cc1Swenshuai.xi
366*53ee8cc1Swenshuai.xi if(!bInitialFlag)
367*53ee8cc1Swenshuai.xi {
368*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_INIT_CHIP, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
369*53ee8cc1Swenshuai.xi {
370*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
371*53ee8cc1Swenshuai.xi }
372*53ee8cc1Swenshuai.xi }
373*53ee8cc1Swenshuai.xi }
374*53ee8cc1Swenshuai.xi
375*53ee8cc1Swenshuai.xi //**************************************************************************
376*53ee8cc1Swenshuai.xi // [Function Name]:
377*53ee8cc1Swenshuai.xi // MApi_CEC_SetMyLogicalAddress()
378*53ee8cc1Swenshuai.xi // [Description]
379*53ee8cc1Swenshuai.xi // CEC set own logical address
380*53ee8cc1Swenshuai.xi // [Arguments]:
381*53ee8cc1Swenshuai.xi //
382*53ee8cc1Swenshuai.xi // [Return]:
383*53ee8cc1Swenshuai.xi //
384*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_SetMyLogicalAddress(MsCEC_DEVICELA myLA)385*53ee8cc1Swenshuai.xi void MApi_CEC_SetMyLogicalAddress(MsCEC_DEVICELA myLA)
386*53ee8cc1Swenshuai.xi {
387*53ee8cc1Swenshuai.xi stCEC_SET_MY_LOGICAL_ADDRESS pCECArgs = {0};
388*53ee8cc1Swenshuai.xi
389*53ee8cc1Swenshuai.xi pCECArgs.myLA = myLA;
390*53ee8cc1Swenshuai.xi
391*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
392*53ee8cc1Swenshuai.xi {
393*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
394*53ee8cc1Swenshuai.xi }
395*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_SET_MY_LOGICAL_ADDRESS, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
396*53ee8cc1Swenshuai.xi {
397*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
398*53ee8cc1Swenshuai.xi }
399*53ee8cc1Swenshuai.xi }
400*53ee8cc1Swenshuai.xi
401*53ee8cc1Swenshuai.xi //**************************************************************************
402*53ee8cc1Swenshuai.xi // [Function Name]:
403*53ee8cc1Swenshuai.xi // MApi_CEC_ChkRxBuf()
404*53ee8cc1Swenshuai.xi // [Description]
405*53ee8cc1Swenshuai.xi // Use to store CEC received messages
406*53ee8cc1Swenshuai.xi // [Arguments]:
407*53ee8cc1Swenshuai.xi //
408*53ee8cc1Swenshuai.xi // [Return]:
409*53ee8cc1Swenshuai.xi //
410*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_ChkRxBuf(void)411*53ee8cc1Swenshuai.xi void MApi_CEC_ChkRxBuf(void)
412*53ee8cc1Swenshuai.xi {
413*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
414*53ee8cc1Swenshuai.xi {
415*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
416*53ee8cc1Swenshuai.xi }
417*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_CHK_RX_BUF, NULL) != UTOPIA_STATUS_SUCCESS)
418*53ee8cc1Swenshuai.xi {
419*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
420*53ee8cc1Swenshuai.xi }
421*53ee8cc1Swenshuai.xi }
422*53ee8cc1Swenshuai.xi
423*53ee8cc1Swenshuai.xi //**************************************************************************
424*53ee8cc1Swenshuai.xi // [Function Name]:
425*53ee8cc1Swenshuai.xi // MApi_CEC_TxSendMsg()
426*53ee8cc1Swenshuai.xi // [Description]
427*53ee8cc1Swenshuai.xi // Use to send any CEC message by user defined
428*53ee8cc1Swenshuai.xi // If msg = E_MSG_UI_PRESS, than will send msg E_MSG_UI_RELEASE immediately
429*53ee8cc1Swenshuai.xi // [Arguments]:
430*53ee8cc1Swenshuai.xi // dst_address: destination logical address
431*53ee8cc1Swenshuai.xi // msg: CEC message
432*53ee8cc1Swenshuai.xi // cmd: message parameters
433*53ee8cc1Swenshuai.xi // len: parameter length
434*53ee8cc1Swenshuai.xi // [Return]:
435*53ee8cc1Swenshuai.xi // error_code: return status
436*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_TxSendMsg(MsCEC_DEVICELA dst_address,MsCEC_MSGLIST msg,MS_U8 * cmd,MS_U8 len)437*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_TxSendMsg(MsCEC_DEVICELA dst_address, MsCEC_MSGLIST msg, MS_U8 *cmd, MS_U8 len)
438*53ee8cc1Swenshuai.xi {
439*53ee8cc1Swenshuai.xi stCEC_TX_SEND_MSG pCECArgs = {0};
440*53ee8cc1Swenshuai.xi
441*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
442*53ee8cc1Swenshuai.xi pCECArgs.eMsg = msg;
443*53ee8cc1Swenshuai.xi pCECArgs.ucCmd = cmd;
444*53ee8cc1Swenshuai.xi pCECArgs.ucLen = len;
445*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
446*53ee8cc1Swenshuai.xi
447*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
448*53ee8cc1Swenshuai.xi {
449*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
450*53ee8cc1Swenshuai.xi }
451*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_TX_SEND_MSG, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
452*53ee8cc1Swenshuai.xi {
453*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
454*53ee8cc1Swenshuai.xi }
455*53ee8cc1Swenshuai.xi
456*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
457*53ee8cc1Swenshuai.xi }
458*53ee8cc1Swenshuai.xi
459*53ee8cc1Swenshuai.xi //**************************************************************************
460*53ee8cc1Swenshuai.xi // [Function Name]:
461*53ee8cc1Swenshuai.xi // MApi_CEC_TxSendMsg2()
462*53ee8cc1Swenshuai.xi // [Description]
463*53ee8cc1Swenshuai.xi // Use to send any CEC message by user defined
464*53ee8cc1Swenshuai.xi // [Arguments]:
465*53ee8cc1Swenshuai.xi // dst_address: destination logical address
466*53ee8cc1Swenshuai.xi // msg: CEC message
467*53ee8cc1Swenshuai.xi // cmd: message parameters
468*53ee8cc1Swenshuai.xi // len: parameter length
469*53ee8cc1Swenshuai.xi // [Return]:
470*53ee8cc1Swenshuai.xi // error_code: return status
471*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_TxSendMsg2(MsCEC_DEVICELA dst_address,MsCEC_MSGLIST msg,MS_U8 * cmd,MS_U8 len)472*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_TxSendMsg2(MsCEC_DEVICELA dst_address, MsCEC_MSGLIST msg, MS_U8* cmd, MS_U8 len)
473*53ee8cc1Swenshuai.xi {
474*53ee8cc1Swenshuai.xi stCEC_TX_SEND_MSG2 pCECArgs = {0};
475*53ee8cc1Swenshuai.xi
476*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
477*53ee8cc1Swenshuai.xi pCECArgs.eMsg = msg;
478*53ee8cc1Swenshuai.xi pCECArgs.ucCmd = cmd;
479*53ee8cc1Swenshuai.xi pCECArgs.ucLen = len;
480*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
481*53ee8cc1Swenshuai.xi
482*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
483*53ee8cc1Swenshuai.xi {
484*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
485*53ee8cc1Swenshuai.xi }
486*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_TX_SEND_MSG2, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
487*53ee8cc1Swenshuai.xi {
488*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
489*53ee8cc1Swenshuai.xi }
490*53ee8cc1Swenshuai.xi
491*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
492*53ee8cc1Swenshuai.xi }
493*53ee8cc1Swenshuai.xi
494*53ee8cc1Swenshuai.xi //**************************************************************************
495*53ee8cc1Swenshuai.xi // [Function Name]:
496*53ee8cc1Swenshuai.xi // MsAPI_CecTxSendPollingMsg()
497*53ee8cc1Swenshuai.xi // [Description]
498*53ee8cc1Swenshuai.xi // Use to send any CEC polling msg by user defined
499*53ee8cc1Swenshuai.xi // [Arguments]:
500*53ee8cc1Swenshuai.xi // dst_address: destination logical address
501*53ee8cc1Swenshuai.xi // [Return]:
502*53ee8cc1Swenshuai.xi // error_code: return status
503*53ee8cc1Swenshuai.xi //**************************************************************************
MsAPI_CecTxSendPollingMsg(MsCEC_DEVICELA dst_address)504*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MsAPI_CecTxSendPollingMsg(MsCEC_DEVICELA dst_address)
505*53ee8cc1Swenshuai.xi {
506*53ee8cc1Swenshuai.xi stCEC_TX_SEND_POLLING_MSG pCECArgs = {0};
507*53ee8cc1Swenshuai.xi
508*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
509*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
510*53ee8cc1Swenshuai.xi
511*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
512*53ee8cc1Swenshuai.xi {
513*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
514*53ee8cc1Swenshuai.xi }
515*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_TX_SEND_POLLING_MSG, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
516*53ee8cc1Swenshuai.xi {
517*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
518*53ee8cc1Swenshuai.xi }
519*53ee8cc1Swenshuai.xi
520*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
521*53ee8cc1Swenshuai.xi }
522*53ee8cc1Swenshuai.xi
523*53ee8cc1Swenshuai.xi //**************************************************************************
524*53ee8cc1Swenshuai.xi // [Function Name]:
525*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_ActiveSource()
526*53ee8cc1Swenshuai.xi // [Description]
527*53ee8cc1Swenshuai.xi // Used by a new source to indicate that it has started to transmit a stream or
528*53ee8cc1Swenshuai.xi // used in response to a <Request Active Source>
529*53ee8cc1Swenshuai.xi // [Message property]
530*53ee8cc1Swenshuai.xi // Address: Broadcast
531*53ee8cc1Swenshuai.xi // Initiator: All sources
532*53ee8cc1Swenshuai.xi // Follower: TV, CEC Switches
533*53ee8cc1Swenshuai.xi // [Arguments]:
534*53ee8cc1Swenshuai.xi //
535*53ee8cc1Swenshuai.xi // [Return]:
536*53ee8cc1Swenshuai.xi // error_code: return status
537*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_ActiveSource(void)538*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ActiveSource(void)
539*53ee8cc1Swenshuai.xi {
540*53ee8cc1Swenshuai.xi stCEC_TX_SEND_POLLING_MSG pCECArgs = {0};
541*53ee8cc1Swenshuai.xi
542*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
543*53ee8cc1Swenshuai.xi
544*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
545*53ee8cc1Swenshuai.xi {
546*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
547*53ee8cc1Swenshuai.xi }
548*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_ACTIVE_SOURCE, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
549*53ee8cc1Swenshuai.xi {
550*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
551*53ee8cc1Swenshuai.xi }
552*53ee8cc1Swenshuai.xi
553*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
554*53ee8cc1Swenshuai.xi }
555*53ee8cc1Swenshuai.xi
556*53ee8cc1Swenshuai.xi //**************************************************************************
557*53ee8cc1Swenshuai.xi // [Function Name]:
558*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_RoutingChange()
559*53ee8cc1Swenshuai.xi // [Description]
560*53ee8cc1Swenshuai.xi // Used by a CEC switch when it's manually switched to inform akk other devices.
561*53ee8cc1Swenshuai.xi // [Message property]
562*53ee8cc1Swenshuai.xi // Address: Broadcast
563*53ee8cc1Swenshuai.xi // Initiator: CEC switches and TV(with 2 or more HDMI inputs)
564*53ee8cc1Swenshuai.xi // Follower: CEC switches
565*53ee8cc1Swenshuai.xi // [Arguments]:
566*53ee8cc1Swenshuai.xi // orig_address: The original physicall address
567*53ee8cc1Swenshuai.xi // new_address: The new physical address
568*53ee8cc1Swenshuai.xi // [Return]:
569*53ee8cc1Swenshuai.xi // error_code: return status
570*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_RoutingChange(MS_U8 * orig_address,MS_U8 * new_address)571*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_RoutingChange(MS_U8* orig_address, MS_U8* new_address)
572*53ee8cc1Swenshuai.xi {
573*53ee8cc1Swenshuai.xi stCEC_MSG_ROUTING_CHANGE pCECArgs = {0};
574*53ee8cc1Swenshuai.xi
575*53ee8cc1Swenshuai.xi pCECArgs.ucOrigAddr = orig_address;
576*53ee8cc1Swenshuai.xi pCECArgs.ucNewAddr = new_address;
577*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
578*53ee8cc1Swenshuai.xi
579*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
580*53ee8cc1Swenshuai.xi {
581*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
582*53ee8cc1Swenshuai.xi }
583*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_ROUTING_CHANGE, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
584*53ee8cc1Swenshuai.xi {
585*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
586*53ee8cc1Swenshuai.xi }
587*53ee8cc1Swenshuai.xi
588*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
589*53ee8cc1Swenshuai.xi }
590*53ee8cc1Swenshuai.xi
591*53ee8cc1Swenshuai.xi //**************************************************************************
592*53ee8cc1Swenshuai.xi // [Function Name]:
593*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_ReqActiveSource()
594*53ee8cc1Swenshuai.xi // [Description]
595*53ee8cc1Swenshuai.xi // Used by a new device to discover the status of the system.
596*53ee8cc1Swenshuai.xi // [Message property]
597*53ee8cc1Swenshuai.xi // Address: Broadcast
598*53ee8cc1Swenshuai.xi // Initiator:
599*53ee8cc1Swenshuai.xi // Follower: All, except for CEC Switches and devices which cannot become a source.
600*53ee8cc1Swenshuai.xi // [Arguments]:
601*53ee8cc1Swenshuai.xi //
602*53ee8cc1Swenshuai.xi // [Return]:
603*53ee8cc1Swenshuai.xi // error_code: return status
604*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_ReqActiveSource(void)605*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReqActiveSource(void)
606*53ee8cc1Swenshuai.xi {
607*53ee8cc1Swenshuai.xi stCEC_MSG_REQ_ACTIVE_SOURCE pCECArgs = {0};
608*53ee8cc1Swenshuai.xi
609*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
610*53ee8cc1Swenshuai.xi
611*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
612*53ee8cc1Swenshuai.xi {
613*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
614*53ee8cc1Swenshuai.xi }
615*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_REQ_ACTIVE_SOURCE, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
616*53ee8cc1Swenshuai.xi {
617*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
618*53ee8cc1Swenshuai.xi }
619*53ee8cc1Swenshuai.xi
620*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
621*53ee8cc1Swenshuai.xi }
622*53ee8cc1Swenshuai.xi
623*53ee8cc1Swenshuai.xi //**************************************************************************
624*53ee8cc1Swenshuai.xi // [Function Name]:
625*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_SetStreamPath()
626*53ee8cc1Swenshuai.xi // [Description]
627*53ee8cc1Swenshuai.xi // Used by the TV to request a streaming path from the specified physical address.
628*53ee8cc1Swenshuai.xi // [Message property]
629*53ee8cc1Swenshuai.xi // Address: Broadcast
630*53ee8cc1Swenshuai.xi // Initiator:
631*53ee8cc1Swenshuai.xi // Follower: CEC Switches
632*53ee8cc1Swenshuai.xi // [Arguments]:
633*53ee8cc1Swenshuai.xi // new_address: The new physical address
634*53ee8cc1Swenshuai.xi // [Return]:
635*53ee8cc1Swenshuai.xi // error_code: return status
636*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_SetStreamPath(MS_U8 * new_address)637*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_SetStreamPath(MS_U8* new_address)
638*53ee8cc1Swenshuai.xi {
639*53ee8cc1Swenshuai.xi stCEC_MSG_SET_STREAM_PATH pCECArgs = {0};
640*53ee8cc1Swenshuai.xi
641*53ee8cc1Swenshuai.xi pCECArgs.ucNewAddr = new_address;
642*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
643*53ee8cc1Swenshuai.xi
644*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
645*53ee8cc1Swenshuai.xi {
646*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
647*53ee8cc1Swenshuai.xi }
648*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_SET_STREAM_PATH, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
649*53ee8cc1Swenshuai.xi {
650*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
651*53ee8cc1Swenshuai.xi }
652*53ee8cc1Swenshuai.xi
653*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
654*53ee8cc1Swenshuai.xi }
655*53ee8cc1Swenshuai.xi
656*53ee8cc1Swenshuai.xi //**************************************************************************
657*53ee8cc1Swenshuai.xi // [Function Name]:
658*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_Standby()
659*53ee8cc1Swenshuai.xi // [Description]
660*53ee8cc1Swenshuai.xi // Use to switch one or all devices into standby mode.
661*53ee8cc1Swenshuai.xi // One device: it's specific logical address, like "E_LA_RECORDER1"
662*53ee8cc1Swenshuai.xi // All device: Use broadcast logical address, "E_LA_BROADCAST"
663*53ee8cc1Swenshuai.xi // [Message property]
664*53ee8cc1Swenshuai.xi // Address: Directly / Broadcast
665*53ee8cc1Swenshuai.xi // Initiator: TV(Broadcast Address)
666*53ee8cc1Swenshuai.xi // Follower: All
667*53ee8cc1Swenshuai.xi // [Arguments]:
668*53ee8cc1Swenshuai.xi // dst_address: destination logical address
669*53ee8cc1Swenshuai.xi // [Return]:
670*53ee8cc1Swenshuai.xi // error_code: return status
671*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_Standby(MsCEC_DEVICELA dst_address)672*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_Standby(MsCEC_DEVICELA dst_address)
673*53ee8cc1Swenshuai.xi {
674*53ee8cc1Swenshuai.xi stCEC_MSG_STANDBY pCECArgs = {0};
675*53ee8cc1Swenshuai.xi
676*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
677*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
678*53ee8cc1Swenshuai.xi
679*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
680*53ee8cc1Swenshuai.xi {
681*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
682*53ee8cc1Swenshuai.xi }
683*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_STANDBY, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
684*53ee8cc1Swenshuai.xi {
685*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
686*53ee8cc1Swenshuai.xi }
687*53ee8cc1Swenshuai.xi
688*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
689*53ee8cc1Swenshuai.xi }
690*53ee8cc1Swenshuai.xi
691*53ee8cc1Swenshuai.xi //**************************************************************************
692*53ee8cc1Swenshuai.xi // [Function Name]:
693*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_RecordOff()
694*53ee8cc1Swenshuai.xi // [Description]
695*53ee8cc1Swenshuai.xi // Requests a device to stop a recording.
696*53ee8cc1Swenshuai.xi // [Message property]
697*53ee8cc1Swenshuai.xi // Address: Directly
698*53ee8cc1Swenshuai.xi // Initiator: Device Initiating a recording
699*53ee8cc1Swenshuai.xi // Follower: Recording Device if implementing <Record On>
700*53ee8cc1Swenshuai.xi // [Arguments]:
701*53ee8cc1Swenshuai.xi // dst_address: destination logical address
702*53ee8cc1Swenshuai.xi // [Return]:
703*53ee8cc1Swenshuai.xi // error_code: return status
704*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_RecordOff(MsCEC_DEVICELA dst_address)705*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_RecordOff(MsCEC_DEVICELA dst_address)
706*53ee8cc1Swenshuai.xi {
707*53ee8cc1Swenshuai.xi stCEC_MSG_RECORD_OFF pCECArgs = {0};
708*53ee8cc1Swenshuai.xi
709*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
710*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
711*53ee8cc1Swenshuai.xi
712*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
713*53ee8cc1Swenshuai.xi {
714*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
715*53ee8cc1Swenshuai.xi }
716*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_RECORD_OFF, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
717*53ee8cc1Swenshuai.xi {
718*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
719*53ee8cc1Swenshuai.xi }
720*53ee8cc1Swenshuai.xi
721*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
722*53ee8cc1Swenshuai.xi }
723*53ee8cc1Swenshuai.xi
724*53ee8cc1Swenshuai.xi //**************************************************************************
725*53ee8cc1Swenshuai.xi // [Function Name]:
726*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_RecordOn()
727*53ee8cc1Swenshuai.xi // [Description]
728*53ee8cc1Swenshuai.xi // Attempt to record the specified source.
729*53ee8cc1Swenshuai.xi // [Message property]
730*53ee8cc1Swenshuai.xi // Address: Directly
731*53ee8cc1Swenshuai.xi // Initiator:
732*53ee8cc1Swenshuai.xi // Follower:
733*53ee8cc1Swenshuai.xi // [Arguments]:
734*53ee8cc1Swenshuai.xi // dst_address: destination logical address
735*53ee8cc1Swenshuai.xi // [Return]:
736*53ee8cc1Swenshuai.xi // error_code: return status
737*53ee8cc1Swenshuai.xi //**************************************************************************
MsAPI_CEC_Msg_RecordOn(MsCEC_DEVICELA dst_address,MsCEC_MSG_RECORD_SOURCE_TYPE cmd)738*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MsAPI_CEC_Msg_RecordOn(MsCEC_DEVICELA dst_address, MsCEC_MSG_RECORD_SOURCE_TYPE cmd)
739*53ee8cc1Swenshuai.xi {
740*53ee8cc1Swenshuai.xi stCEC_MSG_RECORD_ON pCECArgs = {0};
741*53ee8cc1Swenshuai.xi
742*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
743*53ee8cc1Swenshuai.xi pCECArgs.eCmd = cmd;
744*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
745*53ee8cc1Swenshuai.xi
746*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
747*53ee8cc1Swenshuai.xi {
748*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
749*53ee8cc1Swenshuai.xi }
750*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_RECORD_ON, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
751*53ee8cc1Swenshuai.xi {
752*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
753*53ee8cc1Swenshuai.xi }
754*53ee8cc1Swenshuai.xi
755*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
756*53ee8cc1Swenshuai.xi }
757*53ee8cc1Swenshuai.xi
758*53ee8cc1Swenshuai.xi //**************************************************************************
759*53ee8cc1Swenshuai.xi // [Function Name]:
760*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_ReportCECVersion()
761*53ee8cc1Swenshuai.xi // [Description]
762*53ee8cc1Swenshuai.xi // Used to indicate the supported CEC version, in response to a <Get CEC Version>
763*53ee8cc1Swenshuai.xi // [Message property]
764*53ee8cc1Swenshuai.xi // Address: Directly
765*53ee8cc1Swenshuai.xi // Initiator: All
766*53ee8cc1Swenshuai.xi // Follower: All
767*53ee8cc1Swenshuai.xi // [Arguments]:
768*53ee8cc1Swenshuai.xi // dst_address: destination logical address
769*53ee8cc1Swenshuai.xi // version: CEC version
770*53ee8cc1Swenshuai.xi // [Return]:
771*53ee8cc1Swenshuai.xi // error_code: return status
772*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_ReportCECVersion(MsCEC_DEVICELA dst_address,MS_U8 version)773*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReportCECVersion(MsCEC_DEVICELA dst_address, MS_U8 version)
774*53ee8cc1Swenshuai.xi {
775*53ee8cc1Swenshuai.xi stCEC_MSG_REPORT_CEC_VERSION pCECArgs = {0};
776*53ee8cc1Swenshuai.xi
777*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
778*53ee8cc1Swenshuai.xi pCECArgs.ucVersion = version;
779*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
780*53ee8cc1Swenshuai.xi
781*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
782*53ee8cc1Swenshuai.xi {
783*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
784*53ee8cc1Swenshuai.xi }
785*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_REPORT_CEC_VERSION, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
786*53ee8cc1Swenshuai.xi {
787*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
788*53ee8cc1Swenshuai.xi }
789*53ee8cc1Swenshuai.xi
790*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
791*53ee8cc1Swenshuai.xi }
792*53ee8cc1Swenshuai.xi
793*53ee8cc1Swenshuai.xi //**************************************************************************
794*53ee8cc1Swenshuai.xi // [Function Name]:
795*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_ReqCECVersion()
796*53ee8cc1Swenshuai.xi // [Description]
797*53ee8cc1Swenshuai.xi // Used by a device to enquire which version of CEC the target supports
798*53ee8cc1Swenshuai.xi // [Message property]
799*53ee8cc1Swenshuai.xi // Address: Directly
800*53ee8cc1Swenshuai.xi // Initiator: All
801*53ee8cc1Swenshuai.xi // Follower: All
802*53ee8cc1Swenshuai.xi // [Arguments]:
803*53ee8cc1Swenshuai.xi // dst_address: destination logical address
804*53ee8cc1Swenshuai.xi // [Return]:
805*53ee8cc1Swenshuai.xi // error_code: return status
806*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_ReqCECVersion(MsCEC_DEVICELA dst_address)807*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReqCECVersion(MsCEC_DEVICELA dst_address)
808*53ee8cc1Swenshuai.xi {
809*53ee8cc1Swenshuai.xi stCEC_MSG_REQ_CEC_VERSION pCECArgs = {0};
810*53ee8cc1Swenshuai.xi
811*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
812*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
813*53ee8cc1Swenshuai.xi
814*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
815*53ee8cc1Swenshuai.xi {
816*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
817*53ee8cc1Swenshuai.xi }
818*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_REQ_CEC_VERSION, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
819*53ee8cc1Swenshuai.xi {
820*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
821*53ee8cc1Swenshuai.xi }
822*53ee8cc1Swenshuai.xi
823*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
824*53ee8cc1Swenshuai.xi }
825*53ee8cc1Swenshuai.xi
826*53ee8cc1Swenshuai.xi //**************************************************************************
827*53ee8cc1Swenshuai.xi // [Function Name]:
828*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_ReportPhycalAddress()
829*53ee8cc1Swenshuai.xi // [Description]
830*53ee8cc1Swenshuai.xi // Use to inform all other devices of the mapping between physical and logical address of the initiator
831*53ee8cc1Swenshuai.xi // [Message property]
832*53ee8cc1Swenshuai.xi // Address: Broadcast
833*53ee8cc1Swenshuai.xi // Initiator: All
834*53ee8cc1Swenshuai.xi // Follower: TV
835*53ee8cc1Swenshuai.xi // [Arguments]:
836*53ee8cc1Swenshuai.xi //
837*53ee8cc1Swenshuai.xi // [Return]:
838*53ee8cc1Swenshuai.xi // error_code: return status
839*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_ReportPhycalAddress(void)840*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReportPhycalAddress(void)
841*53ee8cc1Swenshuai.xi {
842*53ee8cc1Swenshuai.xi stCEC_MSG_REPORT_PHYCAL_ADDRESS pCECArgs = {0};
843*53ee8cc1Swenshuai.xi
844*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
845*53ee8cc1Swenshuai.xi
846*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
847*53ee8cc1Swenshuai.xi {
848*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
849*53ee8cc1Swenshuai.xi }
850*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_REPORT_PHYCAL_ADDRESS, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
851*53ee8cc1Swenshuai.xi {
852*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
853*53ee8cc1Swenshuai.xi }
854*53ee8cc1Swenshuai.xi
855*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
856*53ee8cc1Swenshuai.xi }
857*53ee8cc1Swenshuai.xi
858*53ee8cc1Swenshuai.xi //**************************************************************************
859*53ee8cc1Swenshuai.xi // [Function Name]:
860*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_ReqPhycalAddress()
861*53ee8cc1Swenshuai.xi // [Description]
862*53ee8cc1Swenshuai.xi // A request to a device to return its physical address
863*53ee8cc1Swenshuai.xi // [Message property]
864*53ee8cc1Swenshuai.xi // Address: Directly
865*53ee8cc1Swenshuai.xi // Initiator:
866*53ee8cc1Swenshuai.xi // Follower: All, except for CEC Switches using logical address 15
867*53ee8cc1Swenshuai.xi // [Arguments]:
868*53ee8cc1Swenshuai.xi // dst_address: destination logical address
869*53ee8cc1Swenshuai.xi // [Return]:
870*53ee8cc1Swenshuai.xi // error_code: return status
871*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_ReqPhycalAddress(MsCEC_DEVICELA dst_address)872*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReqPhycalAddress(MsCEC_DEVICELA dst_address)
873*53ee8cc1Swenshuai.xi {
874*53ee8cc1Swenshuai.xi stCEC_MSG_REQ_PHYCAL_ADDRESS pCECArgs = {0};
875*53ee8cc1Swenshuai.xi
876*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
877*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
878*53ee8cc1Swenshuai.xi
879*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
880*53ee8cc1Swenshuai.xi {
881*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
882*53ee8cc1Swenshuai.xi }
883*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_REQ_PHYCAL_ADDRESS, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
884*53ee8cc1Swenshuai.xi {
885*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
886*53ee8cc1Swenshuai.xi }
887*53ee8cc1Swenshuai.xi
888*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
889*53ee8cc1Swenshuai.xi }
890*53ee8cc1Swenshuai.xi
891*53ee8cc1Swenshuai.xi //**************************************************************************
892*53ee8cc1Swenshuai.xi // [Function Name]:
893*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_DeckControl()
894*53ee8cc1Swenshuai.xi // [Description]
895*53ee8cc1Swenshuai.xi // Use to control a device's media functions
896*53ee8cc1Swenshuai.xi // [Message property]
897*53ee8cc1Swenshuai.xi // Address: Directly
898*53ee8cc1Swenshuai.xi // Initiator:
899*53ee8cc1Swenshuai.xi // Follower:
900*53ee8cc1Swenshuai.xi // [Arguments]:
901*53ee8cc1Swenshuai.xi // dst_address: destination logical address
902*53ee8cc1Swenshuai.xi // cmd: deck control mode
903*53ee8cc1Swenshuai.xi // [Return]:
904*53ee8cc1Swenshuai.xi // error_code: return status
905*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_DeckControl(MsCEC_DEVICELA dst_address,MsCEC_MSG_DC_DECK_CTRL_PARM cmd)906*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_DeckControl(MsCEC_DEVICELA dst_address, MsCEC_MSG_DC_DECK_CTRL_PARM cmd)
907*53ee8cc1Swenshuai.xi {
908*53ee8cc1Swenshuai.xi stCEC_MSG_DECK_CONTROL pCECArgs = {0};
909*53ee8cc1Swenshuai.xi
910*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
911*53ee8cc1Swenshuai.xi pCECArgs.eCmd = cmd;
912*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
913*53ee8cc1Swenshuai.xi
914*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
915*53ee8cc1Swenshuai.xi {
916*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
917*53ee8cc1Swenshuai.xi }
918*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_DECK_CONTROL, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
919*53ee8cc1Swenshuai.xi {
920*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
921*53ee8cc1Swenshuai.xi }
922*53ee8cc1Swenshuai.xi
923*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
924*53ee8cc1Swenshuai.xi }
925*53ee8cc1Swenshuai.xi
926*53ee8cc1Swenshuai.xi //**************************************************************************
927*53ee8cc1Swenshuai.xi // [Function Name]:
928*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_DeckStatus()
929*53ee8cc1Swenshuai.xi // [Description]
930*53ee8cc1Swenshuai.xi // Use to provide a device's status when received "Give Deck Status"
931*53ee8cc1Swenshuai.xi // [Message property]
932*53ee8cc1Swenshuai.xi // Address: Directly
933*53ee8cc1Swenshuai.xi // Initiator:
934*53ee8cc1Swenshuai.xi // Follower:
935*53ee8cc1Swenshuai.xi // [Arguments]:
936*53ee8cc1Swenshuai.xi // dst_address: destination logical address
937*53ee8cc1Swenshuai.xi // cmd: deck info mode
938*53ee8cc1Swenshuai.xi // [Return]:
939*53ee8cc1Swenshuai.xi // error_code: return status
940*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_DecStatus(MsCEC_DEVICELA dst_address,MsCEC_MSG_DC_DECK_STATUS_PARM cmd)941*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_DecStatus(MsCEC_DEVICELA dst_address, MsCEC_MSG_DC_DECK_STATUS_PARM cmd)
942*53ee8cc1Swenshuai.xi {
943*53ee8cc1Swenshuai.xi stCEC_MSG_DEC_STATUS pCECArgs = {0};
944*53ee8cc1Swenshuai.xi
945*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
946*53ee8cc1Swenshuai.xi pCECArgs.eCmd = cmd;
947*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
948*53ee8cc1Swenshuai.xi
949*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
950*53ee8cc1Swenshuai.xi {
951*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
952*53ee8cc1Swenshuai.xi }
953*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_DEC_STATUS, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
954*53ee8cc1Swenshuai.xi {
955*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
956*53ee8cc1Swenshuai.xi }
957*53ee8cc1Swenshuai.xi
958*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
959*53ee8cc1Swenshuai.xi }
960*53ee8cc1Swenshuai.xi
961*53ee8cc1Swenshuai.xi //**************************************************************************
962*53ee8cc1Swenshuai.xi // [Function Name]:
963*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_GiveDeckStatus()
964*53ee8cc1Swenshuai.xi // [Description]
965*53ee8cc1Swenshuai.xi // Use to request device's status
966*53ee8cc1Swenshuai.xi // [Message property]
967*53ee8cc1Swenshuai.xi // Address: Directly
968*53ee8cc1Swenshuai.xi // Initiator:
969*53ee8cc1Swenshuai.xi // Follower:
970*53ee8cc1Swenshuai.xi // [Arguments]:
971*53ee8cc1Swenshuai.xi // dst_address: destination logical address
972*53ee8cc1Swenshuai.xi // cmd: status request mode
973*53ee8cc1Swenshuai.xi // [Return]:
974*53ee8cc1Swenshuai.xi // error_code: return status
975*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_MSg_GiveDeckStatus(MsCEC_DEVICELA dst_address,MsCEC_MSG_STATUS_REQUEST_PARM cmd)976*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_MSg_GiveDeckStatus(MsCEC_DEVICELA dst_address, MsCEC_MSG_STATUS_REQUEST_PARM cmd)
977*53ee8cc1Swenshuai.xi {
978*53ee8cc1Swenshuai.xi stCEC_MSG_GIVE_DECK_STATUS pCECArgs = {0};
979*53ee8cc1Swenshuai.xi
980*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
981*53ee8cc1Swenshuai.xi pCECArgs.eCmd = cmd;
982*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
983*53ee8cc1Swenshuai.xi
984*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
985*53ee8cc1Swenshuai.xi {
986*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
987*53ee8cc1Swenshuai.xi }
988*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_GIVE_DECK_STATUS, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
989*53ee8cc1Swenshuai.xi {
990*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
991*53ee8cc1Swenshuai.xi }
992*53ee8cc1Swenshuai.xi
993*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
994*53ee8cc1Swenshuai.xi }
995*53ee8cc1Swenshuai.xi
996*53ee8cc1Swenshuai.xi //**************************************************************************
997*53ee8cc1Swenshuai.xi // [Function Name]:
998*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_DCPlay()
999*53ee8cc1Swenshuai.xi // [Description]
1000*53ee8cc1Swenshuai.xi // Use to control the playback behaviour of a source device
1001*53ee8cc1Swenshuai.xi // [Message property]
1002*53ee8cc1Swenshuai.xi // Address: Directly
1003*53ee8cc1Swenshuai.xi // Initiator:
1004*53ee8cc1Swenshuai.xi // Follower:
1005*53ee8cc1Swenshuai.xi // [Arguments]:
1006*53ee8cc1Swenshuai.xi // dst_address: destination logical address
1007*53ee8cc1Swenshuai.xi // cmd: play mode
1008*53ee8cc1Swenshuai.xi // [Return]:
1009*53ee8cc1Swenshuai.xi // error_code: return status
1010*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_MSg_DCPlay(MsCEC_DEVICELA dst_address,MsCEC_MSG_DC_PLAY_PARM cmd)1011*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_MSg_DCPlay(MsCEC_DEVICELA dst_address, MsCEC_MSG_DC_PLAY_PARM cmd)
1012*53ee8cc1Swenshuai.xi {
1013*53ee8cc1Swenshuai.xi stCEC_MSG_DC_PLAY pCECArgs = {0};
1014*53ee8cc1Swenshuai.xi
1015*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
1016*53ee8cc1Swenshuai.xi pCECArgs.eCmd = cmd;
1017*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
1018*53ee8cc1Swenshuai.xi
1019*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1020*53ee8cc1Swenshuai.xi {
1021*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1022*53ee8cc1Swenshuai.xi }
1023*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_DC_PLAY, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1024*53ee8cc1Swenshuai.xi {
1025*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1026*53ee8cc1Swenshuai.xi }
1027*53ee8cc1Swenshuai.xi
1028*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
1029*53ee8cc1Swenshuai.xi }
1030*53ee8cc1Swenshuai.xi
1031*53ee8cc1Swenshuai.xi //**************************************************************************
1032*53ee8cc1Swenshuai.xi // [Function Name]:
1033*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_ReqMenuStatus()
1034*53ee8cc1Swenshuai.xi // [Description]
1035*53ee8cc1Swenshuai.xi // Request from TV for a device to show/remove a menu or to query status
1036*53ee8cc1Swenshuai.xi // [Message property]
1037*53ee8cc1Swenshuai.xi // Address: Directly
1038*53ee8cc1Swenshuai.xi // Initiator:
1039*53ee8cc1Swenshuai.xi // Follower:
1040*53ee8cc1Swenshuai.xi // [Arguments]:
1041*53ee8cc1Swenshuai.xi // dst_address: destination logical address
1042*53ee8cc1Swenshuai.xi // cmd: menu request type
1043*53ee8cc1Swenshuai.xi // [Return]:
1044*53ee8cc1Swenshuai.xi // error_code: return status
1045*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_ReqMenuStatus(MsCEC_DEVICELA dst_address,MsCEC_MSG_MENU_REQ_TYPE cmd)1046*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReqMenuStatus(MsCEC_DEVICELA dst_address, MsCEC_MSG_MENU_REQ_TYPE cmd)
1047*53ee8cc1Swenshuai.xi {
1048*53ee8cc1Swenshuai.xi stCEC_MSG_REQ_MENU_STATUS pCECArgs = {0};
1049*53ee8cc1Swenshuai.xi
1050*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
1051*53ee8cc1Swenshuai.xi pCECArgs.eCmd = cmd;
1052*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
1053*53ee8cc1Swenshuai.xi
1054*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1055*53ee8cc1Swenshuai.xi {
1056*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1057*53ee8cc1Swenshuai.xi }
1058*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_REQ_MENU_STATUS, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1059*53ee8cc1Swenshuai.xi {
1060*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1061*53ee8cc1Swenshuai.xi }
1062*53ee8cc1Swenshuai.xi
1063*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
1064*53ee8cc1Swenshuai.xi }
1065*53ee8cc1Swenshuai.xi
1066*53ee8cc1Swenshuai.xi //**************************************************************************
1067*53ee8cc1Swenshuai.xi // [Function Name]:
1068*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_UserCtrlPressed()
1069*53ee8cc1Swenshuai.xi // [Description]
1070*53ee8cc1Swenshuai.xi // Use to indicated that user pressed which control button
1071*53ee8cc1Swenshuai.xi // [Message property]
1072*53ee8cc1Swenshuai.xi // Address: Directly
1073*53ee8cc1Swenshuai.xi // Initiator:
1074*53ee8cc1Swenshuai.xi // Follower:
1075*53ee8cc1Swenshuai.xi // [Arguments]:
1076*53ee8cc1Swenshuai.xi // dst_address: destination logical address
1077*53ee8cc1Swenshuai.xi // cmd: UI command
1078*53ee8cc1Swenshuai.xi // [Return]:
1079*53ee8cc1Swenshuai.xi // error_code: return status
1080*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_UserCtrlPressed(MS_BOOL bUserCtrlEn,MsCEC_DEVICELA dst_address,MsCEC_MSG_USER_CTRL_PARM cmd)1081*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_UserCtrlPressed(MS_BOOL bUserCtrlEn, MsCEC_DEVICELA dst_address, MsCEC_MSG_USER_CTRL_PARM cmd)
1082*53ee8cc1Swenshuai.xi {
1083*53ee8cc1Swenshuai.xi stCEC_MSG_USER_CTRL_PRESSED pCECArgs = {0};
1084*53ee8cc1Swenshuai.xi
1085*53ee8cc1Swenshuai.xi pCECArgs.bUserCtrlEn = bUserCtrlEn;
1086*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
1087*53ee8cc1Swenshuai.xi pCECArgs.eCmd = cmd;
1088*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
1089*53ee8cc1Swenshuai.xi
1090*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1091*53ee8cc1Swenshuai.xi {
1092*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1093*53ee8cc1Swenshuai.xi }
1094*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_USER_CTRL_PRESSED, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1095*53ee8cc1Swenshuai.xi {
1096*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1097*53ee8cc1Swenshuai.xi }
1098*53ee8cc1Swenshuai.xi
1099*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
1100*53ee8cc1Swenshuai.xi }
1101*53ee8cc1Swenshuai.xi
1102*53ee8cc1Swenshuai.xi //**************************************************************************
1103*53ee8cc1Swenshuai.xi // [Function Name]:
1104*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_UserCtrlReleased()
1105*53ee8cc1Swenshuai.xi // [Description]
1106*53ee8cc1Swenshuai.xi // Use to indicated that user released which control button
1107*53ee8cc1Swenshuai.xi // [Message property]
1108*53ee8cc1Swenshuai.xi // Address: Directly
1109*53ee8cc1Swenshuai.xi // Initiator:
1110*53ee8cc1Swenshuai.xi // Follower:
1111*53ee8cc1Swenshuai.xi // [Arguments]:
1112*53ee8cc1Swenshuai.xi // dst_address: destination logical address
1113*53ee8cc1Swenshuai.xi // [Return]:
1114*53ee8cc1Swenshuai.xi // error_code: return status
1115*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_UserCtrlReleased(MsCEC_DEVICELA dst_address)1116*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_UserCtrlReleased(MsCEC_DEVICELA dst_address)
1117*53ee8cc1Swenshuai.xi {
1118*53ee8cc1Swenshuai.xi stCEC_MSG_USER_CTRL_RELEASED pCECArgs = {0};
1119*53ee8cc1Swenshuai.xi
1120*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
1121*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
1122*53ee8cc1Swenshuai.xi
1123*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1124*53ee8cc1Swenshuai.xi {
1125*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1126*53ee8cc1Swenshuai.xi }
1127*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_USER_CTRL_RELEASED, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1128*53ee8cc1Swenshuai.xi {
1129*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1130*53ee8cc1Swenshuai.xi }
1131*53ee8cc1Swenshuai.xi
1132*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
1133*53ee8cc1Swenshuai.xi }
1134*53ee8cc1Swenshuai.xi
1135*53ee8cc1Swenshuai.xi //**************************************************************************
1136*53ee8cc1Swenshuai.xi // [Function Name]:
1137*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_ReportPowerStatus()
1138*53ee8cc1Swenshuai.xi // [Description]
1139*53ee8cc1Swenshuai.xi // Use to inform a requesting device of the current power status
1140*53ee8cc1Swenshuai.xi // [Message property]
1141*53ee8cc1Swenshuai.xi // Address: Directly
1142*53ee8cc1Swenshuai.xi // Initiator: All (except CEC switches)
1143*53ee8cc1Swenshuai.xi // Follower:
1144*53ee8cc1Swenshuai.xi // [Arguments]:
1145*53ee8cc1Swenshuai.xi // dst_address: destination logical address
1146*53ee8cc1Swenshuai.xi // [Return]:
1147*53ee8cc1Swenshuai.xi // error_code: return status
1148*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_ReportPowerStatus(MsCEC_DEVICELA dst_address)1149*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReportPowerStatus(MsCEC_DEVICELA dst_address)
1150*53ee8cc1Swenshuai.xi {
1151*53ee8cc1Swenshuai.xi stCEC_MSG_REPORT_POWER_STATUS pCECArgs = {0};
1152*53ee8cc1Swenshuai.xi
1153*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
1154*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
1155*53ee8cc1Swenshuai.xi
1156*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1157*53ee8cc1Swenshuai.xi {
1158*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1159*53ee8cc1Swenshuai.xi }
1160*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_REPORT_POWER_STATUS, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1161*53ee8cc1Swenshuai.xi {
1162*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1163*53ee8cc1Swenshuai.xi }
1164*53ee8cc1Swenshuai.xi
1165*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
1166*53ee8cc1Swenshuai.xi }
1167*53ee8cc1Swenshuai.xi
1168*53ee8cc1Swenshuai.xi //**************************************************************************
1169*53ee8cc1Swenshuai.xi // [Function Name]:
1170*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_ReqPowerStatus()
1171*53ee8cc1Swenshuai.xi // [Description]
1172*53ee8cc1Swenshuai.xi // Use to determine the current power status of a target device
1173*53ee8cc1Swenshuai.xi // [Message property]
1174*53ee8cc1Swenshuai.xi // Address: Directly
1175*53ee8cc1Swenshuai.xi // Initiator:
1176*53ee8cc1Swenshuai.xi // Follower: All (except CEC switches)
1177*53ee8cc1Swenshuai.xi // [Arguments]:
1178*53ee8cc1Swenshuai.xi // dst_address: destination logical address
1179*53ee8cc1Swenshuai.xi // [Return]:
1180*53ee8cc1Swenshuai.xi // error_code: return status
1181*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_ReqPowerStatus(MsCEC_DEVICELA dst_address)1182*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReqPowerStatus(MsCEC_DEVICELA dst_address)
1183*53ee8cc1Swenshuai.xi {
1184*53ee8cc1Swenshuai.xi stCEC_MSG_REQ_POWER_STATUS pCECArgs = {0};
1185*53ee8cc1Swenshuai.xi
1186*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
1187*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
1188*53ee8cc1Swenshuai.xi
1189*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1190*53ee8cc1Swenshuai.xi {
1191*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1192*53ee8cc1Swenshuai.xi }
1193*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_REQ_POWER_STATUS, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1194*53ee8cc1Swenshuai.xi {
1195*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1196*53ee8cc1Swenshuai.xi }
1197*53ee8cc1Swenshuai.xi
1198*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
1199*53ee8cc1Swenshuai.xi }
1200*53ee8cc1Swenshuai.xi
1201*53ee8cc1Swenshuai.xi //**************************************************************************
1202*53ee8cc1Swenshuai.xi // [Function Name]:
1203*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_FeatureAbort()
1204*53ee8cc1Swenshuai.xi // [Description]
1205*53ee8cc1Swenshuai.xi // Use to indicate that device doesn't support message type
1206*53ee8cc1Swenshuai.xi // [Message property]
1207*53ee8cc1Swenshuai.xi // Address: Directly
1208*53ee8cc1Swenshuai.xi // Initiator: Generate if a message is not supported
1209*53ee8cc1Swenshuai.xi // Follower: All
1210*53ee8cc1Swenshuai.xi // [Arguments]:
1211*53ee8cc1Swenshuai.xi // dst_address: destination logical address
1212*53ee8cc1Swenshuai.xi // msg: the requested message type
1213*53ee8cc1Swenshuai.xi // cmd: unsupport reason
1214*53ee8cc1Swenshuai.xi // [Return]:
1215*53ee8cc1Swenshuai.xi // error_code: return status
1216*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_FeatureAbort(MsCEC_DEVICELA dst_address,MsCEC_MSGLIST msg,MsCEC_MSG_ABORT_REASON cmd)1217*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_FeatureAbort(MsCEC_DEVICELA dst_address, MsCEC_MSGLIST msg, MsCEC_MSG_ABORT_REASON cmd)
1218*53ee8cc1Swenshuai.xi {
1219*53ee8cc1Swenshuai.xi stCEC_MSG_FEATURE_ABORT pCECArgs = {0};
1220*53ee8cc1Swenshuai.xi
1221*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
1222*53ee8cc1Swenshuai.xi pCECArgs.eMsg = msg;
1223*53ee8cc1Swenshuai.xi pCECArgs.eCmd = cmd;
1224*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
1225*53ee8cc1Swenshuai.xi
1226*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1227*53ee8cc1Swenshuai.xi {
1228*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1229*53ee8cc1Swenshuai.xi }
1230*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_FEATURE_ABORT, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1231*53ee8cc1Swenshuai.xi {
1232*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1233*53ee8cc1Swenshuai.xi }
1234*53ee8cc1Swenshuai.xi
1235*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
1236*53ee8cc1Swenshuai.xi }
1237*53ee8cc1Swenshuai.xi
1238*53ee8cc1Swenshuai.xi //**************************************************************************
1239*53ee8cc1Swenshuai.xi // [Function Name]:
1240*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_Abort()
1241*53ee8cc1Swenshuai.xi // [Description]
1242*53ee8cc1Swenshuai.xi // This message is reserved for testing purposes.
1243*53ee8cc1Swenshuai.xi // [Message property]
1244*53ee8cc1Swenshuai.xi // Address: Directly
1245*53ee8cc1Swenshuai.xi // Initiator:
1246*53ee8cc1Swenshuai.xi // Follower: All except for CEC switches
1247*53ee8cc1Swenshuai.xi // [Arguments]:
1248*53ee8cc1Swenshuai.xi // dst_address: destination logical address
1249*53ee8cc1Swenshuai.xi // [Return]:
1250*53ee8cc1Swenshuai.xi // error_code: return status
1251*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_Abort(MsCEC_DEVICELA dst_address)1252*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_Abort(MsCEC_DEVICELA dst_address)
1253*53ee8cc1Swenshuai.xi {
1254*53ee8cc1Swenshuai.xi stCEC_MSG_ABORT pCECArgs = {0};
1255*53ee8cc1Swenshuai.xi
1256*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
1257*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
1258*53ee8cc1Swenshuai.xi
1259*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1260*53ee8cc1Swenshuai.xi {
1261*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1262*53ee8cc1Swenshuai.xi }
1263*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_ABORT, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1264*53ee8cc1Swenshuai.xi {
1265*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1266*53ee8cc1Swenshuai.xi }
1267*53ee8cc1Swenshuai.xi
1268*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
1269*53ee8cc1Swenshuai.xi }
1270*53ee8cc1Swenshuai.xi
1271*53ee8cc1Swenshuai.xi //**************************************************************************
1272*53ee8cc1Swenshuai.xi // [Function Name]:
1273*53ee8cc1Swenshuai.xi // MApi_CEC_Msg_SendMenuLanguage()
1274*53ee8cc1Swenshuai.xi // [Description]
1275*53ee8cc1Swenshuai.xi // Used by a CEC switch when it's manually switched language to inform akk other devices.
1276*53ee8cc1Swenshuai.xi // [Message property]
1277*53ee8cc1Swenshuai.xi // Address: Broadcast
1278*53ee8cc1Swenshuai.xi // Initiator: CEC switches and TV(with 2 or more HDMI inputs)
1279*53ee8cc1Swenshuai.xi // Follower: CEC switches
1280*53ee8cc1Swenshuai.xi // [Arguments]:
1281*53ee8cc1Swenshuai.xi // MenuLanguageCode: iso639-2 Language Code, 3 bytes
1282*53ee8cc1Swenshuai.xi // [Return]:
1283*53ee8cc1Swenshuai.xi // error_code: return status
1284*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_SendMenuLanguage(MS_U8 * pu8MenuLanguageCode)1285*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_SendMenuLanguage(MS_U8* pu8MenuLanguageCode)
1286*53ee8cc1Swenshuai.xi {
1287*53ee8cc1Swenshuai.xi stCEC_MSG_SEND_MENU_LANGUAGE pCECArgs = {0};
1288*53ee8cc1Swenshuai.xi
1289*53ee8cc1Swenshuai.xi pCECArgs.pu8MenulanguageCode = pu8MenuLanguageCode;
1290*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
1291*53ee8cc1Swenshuai.xi
1292*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1293*53ee8cc1Swenshuai.xi {
1294*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1295*53ee8cc1Swenshuai.xi }
1296*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_SEND_MENU_LANGUAGE, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1297*53ee8cc1Swenshuai.xi {
1298*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1299*53ee8cc1Swenshuai.xi }
1300*53ee8cc1Swenshuai.xi
1301*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
1302*53ee8cc1Swenshuai.xi }
1303*53ee8cc1Swenshuai.xi
1304*53ee8cc1Swenshuai.xi //**************************************************************************
1305*53ee8cc1Swenshuai.xi // [Function Name]:
1306*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_ReqARCInitiation()
1307*53ee8cc1Swenshuai.xi // [Description]
1308*53ee8cc1Swenshuai.xi // Used by an ARC TX device to request an ARC RX device to active
1309*53ee8cc1Swenshuai.xi // the ARC functionility in ARC TX device
1310*53ee8cc1Swenshuai.xi // [Message property]
1311*53ee8cc1Swenshuai.xi // Address: Directly
1312*53ee8cc1Swenshuai.xi // Initiator:
1313*53ee8cc1Swenshuai.xi // Follower: ARC RX device
1314*53ee8cc1Swenshuai.xi // [Arguments]:
1315*53ee8cc1Swenshuai.xi // dst_address: destination logical address
1316*53ee8cc1Swenshuai.xi // [Return]:
1317*53ee8cc1Swenshuai.xi // error_code: return status
1318*53ee8cc1Swenshuai.xi //**************************************************************************
MsAPI_CecMsg_ReqARCInitiation(MsCEC_DEVICELA dst_address)1319*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MsAPI_CecMsg_ReqARCInitiation(MsCEC_DEVICELA dst_address)
1320*53ee8cc1Swenshuai.xi {
1321*53ee8cc1Swenshuai.xi stCEC_MSG_REQ_ARC_INITIATION pCECArgs = {0};
1322*53ee8cc1Swenshuai.xi
1323*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
1324*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
1325*53ee8cc1Swenshuai.xi
1326*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1327*53ee8cc1Swenshuai.xi {
1328*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1329*53ee8cc1Swenshuai.xi }
1330*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_REQ_ARC_INITIATION, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1331*53ee8cc1Swenshuai.xi {
1332*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1333*53ee8cc1Swenshuai.xi }
1334*53ee8cc1Swenshuai.xi
1335*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
1336*53ee8cc1Swenshuai.xi }
1337*53ee8cc1Swenshuai.xi
1338*53ee8cc1Swenshuai.xi //**************************************************************************
1339*53ee8cc1Swenshuai.xi // [Function Name]:
1340*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_ReqARCTermination()
1341*53ee8cc1Swenshuai.xi // [Description]
1342*53ee8cc1Swenshuai.xi // Used by an ARC TX device to request an ARC RX device to deactive
1343*53ee8cc1Swenshuai.xi // the ARC functionility in ARC TX device
1344*53ee8cc1Swenshuai.xi // [Message property]
1345*53ee8cc1Swenshuai.xi // Address: Directly
1346*53ee8cc1Swenshuai.xi // Initiator:
1347*53ee8cc1Swenshuai.xi // Follower: ARC RX device
1348*53ee8cc1Swenshuai.xi // [Arguments]:
1349*53ee8cc1Swenshuai.xi // dst_address: destination logical address
1350*53ee8cc1Swenshuai.xi // [Return]:
1351*53ee8cc1Swenshuai.xi // error_code: return status
1352*53ee8cc1Swenshuai.xi //**************************************************************************
MsAPI_CecMsg_ReqARCTermination(MsCEC_DEVICELA dst_address)1353*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MsAPI_CecMsg_ReqARCTermination(MsCEC_DEVICELA dst_address)
1354*53ee8cc1Swenshuai.xi {
1355*53ee8cc1Swenshuai.xi stCEC_MSG_REQ_ARC_TERMINATION pCECArgs = {0};
1356*53ee8cc1Swenshuai.xi
1357*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
1358*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
1359*53ee8cc1Swenshuai.xi
1360*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1361*53ee8cc1Swenshuai.xi {
1362*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1363*53ee8cc1Swenshuai.xi }
1364*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_REQ_ARC_TERMINATION, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1365*53ee8cc1Swenshuai.xi {
1366*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1367*53ee8cc1Swenshuai.xi }
1368*53ee8cc1Swenshuai.xi
1369*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
1370*53ee8cc1Swenshuai.xi }
1371*53ee8cc1Swenshuai.xi
1372*53ee8cc1Swenshuai.xi //**************************************************************************
1373*53ee8cc1Swenshuai.xi // [Function Name]:
1374*53ee8cc1Swenshuai.xi // MsAPI_CecMsg_AudioModeReq()
1375*53ee8cc1Swenshuai.xi // [Description]
1376*53ee8cc1Swenshuai.xi // A device implementing System Audio Control and which has volume control
1377*53ee8cc1Swenshuai.xi // RC buttons request to use System Audio Mode to the Amplifier
1378*53ee8cc1Swenshuai.xi // [Message property]
1379*53ee8cc1Swenshuai.xi // Address: Directly
1380*53ee8cc1Swenshuai.xi // Initiator:
1381*53ee8cc1Swenshuai.xi // Follower:
1382*53ee8cc1Swenshuai.xi // [Arguments]:
1383*53ee8cc1Swenshuai.xi // dst_address: destination logical address
1384*53ee8cc1Swenshuai.xi // amp_switch: 1: unmute amplifier. 0: mute amplifier
1385*53ee8cc1Swenshuai.xi // my_address: source to be used is the device specified at this address
1386*53ee8cc1Swenshuai.xi // [Return]:
1387*53ee8cc1Swenshuai.xi // error_code: return status
1388*53ee8cc1Swenshuai.xi //**************************************************************************
MsAPI_CecMsg_AudioModeReq(MsCEC_DEVICELA dst_address,MS_BOOL amp_switch,MS_U8 * my_address)1389*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MsAPI_CecMsg_AudioModeReq(MsCEC_DEVICELA dst_address, MS_BOOL amp_switch, MS_U8* my_address )
1390*53ee8cc1Swenshuai.xi {
1391*53ee8cc1Swenshuai.xi stCEC_MSG_AUDIO_MODE_REQ pCECArgs = {0};
1392*53ee8cc1Swenshuai.xi
1393*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
1394*53ee8cc1Swenshuai.xi pCECArgs.bAmpSwitch = amp_switch;
1395*53ee8cc1Swenshuai.xi pCECArgs.ucMyAddress = my_address;
1396*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
1397*53ee8cc1Swenshuai.xi
1398*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1399*53ee8cc1Swenshuai.xi {
1400*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1401*53ee8cc1Swenshuai.xi }
1402*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_AUDIO_MODE_REQ, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1403*53ee8cc1Swenshuai.xi {
1404*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1405*53ee8cc1Swenshuai.xi }
1406*53ee8cc1Swenshuai.xi
1407*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
1408*53ee8cc1Swenshuai.xi }
1409*53ee8cc1Swenshuai.xi
1410*53ee8cc1Swenshuai.xi //**************************************************************************
1411*53ee8cc1Swenshuai.xi // [Function Name]:
1412*53ee8cc1Swenshuai.xi // MApi_CEC_Msg_GiveAudioStatus()
1413*53ee8cc1Swenshuai.xi // [Description]
1414*53ee8cc1Swenshuai.xi // Use to request an Amplifier to send its volume and mute status
1415*53ee8cc1Swenshuai.xi // [Message property]
1416*53ee8cc1Swenshuai.xi // Address: Directly
1417*53ee8cc1Swenshuai.xi // Initiator: All (except CEC switches)
1418*53ee8cc1Swenshuai.xi // Follower:
1419*53ee8cc1Swenshuai.xi // [Arguments]:
1420*53ee8cc1Swenshuai.xi // dst_address: destination logical address
1421*53ee8cc1Swenshuai.xi // [Return]:
1422*53ee8cc1Swenshuai.xi // error_code: return status
1423*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_GiveAudioStatus(MsCEC_DEVICELA dst_address)1424*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_GiveAudioStatus(MsCEC_DEVICELA dst_address)
1425*53ee8cc1Swenshuai.xi {
1426*53ee8cc1Swenshuai.xi stCEC_MSG_GIVE_AUDIO_STATUS pCECArgs = {0};
1427*53ee8cc1Swenshuai.xi
1428*53ee8cc1Swenshuai.xi pCECArgs.eDetAddr = dst_address;
1429*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
1430*53ee8cc1Swenshuai.xi
1431*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1432*53ee8cc1Swenshuai.xi {
1433*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1434*53ee8cc1Swenshuai.xi }
1435*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_GIVE_AUDIO_STATUS, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1436*53ee8cc1Swenshuai.xi {
1437*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1438*53ee8cc1Swenshuai.xi }
1439*53ee8cc1Swenshuai.xi
1440*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
1441*53ee8cc1Swenshuai.xi }
1442*53ee8cc1Swenshuai.xi
1443*53ee8cc1Swenshuai.xi //**************************************************************************
1444*53ee8cc1Swenshuai.xi // [Function Name]:
1445*53ee8cc1Swenshuai.xi // MApi_CEC_Get_Header()
1446*53ee8cc1Swenshuai.xi // [Description]
1447*53ee8cc1Swenshuai.xi //
1448*53ee8cc1Swenshuai.xi // [Arguments]:
1449*53ee8cc1Swenshuai.xi //
1450*53ee8cc1Swenshuai.xi // [Return]:
1451*53ee8cc1Swenshuai.xi //
1452*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Get_Header(void)1453*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_Get_Header(void)
1454*53ee8cc1Swenshuai.xi {
1455*53ee8cc1Swenshuai.xi stCEC_GET_HEADER pCECArgs = {0};
1456*53ee8cc1Swenshuai.xi
1457*53ee8cc1Swenshuai.xi pCECArgs.ucValue = 0;
1458*53ee8cc1Swenshuai.xi
1459*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1460*53ee8cc1Swenshuai.xi {
1461*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1462*53ee8cc1Swenshuai.xi }
1463*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_GET_HEADER, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1464*53ee8cc1Swenshuai.xi {
1465*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1466*53ee8cc1Swenshuai.xi }
1467*53ee8cc1Swenshuai.xi
1468*53ee8cc1Swenshuai.xi return pCECArgs.ucValue;
1469*53ee8cc1Swenshuai.xi }
1470*53ee8cc1Swenshuai.xi
1471*53ee8cc1Swenshuai.xi //**************************************************************************
1472*53ee8cc1Swenshuai.xi // [Function Name]:
1473*53ee8cc1Swenshuai.xi // MApi_CEC_Get_OpCode()
1474*53ee8cc1Swenshuai.xi // [Description]
1475*53ee8cc1Swenshuai.xi //
1476*53ee8cc1Swenshuai.xi // [Arguments]:
1477*53ee8cc1Swenshuai.xi //
1478*53ee8cc1Swenshuai.xi // [Return]:
1479*53ee8cc1Swenshuai.xi //
1480*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Get_OpCode(void)1481*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_Get_OpCode(void)
1482*53ee8cc1Swenshuai.xi {
1483*53ee8cc1Swenshuai.xi stCEC_GET_OPCODE pCECArgs = {0};
1484*53ee8cc1Swenshuai.xi
1485*53ee8cc1Swenshuai.xi pCECArgs.ucValue = 0;
1486*53ee8cc1Swenshuai.xi
1487*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1488*53ee8cc1Swenshuai.xi {
1489*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1490*53ee8cc1Swenshuai.xi }
1491*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_GET_OPCODE, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1492*53ee8cc1Swenshuai.xi {
1493*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1494*53ee8cc1Swenshuai.xi }
1495*53ee8cc1Swenshuai.xi
1496*53ee8cc1Swenshuai.xi return pCECArgs.ucValue;
1497*53ee8cc1Swenshuai.xi }
1498*53ee8cc1Swenshuai.xi
1499*53ee8cc1Swenshuai.xi //**************************************************************************
1500*53ee8cc1Swenshuai.xi // [Function Name]:
1501*53ee8cc1Swenshuai.xi // MApi_CEC_Get_Para()
1502*53ee8cc1Swenshuai.xi // [Description]
1503*53ee8cc1Swenshuai.xi //
1504*53ee8cc1Swenshuai.xi // [Arguments]:
1505*53ee8cc1Swenshuai.xi //
1506*53ee8cc1Swenshuai.xi // [Return]:
1507*53ee8cc1Swenshuai.xi //
1508*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Get_Para(MS_U8 u8Idx)1509*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_Get_Para(MS_U8 u8Idx)
1510*53ee8cc1Swenshuai.xi {
1511*53ee8cc1Swenshuai.xi stCEC_GET_PARA pCECArgs = {0};
1512*53ee8cc1Swenshuai.xi
1513*53ee8cc1Swenshuai.xi pCECArgs.ucIdx = u8Idx;
1514*53ee8cc1Swenshuai.xi pCECArgs.ucValue = 0;
1515*53ee8cc1Swenshuai.xi
1516*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1517*53ee8cc1Swenshuai.xi {
1518*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1519*53ee8cc1Swenshuai.xi }
1520*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_GET_PARA, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1521*53ee8cc1Swenshuai.xi {
1522*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1523*53ee8cc1Swenshuai.xi }
1524*53ee8cc1Swenshuai.xi
1525*53ee8cc1Swenshuai.xi return pCECArgs.ucValue;
1526*53ee8cc1Swenshuai.xi }
1527*53ee8cc1Swenshuai.xi
1528*53ee8cc1Swenshuai.xi //**************************************************************************
1529*53ee8cc1Swenshuai.xi // [Function Name]:
1530*53ee8cc1Swenshuai.xi // MApi_CEC_GetCmdLen()
1531*53ee8cc1Swenshuai.xi // [Description]
1532*53ee8cc1Swenshuai.xi //
1533*53ee8cc1Swenshuai.xi // [Arguments]:
1534*53ee8cc1Swenshuai.xi //
1535*53ee8cc1Swenshuai.xi // [Return]:
1536*53ee8cc1Swenshuai.xi //
1537*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_GetCmdLen(void)1538*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_GetCmdLen(void)
1539*53ee8cc1Swenshuai.xi {
1540*53ee8cc1Swenshuai.xi stCEC_GET_CMD_LEN pCECArgs = {0};
1541*53ee8cc1Swenshuai.xi
1542*53ee8cc1Swenshuai.xi pCECArgs.ucValue = 0;
1543*53ee8cc1Swenshuai.xi
1544*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1545*53ee8cc1Swenshuai.xi {
1546*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1547*53ee8cc1Swenshuai.xi }
1548*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_GET_CMD_LEN, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1549*53ee8cc1Swenshuai.xi {
1550*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1551*53ee8cc1Swenshuai.xi }
1552*53ee8cc1Swenshuai.xi
1553*53ee8cc1Swenshuai.xi return pCECArgs.ucValue;
1554*53ee8cc1Swenshuai.xi }
1555*53ee8cc1Swenshuai.xi
1556*53ee8cc1Swenshuai.xi //**************************************************************************
1557*53ee8cc1Swenshuai.xi // [Function Name]:
1558*53ee8cc1Swenshuai.xi // MApi_CEC_SetActiveLogicalAddress()
1559*53ee8cc1Swenshuai.xi // [Description]
1560*53ee8cc1Swenshuai.xi //
1561*53ee8cc1Swenshuai.xi // [Arguments]:
1562*53ee8cc1Swenshuai.xi //
1563*53ee8cc1Swenshuai.xi // [Return]:
1564*53ee8cc1Swenshuai.xi //
1565*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_SetActiveLogicalAddress(MsCEC_DEVICELA Addr)1566*53ee8cc1Swenshuai.xi void MApi_CEC_SetActiveLogicalAddress(MsCEC_DEVICELA Addr)
1567*53ee8cc1Swenshuai.xi {
1568*53ee8cc1Swenshuai.xi stCEC_SET_ACTIVE_LOGICAL_ADDRESS pCECArgs = {0};
1569*53ee8cc1Swenshuai.xi
1570*53ee8cc1Swenshuai.xi pCECArgs.eAddr = Addr;
1571*53ee8cc1Swenshuai.xi
1572*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1573*53ee8cc1Swenshuai.xi {
1574*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1575*53ee8cc1Swenshuai.xi }
1576*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_SET_ACTIVE_LOGICAL_ADDRESS, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1577*53ee8cc1Swenshuai.xi {
1578*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1579*53ee8cc1Swenshuai.xi }
1580*53ee8cc1Swenshuai.xi }
1581*53ee8cc1Swenshuai.xi
1582*53ee8cc1Swenshuai.xi //**************************************************************************
1583*53ee8cc1Swenshuai.xi // [Function Name]:
1584*53ee8cc1Swenshuai.xi // MApi_CEC_GetActiveLogicalAddress()
1585*53ee8cc1Swenshuai.xi // [Description]
1586*53ee8cc1Swenshuai.xi //
1587*53ee8cc1Swenshuai.xi // [Arguments]:
1588*53ee8cc1Swenshuai.xi //
1589*53ee8cc1Swenshuai.xi // [Return]:
1590*53ee8cc1Swenshuai.xi //
1591*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_GetActiveLogicalAddress(void)1592*53ee8cc1Swenshuai.xi MsCEC_DEVICELA MApi_CEC_GetActiveLogicalAddress(void)
1593*53ee8cc1Swenshuai.xi {
1594*53ee8cc1Swenshuai.xi stCEC_GET_ACTIVE_LOGICAL_ADDRESS pCECArgs = {0};
1595*53ee8cc1Swenshuai.xi
1596*53ee8cc1Swenshuai.xi pCECArgs.eAddr = E_LA_UNREGISTERED;
1597*53ee8cc1Swenshuai.xi
1598*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1599*53ee8cc1Swenshuai.xi {
1600*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1601*53ee8cc1Swenshuai.xi }
1602*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_GET_ACTIVE_LOGICAL_ADDRESS, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1603*53ee8cc1Swenshuai.xi {
1604*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1605*53ee8cc1Swenshuai.xi }
1606*53ee8cc1Swenshuai.xi
1607*53ee8cc1Swenshuai.xi return pCECArgs.eAddr;
1608*53ee8cc1Swenshuai.xi }
1609*53ee8cc1Swenshuai.xi
1610*53ee8cc1Swenshuai.xi //**************************************************************************
1611*53ee8cc1Swenshuai.xi // [Function Name]:
1612*53ee8cc1Swenshuai.xi // MApi_CEC_GetPowerStatus()
1613*53ee8cc1Swenshuai.xi // [Description]
1614*53ee8cc1Swenshuai.xi //
1615*53ee8cc1Swenshuai.xi // [Arguments]:
1616*53ee8cc1Swenshuai.xi //
1617*53ee8cc1Swenshuai.xi // [Return]:
1618*53ee8cc1Swenshuai.xi //
1619*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_GetPowerStatus(void)1620*53ee8cc1Swenshuai.xi MsCEC_MSG_POWER_STATUS_PARM MApi_CEC_GetPowerStatus(void)
1621*53ee8cc1Swenshuai.xi {
1622*53ee8cc1Swenshuai.xi stCEC_GET_POWER_STATUS pCECArgs = {0};
1623*53ee8cc1Swenshuai.xi
1624*53ee8cc1Swenshuai.xi pCECArgs.ePowerStatus = E_MSG_PWRSTA_UNKNOW;
1625*53ee8cc1Swenshuai.xi
1626*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1627*53ee8cc1Swenshuai.xi {
1628*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1629*53ee8cc1Swenshuai.xi }
1630*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_GET_POWER_STATUS, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1631*53ee8cc1Swenshuai.xi {
1632*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1633*53ee8cc1Swenshuai.xi }
1634*53ee8cc1Swenshuai.xi
1635*53ee8cc1Swenshuai.xi return pCECArgs.ePowerStatus;
1636*53ee8cc1Swenshuai.xi }
1637*53ee8cc1Swenshuai.xi
1638*53ee8cc1Swenshuai.xi //**************************************************************************
1639*53ee8cc1Swenshuai.xi // [Function Name]:
1640*53ee8cc1Swenshuai.xi // MApi_CEC_GetFifoIdx()
1641*53ee8cc1Swenshuai.xi // [Description]
1642*53ee8cc1Swenshuai.xi //
1643*53ee8cc1Swenshuai.xi // [Arguments]:
1644*53ee8cc1Swenshuai.xi //
1645*53ee8cc1Swenshuai.xi // [Return]:
1646*53ee8cc1Swenshuai.xi //
1647*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_GetFifoIdx(void)1648*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_GetFifoIdx(void)
1649*53ee8cc1Swenshuai.xi {
1650*53ee8cc1Swenshuai.xi stCEC_GET_FIFO_IDX pCECArgs = {0};
1651*53ee8cc1Swenshuai.xi
1652*53ee8cc1Swenshuai.xi pCECArgs.ucFifoIdx = 0;
1653*53ee8cc1Swenshuai.xi
1654*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1655*53ee8cc1Swenshuai.xi {
1656*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1657*53ee8cc1Swenshuai.xi }
1658*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_GET_FIFO_IDX, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1659*53ee8cc1Swenshuai.xi {
1660*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1661*53ee8cc1Swenshuai.xi }
1662*53ee8cc1Swenshuai.xi
1663*53ee8cc1Swenshuai.xi return pCECArgs.ucFifoIdx;
1664*53ee8cc1Swenshuai.xi }
1665*53ee8cc1Swenshuai.xi
1666*53ee8cc1Swenshuai.xi //**************************************************************************
1667*53ee8cc1Swenshuai.xi // [Function Name]:
1668*53ee8cc1Swenshuai.xi // MApi_CEC_SetFifoIdx()
1669*53ee8cc1Swenshuai.xi // [Description]
1670*53ee8cc1Swenshuai.xi //
1671*53ee8cc1Swenshuai.xi // [Arguments]:
1672*53ee8cc1Swenshuai.xi //
1673*53ee8cc1Swenshuai.xi // [Return]:
1674*53ee8cc1Swenshuai.xi //
1675*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_SetFifoIdx(MS_U8 u8Idx)1676*53ee8cc1Swenshuai.xi void MApi_CEC_SetFifoIdx(MS_U8 u8Idx)
1677*53ee8cc1Swenshuai.xi {
1678*53ee8cc1Swenshuai.xi stCEC_SET_FIFO_IDX pCECArgs = {0};
1679*53ee8cc1Swenshuai.xi
1680*53ee8cc1Swenshuai.xi pCECArgs.ucIdx = u8Idx;
1681*53ee8cc1Swenshuai.xi
1682*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1683*53ee8cc1Swenshuai.xi {
1684*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1685*53ee8cc1Swenshuai.xi }
1686*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_SET_FIFO_IDX, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1687*53ee8cc1Swenshuai.xi {
1688*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1689*53ee8cc1Swenshuai.xi }
1690*53ee8cc1Swenshuai.xi }
1691*53ee8cc1Swenshuai.xi
1692*53ee8cc1Swenshuai.xi //**************************************************************************
1693*53ee8cc1Swenshuai.xi // [Function Name]:
1694*53ee8cc1Swenshuai.xi // MApi_CEC_SetActivePowerStatus()
1695*53ee8cc1Swenshuai.xi // [Description]
1696*53ee8cc1Swenshuai.xi //
1697*53ee8cc1Swenshuai.xi // [Arguments]:
1698*53ee8cc1Swenshuai.xi //
1699*53ee8cc1Swenshuai.xi // [Return]:
1700*53ee8cc1Swenshuai.xi //
1701*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_SetActivePowerStatus(MsCEC_MSG_POWER_STATUS_PARM Status)1702*53ee8cc1Swenshuai.xi void MApi_CEC_SetActivePowerStatus(MsCEC_MSG_POWER_STATUS_PARM Status)
1703*53ee8cc1Swenshuai.xi {
1704*53ee8cc1Swenshuai.xi stCEC_SET_ACTIVE_POWER_STATUS pCECArgs = {0};
1705*53ee8cc1Swenshuai.xi
1706*53ee8cc1Swenshuai.xi pCECArgs.eStatus = Status;
1707*53ee8cc1Swenshuai.xi
1708*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1709*53ee8cc1Swenshuai.xi {
1710*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1711*53ee8cc1Swenshuai.xi }
1712*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_SET_ACTIVE_POWER_STATUS, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1713*53ee8cc1Swenshuai.xi {
1714*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1715*53ee8cc1Swenshuai.xi }
1716*53ee8cc1Swenshuai.xi }
1717*53ee8cc1Swenshuai.xi
1718*53ee8cc1Swenshuai.xi //**************************************************************************
1719*53ee8cc1Swenshuai.xi // [Function Name]:
1720*53ee8cc1Swenshuai.xi // MApi_CEC_GetActivePowerStatus()
1721*53ee8cc1Swenshuai.xi // [Description]
1722*53ee8cc1Swenshuai.xi //
1723*53ee8cc1Swenshuai.xi // [Arguments]:
1724*53ee8cc1Swenshuai.xi //
1725*53ee8cc1Swenshuai.xi // [Return]:
1726*53ee8cc1Swenshuai.xi //
1727*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_GetActivePowerStatus(void)1728*53ee8cc1Swenshuai.xi MsCEC_MSG_POWER_STATUS_PARM MApi_CEC_GetActivePowerStatus(void)
1729*53ee8cc1Swenshuai.xi {
1730*53ee8cc1Swenshuai.xi stCEC_GET_ACTIVE_POWER_STATUS pCECArgs = {0};
1731*53ee8cc1Swenshuai.xi
1732*53ee8cc1Swenshuai.xi pCECArgs.ePowerStatus = E_MSG_PWRSTA_UNKNOW;
1733*53ee8cc1Swenshuai.xi
1734*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1735*53ee8cc1Swenshuai.xi {
1736*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1737*53ee8cc1Swenshuai.xi }
1738*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_GET_ACTIVE_POWER_STATUS, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1739*53ee8cc1Swenshuai.xi {
1740*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1741*53ee8cc1Swenshuai.xi }
1742*53ee8cc1Swenshuai.xi
1743*53ee8cc1Swenshuai.xi return pCECArgs.ePowerStatus;
1744*53ee8cc1Swenshuai.xi }
1745*53ee8cc1Swenshuai.xi
1746*53ee8cc1Swenshuai.xi //**************************************************************************
1747*53ee8cc1Swenshuai.xi // [Function Name]:
1748*53ee8cc1Swenshuai.xi // MApi_CEC_SetActivePhysicalAddress()
1749*53ee8cc1Swenshuai.xi // [Description]
1750*53ee8cc1Swenshuai.xi //
1751*53ee8cc1Swenshuai.xi // [Arguments]:
1752*53ee8cc1Swenshuai.xi //
1753*53ee8cc1Swenshuai.xi // [Return]:
1754*53ee8cc1Swenshuai.xi //
1755*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_SetActivePhysicalAddress(MS_U8 u8Para1,MS_U8 u8Para2)1756*53ee8cc1Swenshuai.xi void MApi_CEC_SetActivePhysicalAddress(MS_U8 u8Para1, MS_U8 u8Para2)
1757*53ee8cc1Swenshuai.xi {
1758*53ee8cc1Swenshuai.xi stCEC_SET_ACTIVE_PHYSICAL_ADDRESS pCECArgs = {0};
1759*53ee8cc1Swenshuai.xi
1760*53ee8cc1Swenshuai.xi pCECArgs.ucPara1 = u8Para1;
1761*53ee8cc1Swenshuai.xi pCECArgs.ucPara2 = u8Para2;
1762*53ee8cc1Swenshuai.xi
1763*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1764*53ee8cc1Swenshuai.xi {
1765*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1766*53ee8cc1Swenshuai.xi }
1767*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_SET_ACTIVE_PHYSICAL_ADDRESS, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1768*53ee8cc1Swenshuai.xi {
1769*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1770*53ee8cc1Swenshuai.xi }
1771*53ee8cc1Swenshuai.xi }
1772*53ee8cc1Swenshuai.xi
1773*53ee8cc1Swenshuai.xi //**************************************************************************
1774*53ee8cc1Swenshuai.xi // [Function Name]:
1775*53ee8cc1Swenshuai.xi // MApi_CEC_SetActiveDeviceCECVersion()
1776*53ee8cc1Swenshuai.xi // [Description]
1777*53ee8cc1Swenshuai.xi //
1778*53ee8cc1Swenshuai.xi // [Arguments]:
1779*53ee8cc1Swenshuai.xi //
1780*53ee8cc1Swenshuai.xi // [Return]:
1781*53ee8cc1Swenshuai.xi //
1782*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_SetActiveDeviceCECVersion(MS_U8 u8Ver)1783*53ee8cc1Swenshuai.xi void MApi_CEC_SetActiveDeviceCECVersion(MS_U8 u8Ver)
1784*53ee8cc1Swenshuai.xi {
1785*53ee8cc1Swenshuai.xi stCEC_SET_ACTIVE_DEVICE_CEC_VERSION pCECArgs = {0};
1786*53ee8cc1Swenshuai.xi
1787*53ee8cc1Swenshuai.xi pCECArgs.ucVer = u8Ver;
1788*53ee8cc1Swenshuai.xi
1789*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1790*53ee8cc1Swenshuai.xi {
1791*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1792*53ee8cc1Swenshuai.xi }
1793*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_SET_ACTIVE_DEVICE_CEC_VERSION, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1794*53ee8cc1Swenshuai.xi {
1795*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1796*53ee8cc1Swenshuai.xi }
1797*53ee8cc1Swenshuai.xi }
1798*53ee8cc1Swenshuai.xi
1799*53ee8cc1Swenshuai.xi //**************************************************************************
1800*53ee8cc1Swenshuai.xi // [Function Name]:
1801*53ee8cc1Swenshuai.xi // MApi_CEC_SetActiveDeviceType()
1802*53ee8cc1Swenshuai.xi // [Description]
1803*53ee8cc1Swenshuai.xi //
1804*53ee8cc1Swenshuai.xi // [Arguments]:
1805*53ee8cc1Swenshuai.xi //
1806*53ee8cc1Swenshuai.xi // [Return]:
1807*53ee8cc1Swenshuai.xi //
1808*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_SetActiveDeviceType(MsCEC_DEVICE_TYPE Type)1809*53ee8cc1Swenshuai.xi void MApi_CEC_SetActiveDeviceType(MsCEC_DEVICE_TYPE Type)
1810*53ee8cc1Swenshuai.xi {
1811*53ee8cc1Swenshuai.xi stCEC_SET_ACTIVE_DEVICE_TYPE pCECArgs = {0};
1812*53ee8cc1Swenshuai.xi
1813*53ee8cc1Swenshuai.xi pCECArgs.eType = Type;
1814*53ee8cc1Swenshuai.xi
1815*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1816*53ee8cc1Swenshuai.xi {
1817*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1818*53ee8cc1Swenshuai.xi }
1819*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_SET_ACTIVE_DEVICE_TYPE, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1820*53ee8cc1Swenshuai.xi {
1821*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1822*53ee8cc1Swenshuai.xi }
1823*53ee8cc1Swenshuai.xi }
1824*53ee8cc1Swenshuai.xi
1825*53ee8cc1Swenshuai.xi //**************************************************************************
1826*53ee8cc1Swenshuai.xi // [Function Name]:
1827*53ee8cc1Swenshuai.xi // MApi_CEC_GetMsgCnt()
1828*53ee8cc1Swenshuai.xi // [Description]
1829*53ee8cc1Swenshuai.xi //
1830*53ee8cc1Swenshuai.xi // [Arguments]:
1831*53ee8cc1Swenshuai.xi //
1832*53ee8cc1Swenshuai.xi // [Return]:
1833*53ee8cc1Swenshuai.xi //
1834*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_GetMsgCnt(void)1835*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_GetMsgCnt(void)
1836*53ee8cc1Swenshuai.xi {
1837*53ee8cc1Swenshuai.xi stCEC_GET_MSG_CNT pCECArgs = {0};
1838*53ee8cc1Swenshuai.xi
1839*53ee8cc1Swenshuai.xi pCECArgs.ucMsgCnt = 0;
1840*53ee8cc1Swenshuai.xi
1841*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1842*53ee8cc1Swenshuai.xi {
1843*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1844*53ee8cc1Swenshuai.xi }
1845*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_GET_MSG_CNT, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1846*53ee8cc1Swenshuai.xi {
1847*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1848*53ee8cc1Swenshuai.xi }
1849*53ee8cc1Swenshuai.xi
1850*53ee8cc1Swenshuai.xi return pCECArgs.ucMsgCnt;
1851*53ee8cc1Swenshuai.xi }
1852*53ee8cc1Swenshuai.xi
1853*53ee8cc1Swenshuai.xi //**************************************************************************
1854*53ee8cc1Swenshuai.xi // [Function Name]:
1855*53ee8cc1Swenshuai.xi // MApi_CEC_SetMsgCnt()
1856*53ee8cc1Swenshuai.xi // [Description]
1857*53ee8cc1Swenshuai.xi //
1858*53ee8cc1Swenshuai.xi // [Arguments]:
1859*53ee8cc1Swenshuai.xi //
1860*53ee8cc1Swenshuai.xi // [Return]:
1861*53ee8cc1Swenshuai.xi //
1862*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_SetMsgCnt(MS_U8 u8Cnt)1863*53ee8cc1Swenshuai.xi void MApi_CEC_SetMsgCnt(MS_U8 u8Cnt)
1864*53ee8cc1Swenshuai.xi {
1865*53ee8cc1Swenshuai.xi stCEC_SET_MSG_CNT pCECArgs = {0};
1866*53ee8cc1Swenshuai.xi
1867*53ee8cc1Swenshuai.xi pCECArgs.ucCnt = u8Cnt;
1868*53ee8cc1Swenshuai.xi
1869*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1870*53ee8cc1Swenshuai.xi {
1871*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1872*53ee8cc1Swenshuai.xi }
1873*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_SET_MSG_CNT, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1874*53ee8cc1Swenshuai.xi {
1875*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1876*53ee8cc1Swenshuai.xi }
1877*53ee8cc1Swenshuai.xi }
1878*53ee8cc1Swenshuai.xi
1879*53ee8cc1Swenshuai.xi //**************************************************************************
1880*53ee8cc1Swenshuai.xi // [Function Name]:
1881*53ee8cc1Swenshuai.xi // MApi_CEC_GetRxData()
1882*53ee8cc1Swenshuai.xi // [Description]
1883*53ee8cc1Swenshuai.xi //
1884*53ee8cc1Swenshuai.xi // [Arguments]:
1885*53ee8cc1Swenshuai.xi //
1886*53ee8cc1Swenshuai.xi // [Return]:
1887*53ee8cc1Swenshuai.xi //
1888*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_GetRxData(MS_U8 u8Fifoidx,MS_U8 u8Idx)1889*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_GetRxData(MS_U8 u8Fifoidx, MS_U8 u8Idx)
1890*53ee8cc1Swenshuai.xi {
1891*53ee8cc1Swenshuai.xi stCEC_GET_RX_DATA pCECArgs = {0};
1892*53ee8cc1Swenshuai.xi
1893*53ee8cc1Swenshuai.xi pCECArgs.ucFifoIdx = u8Fifoidx;
1894*53ee8cc1Swenshuai.xi pCECArgs.ucIdx = u8Idx;
1895*53ee8cc1Swenshuai.xi pCECArgs.ucRxData = 0;
1896*53ee8cc1Swenshuai.xi
1897*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1898*53ee8cc1Swenshuai.xi {
1899*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1900*53ee8cc1Swenshuai.xi }
1901*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_GET_RX_DATA, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1902*53ee8cc1Swenshuai.xi {
1903*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1904*53ee8cc1Swenshuai.xi }
1905*53ee8cc1Swenshuai.xi
1906*53ee8cc1Swenshuai.xi return pCECArgs.ucRxData;
1907*53ee8cc1Swenshuai.xi }
1908*53ee8cc1Swenshuai.xi
1909*53ee8cc1Swenshuai.xi //**************************************************************************
1910*53ee8cc1Swenshuai.xi // [Function Name]:
1911*53ee8cc1Swenshuai.xi // MApi_CEC_CheckFrame()
1912*53ee8cc1Swenshuai.xi // [Description]
1913*53ee8cc1Swenshuai.xi //
1914*53ee8cc1Swenshuai.xi // [Arguments]:
1915*53ee8cc1Swenshuai.xi //
1916*53ee8cc1Swenshuai.xi // [Return]:
1917*53ee8cc1Swenshuai.xi //
1918*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_CheckFrame(MsCEC_MSG_TRANS_TYPE msg_type,MS_U8 ucLen)1919*53ee8cc1Swenshuai.xi MS_BOOL MApi_CEC_CheckFrame(MsCEC_MSG_TRANS_TYPE msg_type, MS_U8 ucLen)
1920*53ee8cc1Swenshuai.xi {
1921*53ee8cc1Swenshuai.xi stCEC_CHECK_FRAME pCECArgs = {0};
1922*53ee8cc1Swenshuai.xi
1923*53ee8cc1Swenshuai.xi pCECArgs.eMsgType = msg_type;
1924*53ee8cc1Swenshuai.xi pCECArgs.ucLen = ucLen;
1925*53ee8cc1Swenshuai.xi pCECArgs.bValid = FALSE;
1926*53ee8cc1Swenshuai.xi
1927*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1928*53ee8cc1Swenshuai.xi {
1929*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1930*53ee8cc1Swenshuai.xi }
1931*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_CHECK_FRAME, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
1932*53ee8cc1Swenshuai.xi {
1933*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1934*53ee8cc1Swenshuai.xi }
1935*53ee8cc1Swenshuai.xi
1936*53ee8cc1Swenshuai.xi return pCECArgs.bValid;
1937*53ee8cc1Swenshuai.xi }
1938*53ee8cc1Swenshuai.xi
1939*53ee8cc1Swenshuai.xi //**************************************************************************
1940*53ee8cc1Swenshuai.xi // [Function Name]:
1941*53ee8cc1Swenshuai.xi // MApi_CEC_CheckExistDevices()
1942*53ee8cc1Swenshuai.xi // [Description]
1943*53ee8cc1Swenshuai.xi //
1944*53ee8cc1Swenshuai.xi // [Arguments]:
1945*53ee8cc1Swenshuai.xi //
1946*53ee8cc1Swenshuai.xi // [Return]:
1947*53ee8cc1Swenshuai.xi //
1948*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_CheckExistDevices(void)1949*53ee8cc1Swenshuai.xi void MApi_CEC_CheckExistDevices(void)
1950*53ee8cc1Swenshuai.xi {
1951*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1952*53ee8cc1Swenshuai.xi {
1953*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1954*53ee8cc1Swenshuai.xi }
1955*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_CHECK_EXIST_DEVICES, NULL) != UTOPIA_STATUS_SUCCESS)
1956*53ee8cc1Swenshuai.xi {
1957*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1958*53ee8cc1Swenshuai.xi }
1959*53ee8cc1Swenshuai.xi }
1960*53ee8cc1Swenshuai.xi
1961*53ee8cc1Swenshuai.xi //**************************************************************************
1962*53ee8cc1Swenshuai.xi // [Function Name]:
1963*53ee8cc1Swenshuai.xi // MApi_CEC_ConfigWakeUp()
1964*53ee8cc1Swenshuai.xi // [Description]
1965*53ee8cc1Swenshuai.xi //
1966*53ee8cc1Swenshuai.xi // [Arguments]:
1967*53ee8cc1Swenshuai.xi //
1968*53ee8cc1Swenshuai.xi // [Return]:
1969*53ee8cc1Swenshuai.xi //
1970*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_ConfigWakeUp(void)1971*53ee8cc1Swenshuai.xi void MApi_CEC_ConfigWakeUp(void)
1972*53ee8cc1Swenshuai.xi {
1973*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
1974*53ee8cc1Swenshuai.xi {
1975*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
1976*53ee8cc1Swenshuai.xi }
1977*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_CONFIG_WAKEUP, NULL) != UTOPIA_STATUS_SUCCESS)
1978*53ee8cc1Swenshuai.xi {
1979*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
1980*53ee8cc1Swenshuai.xi }
1981*53ee8cc1Swenshuai.xi }
1982*53ee8cc1Swenshuai.xi
1983*53ee8cc1Swenshuai.xi //**************************************************************************
1984*53ee8cc1Swenshuai.xi // [Function Name]:
1985*53ee8cc1Swenshuai.xi // MApi_CEC_Enabled()
1986*53ee8cc1Swenshuai.xi // [Description]
1987*53ee8cc1Swenshuai.xi //
1988*53ee8cc1Swenshuai.xi // [Arguments]:
1989*53ee8cc1Swenshuai.xi //
1990*53ee8cc1Swenshuai.xi // [Return]:
1991*53ee8cc1Swenshuai.xi //
1992*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Enabled(MS_BOOL bEnableFlag)1993*53ee8cc1Swenshuai.xi void MApi_CEC_Enabled(MS_BOOL bEnableFlag)
1994*53ee8cc1Swenshuai.xi {
1995*53ee8cc1Swenshuai.xi stCEC_ENABLED pCECArgs = {0};
1996*53ee8cc1Swenshuai.xi
1997*53ee8cc1Swenshuai.xi pCECArgs.bEnableFlag = bEnableFlag;
1998*53ee8cc1Swenshuai.xi
1999*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
2000*53ee8cc1Swenshuai.xi {
2001*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
2002*53ee8cc1Swenshuai.xi }
2003*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_ENABLED, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
2004*53ee8cc1Swenshuai.xi {
2005*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
2006*53ee8cc1Swenshuai.xi }
2007*53ee8cc1Swenshuai.xi }
2008*53ee8cc1Swenshuai.xi
2009*53ee8cc1Swenshuai.xi //**************************************************************************
2010*53ee8cc1Swenshuai.xi // [Function Name]:
2011*53ee8cc1Swenshuai.xi // MApi_CEC_SetMyPhysicalAddress()
2012*53ee8cc1Swenshuai.xi // [Description]
2013*53ee8cc1Swenshuai.xi //
2014*53ee8cc1Swenshuai.xi // [Arguments]:
2015*53ee8cc1Swenshuai.xi //
2016*53ee8cc1Swenshuai.xi // [Return]:
2017*53ee8cc1Swenshuai.xi //
2018*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_SetMyPhysicalAddress(MS_U8 * pdata)2019*53ee8cc1Swenshuai.xi void MApi_CEC_SetMyPhysicalAddress(MS_U8 *pdata)
2020*53ee8cc1Swenshuai.xi {
2021*53ee8cc1Swenshuai.xi stCEC_SET_MY_PHYSICAL_ADDRESS pCECArgs = {0};
2022*53ee8cc1Swenshuai.xi
2023*53ee8cc1Swenshuai.xi pCECArgs.ucData = pdata;
2024*53ee8cc1Swenshuai.xi
2025*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
2026*53ee8cc1Swenshuai.xi {
2027*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
2028*53ee8cc1Swenshuai.xi }
2029*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_SET_MY_PHYSICAL_ADDRESS, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
2030*53ee8cc1Swenshuai.xi {
2031*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
2032*53ee8cc1Swenshuai.xi }
2033*53ee8cc1Swenshuai.xi }
2034*53ee8cc1Swenshuai.xi
2035*53ee8cc1Swenshuai.xi #if ENABLE_CEC_MULTIPLE
2036*53ee8cc1Swenshuai.xi //**************************************************************************
2037*53ee8cc1Swenshuai.xi // [Function Name]:
2038*53ee8cc1Swenshuai.xi // MApi_CEC_SetMyLogicalAddress2()
2039*53ee8cc1Swenshuai.xi // [Description]
2040*53ee8cc1Swenshuai.xi //
2041*53ee8cc1Swenshuai.xi // [Arguments]:
2042*53ee8cc1Swenshuai.xi //
2043*53ee8cc1Swenshuai.xi // [Return]:
2044*53ee8cc1Swenshuai.xi //
2045*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_SetMyLogicalAddress2(MsCEC_DEVICELA myLA)2046*53ee8cc1Swenshuai.xi void MApi_CEC_SetMyLogicalAddress2(MsCEC_DEVICELA myLA)
2047*53ee8cc1Swenshuai.xi {
2048*53ee8cc1Swenshuai.xi stCEC_SET_MY_LOGICAL_ADDRESS2 pCECArgs = {0};
2049*53ee8cc1Swenshuai.xi
2050*53ee8cc1Swenshuai.xi pCECArgs.myLA = myLA;
2051*53ee8cc1Swenshuai.xi
2052*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
2053*53ee8cc1Swenshuai.xi {
2054*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
2055*53ee8cc1Swenshuai.xi }
2056*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_SET_MY_LOGICAL_ADDRESS2, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
2057*53ee8cc1Swenshuai.xi {
2058*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
2059*53ee8cc1Swenshuai.xi }
2060*53ee8cc1Swenshuai.xi }
2061*53ee8cc1Swenshuai.xi
2062*53ee8cc1Swenshuai.xi //**************************************************************************
2063*53ee8cc1Swenshuai.xi // [Function Name]:
2064*53ee8cc1Swenshuai.xi // MApi_CEC_Msg_ReportPhycalAddress2()
2065*53ee8cc1Swenshuai.xi // [Description]
2066*53ee8cc1Swenshuai.xi //
2067*53ee8cc1Swenshuai.xi // [Arguments]:
2068*53ee8cc1Swenshuai.xi //
2069*53ee8cc1Swenshuai.xi // [Return]:
2070*53ee8cc1Swenshuai.xi //
2071*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Msg_ReportPhycalAddress2(void)2072*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReportPhycalAddress2(void)
2073*53ee8cc1Swenshuai.xi {
2074*53ee8cc1Swenshuai.xi stCEC_MSG_REPORT_PHYCAL_ADDRESS2 pCECArgs = {0};
2075*53ee8cc1Swenshuai.xi
2076*53ee8cc1Swenshuai.xi pCECArgs.eErrorCode = E_CEC_FEATURE_ABORT;
2077*53ee8cc1Swenshuai.xi
2078*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
2079*53ee8cc1Swenshuai.xi {
2080*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
2081*53ee8cc1Swenshuai.xi }
2082*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_MSG_REPORT_PHYCAL_ADDRESS2, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
2083*53ee8cc1Swenshuai.xi {
2084*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
2085*53ee8cc1Swenshuai.xi }
2086*53ee8cc1Swenshuai.xi
2087*53ee8cc1Swenshuai.xi return pCECArgs.eErrorCode;
2088*53ee8cc1Swenshuai.xi }
2089*53ee8cc1Swenshuai.xi
2090*53ee8cc1Swenshuai.xi //**************************************************************************
2091*53ee8cc1Swenshuai.xi // [Function Name]:
2092*53ee8cc1Swenshuai.xi // MApi_CEC_SetMyPhysicalAddress2()
2093*53ee8cc1Swenshuai.xi // [Description]
2094*53ee8cc1Swenshuai.xi //
2095*53ee8cc1Swenshuai.xi // [Arguments]:
2096*53ee8cc1Swenshuai.xi //
2097*53ee8cc1Swenshuai.xi // [Return]:
2098*53ee8cc1Swenshuai.xi //
2099*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_SetMyPhysicalAddress2(MS_U8 * pdata)2100*53ee8cc1Swenshuai.xi void MApi_CEC_SetMyPhysicalAddress2(MS_U8 *pdata)
2101*53ee8cc1Swenshuai.xi {
2102*53ee8cc1Swenshuai.xi stCEC_SET_MY_PHYSICAL_ADDRESS2 pCECArgs = {0};
2103*53ee8cc1Swenshuai.xi
2104*53ee8cc1Swenshuai.xi pCECArgs.ucData = pdata;
2105*53ee8cc1Swenshuai.xi
2106*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
2107*53ee8cc1Swenshuai.xi {
2108*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
2109*53ee8cc1Swenshuai.xi }
2110*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_SET_MY_PHYSICAL_ADDRESS2, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
2111*53ee8cc1Swenshuai.xi {
2112*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
2113*53ee8cc1Swenshuai.xi }
2114*53ee8cc1Swenshuai.xi }
2115*53ee8cc1Swenshuai.xi
2116*53ee8cc1Swenshuai.xi //**************************************************************************
2117*53ee8cc1Swenshuai.xi // [Function Name]:
2118*53ee8cc1Swenshuai.xi // MApi_CEC_SetInitiator()
2119*53ee8cc1Swenshuai.xi // [Description]
2120*53ee8cc1Swenshuai.xi //
2121*53ee8cc1Swenshuai.xi // [Arguments]:
2122*53ee8cc1Swenshuai.xi //
2123*53ee8cc1Swenshuai.xi // [Return]:
2124*53ee8cc1Swenshuai.xi //
2125*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_SetInitiator(MsCEC_DEVICELA IniLA)2126*53ee8cc1Swenshuai.xi void MApi_CEC_SetInitiator(MsCEC_DEVICELA IniLA)
2127*53ee8cc1Swenshuai.xi {
2128*53ee8cc1Swenshuai.xi stCEC_SET_INITIATOR pCECArgs = {0};
2129*53ee8cc1Swenshuai.xi
2130*53ee8cc1Swenshuai.xi pCECArgs.eIniLa = IniLA;
2131*53ee8cc1Swenshuai.xi
2132*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
2133*53ee8cc1Swenshuai.xi {
2134*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
2135*53ee8cc1Swenshuai.xi }
2136*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_SET_INITIATOR, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
2137*53ee8cc1Swenshuai.xi {
2138*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
2139*53ee8cc1Swenshuai.xi }
2140*53ee8cc1Swenshuai.xi }
2141*53ee8cc1Swenshuai.xi
2142*53ee8cc1Swenshuai.xi #endif
2143*53ee8cc1Swenshuai.xi
2144*53ee8cc1Swenshuai.xi //**************************************************************************
2145*53ee8cc1Swenshuai.xi // [Function Name]:
2146*53ee8cc1Swenshuai.xi // MApi_CEC_GetTxStatus()
2147*53ee8cc1Swenshuai.xi // [Description]
2148*53ee8cc1Swenshuai.xi //
2149*53ee8cc1Swenshuai.xi // [Arguments]:
2150*53ee8cc1Swenshuai.xi //
2151*53ee8cc1Swenshuai.xi // [Return]:
2152*53ee8cc1Swenshuai.xi //
2153*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_GetTxStatus(void)2154*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_GetTxStatus(void)
2155*53ee8cc1Swenshuai.xi {
2156*53ee8cc1Swenshuai.xi stCEC_GET_TX_STATUS pCECArgs = {0};
2157*53ee8cc1Swenshuai.xi
2158*53ee8cc1Swenshuai.xi pCECArgs.ucTxStatus = 0;
2159*53ee8cc1Swenshuai.xi
2160*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
2161*53ee8cc1Swenshuai.xi {
2162*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
2163*53ee8cc1Swenshuai.xi }
2164*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_GET_TX_STATUS, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
2165*53ee8cc1Swenshuai.xi {
2166*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
2167*53ee8cc1Swenshuai.xi }
2168*53ee8cc1Swenshuai.xi
2169*53ee8cc1Swenshuai.xi return pCECArgs.ucTxStatus;
2170*53ee8cc1Swenshuai.xi }
2171*53ee8cc1Swenshuai.xi
2172*53ee8cc1Swenshuai.xi //**************************************************************************
2173*53ee8cc1Swenshuai.xi // [Function Name]:
2174*53ee8cc1Swenshuai.xi // MApi_CEC_SetPowerState()
2175*53ee8cc1Swenshuai.xi // [Description]
2176*53ee8cc1Swenshuai.xi //
2177*53ee8cc1Swenshuai.xi // [Arguments]:
2178*53ee8cc1Swenshuai.xi //
2179*53ee8cc1Swenshuai.xi // [Return]:
2180*53ee8cc1Swenshuai.xi //
2181*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_SetPowerState(EN_POWER_MODE u16PowerState)2182*53ee8cc1Swenshuai.xi MS_U32 MApi_CEC_SetPowerState(EN_POWER_MODE u16PowerState)
2183*53ee8cc1Swenshuai.xi {
2184*53ee8cc1Swenshuai.xi stCEC_SET_POWER_STATE pCECArgs = {0};
2185*53ee8cc1Swenshuai.xi
2186*53ee8cc1Swenshuai.xi pCECArgs.ePowerState = u16PowerState;
2187*53ee8cc1Swenshuai.xi pCECArgs.u32Status = 0;
2188*53ee8cc1Swenshuai.xi
2189*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
2190*53ee8cc1Swenshuai.xi {
2191*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
2192*53ee8cc1Swenshuai.xi }
2193*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_SET_POWER_STATE, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
2194*53ee8cc1Swenshuai.xi {
2195*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
2196*53ee8cc1Swenshuai.xi }
2197*53ee8cc1Swenshuai.xi
2198*53ee8cc1Swenshuai.xi return pCECArgs.u32Status;
2199*53ee8cc1Swenshuai.xi }
2200*53ee8cc1Swenshuai.xi
2201*53ee8cc1Swenshuai.xi //**************************************************************************
2202*53ee8cc1Swenshuai.xi // [Function Name]:
2203*53ee8cc1Swenshuai.xi // MApi_CEC_SetRetryCount()
2204*53ee8cc1Swenshuai.xi // [Description]
2205*53ee8cc1Swenshuai.xi //
2206*53ee8cc1Swenshuai.xi // [Arguments]:
2207*53ee8cc1Swenshuai.xi //
2208*53ee8cc1Swenshuai.xi // [Return]:
2209*53ee8cc1Swenshuai.xi //
2210*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_SetRetryCount(MS_U8 u8RetryCount)2211*53ee8cc1Swenshuai.xi void MApi_CEC_SetRetryCount(MS_U8 u8RetryCount)
2212*53ee8cc1Swenshuai.xi {
2213*53ee8cc1Swenshuai.xi stCEC_SET_RETRY_COUNT pCECArgs = {0};
2214*53ee8cc1Swenshuai.xi
2215*53ee8cc1Swenshuai.xi pCECArgs.ucRetryCount = u8RetryCount;
2216*53ee8cc1Swenshuai.xi
2217*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
2218*53ee8cc1Swenshuai.xi {
2219*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
2220*53ee8cc1Swenshuai.xi }
2221*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_SET_RETRY_COUNT, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
2222*53ee8cc1Swenshuai.xi {
2223*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
2224*53ee8cc1Swenshuai.xi }
2225*53ee8cc1Swenshuai.xi }
2226*53ee8cc1Swenshuai.xi
2227*53ee8cc1Swenshuai.xi //**************************************************************************
2228*53ee8cc1Swenshuai.xi // [Function Name]:
2229*53ee8cc1Swenshuai.xi // MApi_CEC_ConfigWakeupInfoVendorID()
2230*53ee8cc1Swenshuai.xi // [Description]
2231*53ee8cc1Swenshuai.xi //
2232*53ee8cc1Swenshuai.xi // [Arguments]:
2233*53ee8cc1Swenshuai.xi //
2234*53ee8cc1Swenshuai.xi // [Return]:
2235*53ee8cc1Swenshuai.xi //
2236*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_ConfigWakeupInfoVendorID(MS_U8 * u8CecVendorID)2237*53ee8cc1Swenshuai.xi void MApi_CEC_ConfigWakeupInfoVendorID(MS_U8 *u8CecVendorID)
2238*53ee8cc1Swenshuai.xi {
2239*53ee8cc1Swenshuai.xi stCEC_CONFIG_WAKEUP_INFO_VENDOR_ID pCECArgs = {0};
2240*53ee8cc1Swenshuai.xi
2241*53ee8cc1Swenshuai.xi pCECArgs.ucVendorID = u8CecVendorID;
2242*53ee8cc1Swenshuai.xi
2243*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
2244*53ee8cc1Swenshuai.xi {
2245*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
2246*53ee8cc1Swenshuai.xi }
2247*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_CONFIG_WAKEUP_INFO_VENDOR_ID, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
2248*53ee8cc1Swenshuai.xi {
2249*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
2250*53ee8cc1Swenshuai.xi }
2251*53ee8cc1Swenshuai.xi }
2252*53ee8cc1Swenshuai.xi
2253*53ee8cc1Swenshuai.xi //**************************************************************************
2254*53ee8cc1Swenshuai.xi // [Function Name]:
2255*53ee8cc1Swenshuai.xi // MApi_CEC_NextDevice()
2256*53ee8cc1Swenshuai.xi // [Description]
2257*53ee8cc1Swenshuai.xi // Set logical address to next active device
2258*53ee8cc1Swenshuai.xi // [Arguments]:
2259*53ee8cc1Swenshuai.xi //
2260*53ee8cc1Swenshuai.xi // [Return]:
2261*53ee8cc1Swenshuai.xi // Next CEC active device's logical address
2262*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_NextDevice(void)2263*53ee8cc1Swenshuai.xi MsCEC_DEVICELA MApi_CEC_NextDevice(void)
2264*53ee8cc1Swenshuai.xi {
2265*53ee8cc1Swenshuai.xi stCEC_NEXT_DEVICE pCECArgs = {0};
2266*53ee8cc1Swenshuai.xi
2267*53ee8cc1Swenshuai.xi pCECArgs.eNextDeviceLA = E_LA_UNREGISTERED;
2268*53ee8cc1Swenshuai.xi
2269*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
2270*53ee8cc1Swenshuai.xi {
2271*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
2272*53ee8cc1Swenshuai.xi }
2273*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_NEXT_DEVICE, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
2274*53ee8cc1Swenshuai.xi {
2275*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
2276*53ee8cc1Swenshuai.xi }
2277*53ee8cc1Swenshuai.xi
2278*53ee8cc1Swenshuai.xi return pCECArgs.eNextDeviceLA;
2279*53ee8cc1Swenshuai.xi }
2280*53ee8cc1Swenshuai.xi
2281*53ee8cc1Swenshuai.xi //**************************************************************************
2282*53ee8cc1Swenshuai.xi // [Function Name]:
2283*53ee8cc1Swenshuai.xi // MApi_CEC_IsRxBufEmpty()
2284*53ee8cc1Swenshuai.xi // [Description]
2285*53ee8cc1Swenshuai.xi //
2286*53ee8cc1Swenshuai.xi // [Arguments]:
2287*53ee8cc1Swenshuai.xi //
2288*53ee8cc1Swenshuai.xi // [Return]:
2289*53ee8cc1Swenshuai.xi //
2290*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_IsRxBufEmpty(void)2291*53ee8cc1Swenshuai.xi MS_BOOL MApi_CEC_IsRxBufEmpty(void)
2292*53ee8cc1Swenshuai.xi {
2293*53ee8cc1Swenshuai.xi stCEC_IS_RX_BUF_EMPTY pCECArgs = {0};
2294*53ee8cc1Swenshuai.xi
2295*53ee8cc1Swenshuai.xi pCECArgs.bEmpty = FALSE;
2296*53ee8cc1Swenshuai.xi
2297*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
2298*53ee8cc1Swenshuai.xi {
2299*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
2300*53ee8cc1Swenshuai.xi }
2301*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_IS_RX_BUF_EMPTY, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
2302*53ee8cc1Swenshuai.xi {
2303*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
2304*53ee8cc1Swenshuai.xi }
2305*53ee8cc1Swenshuai.xi
2306*53ee8cc1Swenshuai.xi return pCECArgs.bEmpty;
2307*53ee8cc1Swenshuai.xi }
2308*53ee8cc1Swenshuai.xi
2309*53ee8cc1Swenshuai.xi //**************************************************************************
2310*53ee8cc1Swenshuai.xi // [Function Name]:
2311*53ee8cc1Swenshuai.xi // MApi_CEC_CheckDeviceIsTx()
2312*53ee8cc1Swenshuai.xi // [Description]
2313*53ee8cc1Swenshuai.xi //
2314*53ee8cc1Swenshuai.xi // [Arguments]:
2315*53ee8cc1Swenshuai.xi //
2316*53ee8cc1Swenshuai.xi // [Return]:
2317*53ee8cc1Swenshuai.xi //
2318*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_CheckDeviceIsTx(void)2319*53ee8cc1Swenshuai.xi MS_BOOL MApi_CEC_CheckDeviceIsTx(void)
2320*53ee8cc1Swenshuai.xi {
2321*53ee8cc1Swenshuai.xi stCEC_DEVICE_IS_TX pCECArgs = {0};
2322*53ee8cc1Swenshuai.xi
2323*53ee8cc1Swenshuai.xi pCECArgs.bIsTx = FALSE;
2324*53ee8cc1Swenshuai.xi
2325*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
2326*53ee8cc1Swenshuai.xi {
2327*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_WARNING("[%s,%5d]No instance existed, please get an instance by calling mapi_cec_initchip() first\n",__FUNCTION__,__LINE__);
2328*53ee8cc1Swenshuai.xi }
2329*53ee8cc1Swenshuai.xi else if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_CHECK_DEVICE_IS_TX, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
2330*53ee8cc1Swenshuai.xi {
2331*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
2332*53ee8cc1Swenshuai.xi }
2333*53ee8cc1Swenshuai.xi
2334*53ee8cc1Swenshuai.xi return pCECArgs.bIsTx;
2335*53ee8cc1Swenshuai.xi }
2336*53ee8cc1Swenshuai.xi
2337*53ee8cc1Swenshuai.xi //**************************************************************************
2338*53ee8cc1Swenshuai.xi // [Function Name]:
2339*53ee8cc1Swenshuai.xi // MApi_CEC_AttachDriverISR()
2340*53ee8cc1Swenshuai.xi // [Description]
2341*53ee8cc1Swenshuai.xi //
2342*53ee8cc1Swenshuai.xi // [Arguments]:
2343*53ee8cc1Swenshuai.xi //
2344*53ee8cc1Swenshuai.xi // [Return]:
2345*53ee8cc1Swenshuai.xi //
2346*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_AttachDriverISR(MS_BOOL bAttachDrvFlag)2347*53ee8cc1Swenshuai.xi void MApi_CEC_AttachDriverISR(MS_BOOL bAttachDrvFlag)
2348*53ee8cc1Swenshuai.xi {
2349*53ee8cc1Swenshuai.xi MS_BOOL bInitialFlag = FALSE;
2350*53ee8cc1Swenshuai.xi stCEC_ATTACH_DRIVER_ISR pCECArgs = {0};
2351*53ee8cc1Swenshuai.xi
2352*53ee8cc1Swenshuai.xi pCECArgs.bAttachDrvFlag = bAttachDrvFlag;
2353*53ee8cc1Swenshuai.xi
2354*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
2355*53ee8cc1Swenshuai.xi {
2356*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_CEC, &pulCECInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2357*53ee8cc1Swenshuai.xi {
2358*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("UtopiaOpen pulCECInst failed\n");
2359*53ee8cc1Swenshuai.xi
2360*53ee8cc1Swenshuai.xi bInitialFlag = TRUE;
2361*53ee8cc1Swenshuai.xi }
2362*53ee8cc1Swenshuai.xi }
2363*53ee8cc1Swenshuai.xi
2364*53ee8cc1Swenshuai.xi if(!bInitialFlag)
2365*53ee8cc1Swenshuai.xi {
2366*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_ATTACH_DRIVER_ISR, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
2367*53ee8cc1Swenshuai.xi {
2368*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
2369*53ee8cc1Swenshuai.xi }
2370*53ee8cc1Swenshuai.xi }
2371*53ee8cc1Swenshuai.xi }
2372*53ee8cc1Swenshuai.xi
2373*53ee8cc1Swenshuai.xi //**************************************************************************
2374*53ee8cc1Swenshuai.xi // [Function Name]:
2375*53ee8cc1Swenshuai.xi // MApi_CEC_Ctrl()
2376*53ee8cc1Swenshuai.xi // [Description]
2377*53ee8cc1Swenshuai.xi //
2378*53ee8cc1Swenshuai.xi // [Arguments]:
2379*53ee8cc1Swenshuai.xi //
2380*53ee8cc1Swenshuai.xi // [Return]:
2381*53ee8cc1Swenshuai.xi //
2382*53ee8cc1Swenshuai.xi //**************************************************************************
MApi_CEC_Ctrl(MS_U32 u32Cmd,void * pBuf,MS_U32 u32BufSize)2383*53ee8cc1Swenshuai.xi MS_BOOL MApi_CEC_Ctrl(MS_U32 u32Cmd, void *pBuf, MS_U32 u32BufSize)
2384*53ee8cc1Swenshuai.xi {
2385*53ee8cc1Swenshuai.xi MS_BOOL bret = FALSE;
2386*53ee8cc1Swenshuai.xi
2387*53ee8cc1Swenshuai.xi switch(u32Cmd)
2388*53ee8cc1Swenshuai.xi {
2389*53ee8cc1Swenshuai.xi case E_CEC_CMD_ATTACH_DRIVER_ISR:
2390*53ee8cc1Swenshuai.xi {
2391*53ee8cc1Swenshuai.xi if(u32BufSize == sizeof(stCMD_CEC_ATTACH_DRIVER_ISR))
2392*53ee8cc1Swenshuai.xi {
2393*53ee8cc1Swenshuai.xi MApi_CEC_AttachDriverISR(((stCMD_CEC_ATTACH_DRIVER_ISR *)pBuf)->bAttachDrvFlag);
2394*53ee8cc1Swenshuai.xi
2395*53ee8cc1Swenshuai.xi bret = TRUE;
2396*53ee8cc1Swenshuai.xi }
2397*53ee8cc1Swenshuai.xi }
2398*53ee8cc1Swenshuai.xi break;
2399*53ee8cc1Swenshuai.xi
2400*53ee8cc1Swenshuai.xi default:
2401*53ee8cc1Swenshuai.xi pBuf = pBuf;
2402*53ee8cc1Swenshuai.xi u32BufSize = u32BufSize;
2403*53ee8cc1Swenshuai.xi bret = FALSE;
2404*53ee8cc1Swenshuai.xi break;
2405*53ee8cc1Swenshuai.xi }
2406*53ee8cc1Swenshuai.xi
2407*53ee8cc1Swenshuai.xi return bret;
2408*53ee8cc1Swenshuai.xi }
2409*53ee8cc1Swenshuai.xi
2410*53ee8cc1Swenshuai.xi //**************************************************************************
2411*53ee8cc1Swenshuai.xi // [Function Name]:
2412*53ee8cc1Swenshuai.xi // mapi_CEC_GetConfig()
2413*53ee8cc1Swenshuai.xi // [Description]
2414*53ee8cc1Swenshuai.xi // CEC get init config
2415*53ee8cc1Swenshuai.xi // [Arguments]:
2416*53ee8cc1Swenshuai.xi //
2417*53ee8cc1Swenshuai.xi // [Return]:
2418*53ee8cc1Swenshuai.xi //
2419*53ee8cc1Swenshuai.xi //**************************************************************************
mapi_CEC_GetConfig(stCEC_INITIAL_CONFIG * stInitialConfig)2420*53ee8cc1Swenshuai.xi MS_U32 mapi_CEC_GetConfig(stCEC_INITIAL_CONFIG *stInitialConfig)
2421*53ee8cc1Swenshuai.xi {
2422*53ee8cc1Swenshuai.xi MS_BOOL bInitialFlag = FALSE;
2423*53ee8cc1Swenshuai.xi MS_U32 ulReturnValue = UTOPIA_STATUS_ERR_NOT_AVAIL;
2424*53ee8cc1Swenshuai.xi stCEC_GET_CONFIGURATION pCECArgs;
2425*53ee8cc1Swenshuai.xi
2426*53ee8cc1Swenshuai.xi pCECArgs.stInitialConfigInfo.ulReturnValue = UTOPIA_STATUS_ERR_NOT_AVAIL;
2427*53ee8cc1Swenshuai.xi
2428*53ee8cc1Swenshuai.xi if(pulCECInst == NULL)
2429*53ee8cc1Swenshuai.xi {
2430*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_CEC, &pulCECInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2431*53ee8cc1Swenshuai.xi {
2432*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("UtopiaOpen pulCECInst failed\n");
2433*53ee8cc1Swenshuai.xi
2434*53ee8cc1Swenshuai.xi bInitialFlag = TRUE;
2435*53ee8cc1Swenshuai.xi }
2436*53ee8cc1Swenshuai.xi }
2437*53ee8cc1Swenshuai.xi
2438*53ee8cc1Swenshuai.xi if(!bInitialFlag)
2439*53ee8cc1Swenshuai.xi {
2440*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pulCECInst, MAPI_CMD_CEC_GET_CONFIGURATION, (void*)&pCECArgs) != UTOPIA_STATUS_SUCCESS)
2441*53ee8cc1Swenshuai.xi {
2442*53ee8cc1Swenshuai.xi MAPI_CEC_MSG_ERROR("Obtain CEC engine fail\n");
2443*53ee8cc1Swenshuai.xi }
2444*53ee8cc1Swenshuai.xi else
2445*53ee8cc1Swenshuai.xi {
2446*53ee8cc1Swenshuai.xi stInitialConfig->bAttachDrvISR = pCECArgs.stInitialConfigInfo.bAttachDrvISR;
2447*53ee8cc1Swenshuai.xi stInitialConfig->ulXTAL_CLK_Hz = pCECArgs.stInitialConfigInfo.ulXTAL_CLK_Hz;
2448*53ee8cc1Swenshuai.xi
2449*53ee8cc1Swenshuai.xi ulReturnValue = pCECArgs.stInitialConfigInfo.ulReturnValue;
2450*53ee8cc1Swenshuai.xi }
2451*53ee8cc1Swenshuai.xi }
2452*53ee8cc1Swenshuai.xi
2453*53ee8cc1Swenshuai.xi return ulReturnValue;
2454*53ee8cc1Swenshuai.xi }
2455*53ee8cc1Swenshuai.xi
2456