xref: /utopia/UTPA2-700.0.x/mxlib/include/apiCEC.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
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) 2008-2009 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   apiCEC.h
98*53ee8cc1Swenshuai.xi /// @brief  CEC Interface
99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc.
100*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
101*53ee8cc1Swenshuai.xi 
102*53ee8cc1Swenshuai.xi /*! \defgroup MISC HDMI modules
103*53ee8cc1Swenshuai.xi 
104*53ee8cc1Swenshuai.xi     <b> CEC (Consumer Electronics Control) </b>\n
105*53ee8cc1Swenshuai.xi     - In Europe, there was an analog predecessor to HDMI known as the SCART interface. Like HDMI, SCART carried audio and video signals through one cable. The SCART cable had a one-wire bus for controlling a home theater system.  This was branded as AV.link by Philips, among others. This bus supported one touch play, standby, etc.\n
106*53ee8cc1Swenshuai.xi     For more information,see \link APICEC apiCEC interface (apiCEC.h) \endlink \n
107*53ee8cc1Swenshuai.xi 
108*53ee8cc1Swenshuai.xi     <b> DAC(digital-to-analog converter,DAC)</b>\n
109*53ee8cc1Swenshuai.xi     - Convert digital signal to analog signal.\n
110*53ee8cc1Swenshuai.xi     For more information,see \link DAC DAC interface (apiDAC.h) \endlink \n
111*53ee8cc1Swenshuai.xi 
112*53ee8cc1Swenshuai.xi     <b> MHL interface </b>
113*53ee8cc1Swenshuai.xi     - Check whether MHL cable is plugged or not in Rx side
114*53ee8cc1Swenshuai.xi     - Disable R-term and output Vbus
115*53ee8cc1Swenshuai.xi     - Check whether Cbus is connected(discovery pulse completed)
116*53ee8cc1Swenshuai.xi     - Sink -> Source: "SET_HPD"
117*53ee8cc1Swenshuai.xi     - Sink -> Source: Write_Stat - "DCAP_RDY" and Write_INT - "DCAP_CHG"
118*53ee8cc1Swenshuai.xi     - Sink -> Source: Write_Stat - "PATH_EN"\n
119*53ee8cc1Swenshuai.xi     For more information,see \link MHL MHL interface (apiMHL.h)  \endlink \n
120*53ee8cc1Swenshuai.xi 
121*53ee8cc1Swenshuai.xi     <b> HDMI interface </b>
122*53ee8cc1Swenshuai.xi     - HDMI Ethernet Channel
123*53ee8cc1Swenshuai.xi     Support Ethernet communication through HDMI
124*53ee8cc1Swenshuai.xi     - Audio Return Channel
125*53ee8cc1Swenshuai.xi     - 3D support
126*53ee8cc1Swenshuai.xi     - Frame packing, Side-by-Side half, Top-Buttom and etc.
127*53ee8cc1Swenshuai.xi     - 4Kx2K support
128*53ee8cc1Swenshuai.xi     3840x2160@24/25/30Hz, 4096x2160@24Hz
129*53ee8cc1Swenshuai.xi     - Additional Color Spaces
130*53ee8cc1Swenshuai.xi     sYCC601, AdobeRGB, AdobeYCC601
131*53ee8cc1Swenshuai.xi     - HDMI Micro Connector
132*53ee8cc1Swenshuai.xi     19-pin/1080p\n
133*53ee8cc1Swenshuai.xi     For more information,see \link APICEC apiCEC interface (apiCEC.h)  \endlink \n
134*53ee8cc1Swenshuai.xi 
135*53ee8cc1Swenshuai.xi  * \defgroup APICEC apiCEC interface (apiCEC.h)
136*53ee8cc1Swenshuai.xi  * \ingroup MISC
137*53ee8cc1Swenshuai.xi 
138*53ee8cc1Swenshuai.xi    <b> CEC (Consumer Electronics Control) </b>
139*53ee8cc1Swenshuai.xi     In Europe, there was an analog predecessor to HDMI known as the SCART interface. Like HDMI, SCART carried audio and video signals through one cable. The SCART cable had a one-wire bus for controlling a home theater system.  This was branded as AV.link by Philips, among others. This bus supported one touch play, standby, etc.
140*53ee8cc1Swenshuai.xi 
141*53ee8cc1Swenshuai.xi 
142*53ee8cc1Swenshuai.xi    <b> CEC layout </b>
143*53ee8cc1Swenshuai.xi    \image html apiCEC_pic1.png
144*53ee8cc1Swenshuai.xi    \image html apiCEC_pic2.png
145*53ee8cc1Swenshuai.xi 
146*53ee8cc1Swenshuai.xi    <b>Feature </b>
147*53ee8cc1Swenshuai.xi    - Device OSD Name Transfer - Enables devices to upload their preferred OSD name to the TV. The TV can then use this name in any menus associated with that device.
148*53ee8cc1Swenshuai.xi    - Device Power Status ?Allows the current power status of a device to be discovered.
149*53ee8cc1Swenshuai.xi    - OSD Display - Enables a device to use the on-screen display of the TV to display text strings.
150*53ee8cc1Swenshuai.xi    - Routing Control - Allows the control of CEC Switches for streaming of a new source device.
151*53ee8cc1Swenshuai.xi    - System Information - Queries the system to determine device addresses and language.
152*53ee8cc1Swenshuai.xi    - Vendor Specific Commands - Allows a set of vendor-defined commands to be used between devices of that vendor.
153*53ee8cc1Swenshuai.xi    - Audio Rate Control ?Allows an Amplifier to fractionally increase or decrease the playback rate of an audio source.
154*53ee8cc1Swenshuai.xi 
155*53ee8cc1Swenshuai.xi    \image html apiCEC_pic3.png
156*53ee8cc1Swenshuai.xi    \image html apiCEC_pic4.png
157*53ee8cc1Swenshuai.xi 
158*53ee8cc1Swenshuai.xi 
159*53ee8cc1Swenshuai.xi  * \defgroup apiCEC_BASIC apiCEC Module basic
160*53ee8cc1Swenshuai.xi  * \ingroup APICEC
161*53ee8cc1Swenshuai.xi 
162*53ee8cc1Swenshuai.xi  * \dergroup apiCEC_Message send messge
163*53ee8cc1Swenshuai.xi  * \ingroup APICEC
164*53ee8cc1Swenshuai.xi 
165*53ee8cc1Swenshuai.xi *! \dergroup apiCEC_STATUS CEC status
166*53ee8cc1Swenshuai.xi * \ingroup APICEC
167*53ee8cc1Swenshuai.xi 
168*53ee8cc1Swenshuai.xi *! \dergroup apiCEC_SECOND support second LA
169*53ee8cc1Swenshuai.xi * \ingroup APICEC
170*53ee8cc1Swenshuai.xi 
171*53ee8cc1Swenshuai.xi *! \dergroup apiCEC_ToBeRemove apiCEC api to be removed
172*53ee8cc1Swenshuai.xi * \ingroup APICEC
173*53ee8cc1Swenshuai.xi 
174*53ee8cc1Swenshuai.xi *! \dergroup apiCEC_ToBeAdd apiCEC api to be added
175*53ee8cc1Swenshuai.xi * \ingroup APICEC
176*53ee8cc1Swenshuai.xi 
177*53ee8cc1Swenshuai.xi */
178*53ee8cc1Swenshuai.xi 
179*53ee8cc1Swenshuai.xi #ifndef _APICEC_H_
180*53ee8cc1Swenshuai.xi #define _APICEC_H_
181*53ee8cc1Swenshuai.xi 
182*53ee8cc1Swenshuai.xi #ifdef __cplusplus
183*53ee8cc1Swenshuai.xi extern "C"
184*53ee8cc1Swenshuai.xi {
185*53ee8cc1Swenshuai.xi #endif
186*53ee8cc1Swenshuai.xi 
187*53ee8cc1Swenshuai.xi #include "MsTypes.h"
188*53ee8cc1Swenshuai.xi #include "MsDevice.h"
189*53ee8cc1Swenshuai.xi #include "MsCommon.h"
190*53ee8cc1Swenshuai.xi 
191*53ee8cc1Swenshuai.xi 
192*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
193*53ee8cc1Swenshuai.xi //  Macro and Define
194*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
195*53ee8cc1Swenshuai.xi #define MSIF_CEC_LIB_CODE               {'C','E','C','_'}
196*53ee8cc1Swenshuai.xi #define MSIF_CEC_LIBVER                 {'0','0'}                         /* 0.0 ~ Z.Z */
197*53ee8cc1Swenshuai.xi #define MSIF_CEC_BUILDNUM               {'0','8'}                         /* 00 ~ 99   */
198*53ee8cc1Swenshuai.xi #define MSIF_CEC_CHANGELIST             {'0','0','4','4','9','9','9','1'} /* CL#       */
199*53ee8cc1Swenshuai.xi #define CEC_API_VERSION                  /* Character String for DRV/API version             */  \
200*53ee8cc1Swenshuai.xi     MSIF_TAG,                           /* 'MSIF'                                           */  \
201*53ee8cc1Swenshuai.xi     MSIF_CLASS,                         /* '00'                                             */  \
202*53ee8cc1Swenshuai.xi     MSIF_CUS,                           /* 0x0000                                           */  \
203*53ee8cc1Swenshuai.xi     MSIF_MOD,                           /* 0x0000                                           */  \
204*53ee8cc1Swenshuai.xi     MSIF_CHIP,                                                                                  \
205*53ee8cc1Swenshuai.xi     MSIF_CPU,                                                                                   \
206*53ee8cc1Swenshuai.xi     MSIF_CEC_LIB_CODE,                  /* IP__                                             */  \
207*53ee8cc1Swenshuai.xi     MSIF_CEC_LIBVER,                    /* 0.0 ~ Z.Z                                        */  \
208*53ee8cc1Swenshuai.xi     MSIF_CEC_BUILDNUM,                  /* 00 ~ 99                                          */  \
209*53ee8cc1Swenshuai.xi     MSIF_CEC_CHANGELIST,                /* CL#                                              */  \
210*53ee8cc1Swenshuai.xi     MSIF_OS
211*53ee8cc1Swenshuai.xi 
212*53ee8cc1Swenshuai.xi #define CEC_VERSION_11      0UL   //CEC1.1
213*53ee8cc1Swenshuai.xi #define CEC_VERSION_12      1UL   //CEC1.2
214*53ee8cc1Swenshuai.xi #define CEC_VERSION_12a     2UL   //CEC1.2a
215*53ee8cc1Swenshuai.xi #define CEC_VERSION_13      3UL   //CEC1.3
216*53ee8cc1Swenshuai.xi #define CEC_VERSION_13a     4UL   //CEC1.3a
217*53ee8cc1Swenshuai.xi #define CEC_VERSION_14      5UL   //CEC1.4
218*53ee8cc1Swenshuai.xi 
219*53ee8cc1Swenshuai.xi #define HDMI_CEC_VERSION    CEC_VERSION_14
220*53ee8cc1Swenshuai.xi 
221*53ee8cc1Swenshuai.xi #define CEC_FIFO_CNT                4UL
222*53ee8cc1Swenshuai.xi #define CEC_FIFO_NUM_COUNT          CEC_FIFO_CNT
223*53ee8cc1Swenshuai.xi #define CEC_PHY_ADDR_COUNT          2UL
224*53ee8cc1Swenshuai.xi #define CEC_DEVICE_EXIST_COUNT      15UL
225*53ee8cc1Swenshuai.xi #define CEC_FIFO_DATA_NUMBER        16UL
226*53ee8cc1Swenshuai.xi #define CEC_VENDOR_ID_COUNT         3UL
227*53ee8cc1Swenshuai.xi #define CEC_MENU_LANGUAGE_COUNT     3UL
228*53ee8cc1Swenshuai.xi 
229*53ee8cc1Swenshuai.xi #define RETRY_CNT          1UL
230*53ee8cc1Swenshuai.xi #define FrameInterval      7UL
231*53ee8cc1Swenshuai.xi #define BusFreeTime        6UL//5 // Free bit time by IC design has a little difference than spec, set to 6 instead of 5
232*53ee8cc1Swenshuai.xi #define ReTxInterval       3UL
233*53ee8cc1Swenshuai.xi 
234*53ee8cc1Swenshuai.xi #define ENABLE_CEC_INT                  ENABLE
235*53ee8cc1Swenshuai.xi #define ENABLE_CUST01_CEC               ENABLE
236*53ee8cc1Swenshuai.xi #define ENABLE_SW_CEC_WAKEUP            ENABLE
237*53ee8cc1Swenshuai.xi #define ENABLE_CEC_MULTIPLE             DISABLE
238*53ee8cc1Swenshuai.xi 
239*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
240*53ee8cc1Swenshuai.xi //  Type and Structure
241*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
242*53ee8cc1Swenshuai.xi 
243*53ee8cc1Swenshuai.xi typedef enum _MsCEC_INPUT_PORT
244*53ee8cc1Swenshuai.xi {
245*53ee8cc1Swenshuai.xi     INPUT_PORT0 = 0x00,
246*53ee8cc1Swenshuai.xi     INPUT_PORT1 = 0x01,
247*53ee8cc1Swenshuai.xi     INPUT_PORT2 = 0x02,
248*53ee8cc1Swenshuai.xi     INPUT_PORT3 = 0x03,
249*53ee8cc1Swenshuai.xi }MsCEC_INPUT_PORT;
250*53ee8cc1Swenshuai.xi 
251*53ee8cc1Swenshuai.xi typedef enum _CEC_ERROR_CODE
252*53ee8cc1Swenshuai.xi {
253*53ee8cc1Swenshuai.xi     E_CEC_FEATURE_ABORT = 0x00,
254*53ee8cc1Swenshuai.xi     E_CEC_RX_SUCCESS    = 0x01,
255*53ee8cc1Swenshuai.xi     E_CEC_TX_SUCCESS    = 0x02,
256*53ee8cc1Swenshuai.xi     E_CEC_RF            = 0x04,
257*53ee8cc1Swenshuai.xi     E_CEC_LOST_ABT      = 0x08,
258*53ee8cc1Swenshuai.xi     E_CEC_BIT_SHORT     = 0x10,
259*53ee8cc1Swenshuai.xi     E_CEC_BIT_LONG      = 0x20,
260*53ee8cc1Swenshuai.xi     E_CEC_NACK          = 0x40,
261*53ee8cc1Swenshuai.xi     E_CEC_SYSTEM_BUSY   = 0x80,
262*53ee8cc1Swenshuai.xi } CEC_ERROR_CODE;
263*53ee8cc1Swenshuai.xi 
264*53ee8cc1Swenshuai.xi //Logical Address
265*53ee8cc1Swenshuai.xi typedef enum _MsCEC_DEVICELA
266*53ee8cc1Swenshuai.xi {
267*53ee8cc1Swenshuai.xi     E_LA_TV              =0,
268*53ee8cc1Swenshuai.xi     E_LA_RECORDER1       =1,
269*53ee8cc1Swenshuai.xi     E_LA_RECORDER2       =2,
270*53ee8cc1Swenshuai.xi     E_LA_TUNER1          =3,
271*53ee8cc1Swenshuai.xi     E_LA_PLAYBACK1       =4,
272*53ee8cc1Swenshuai.xi     E_LA_AUDIO_SYS       =5,
273*53ee8cc1Swenshuai.xi     E_LA_TUNER2          =6,
274*53ee8cc1Swenshuai.xi     E_LA_TUNER3          =7,
275*53ee8cc1Swenshuai.xi     E_LA_PLAYBACK2       =8,
276*53ee8cc1Swenshuai.xi     E_LA_RECORER3        =9,
277*53ee8cc1Swenshuai.xi #if(HDMI_CEC_VERSION >= CEC_VERSION_13a)
278*53ee8cc1Swenshuai.xi     E_LA_TUNER4          =10,
279*53ee8cc1Swenshuai.xi     E_LA_PLYBACK3        =11,
280*53ee8cc1Swenshuai.xi #endif
281*53ee8cc1Swenshuai.xi     RESERVED_1            =12,
282*53ee8cc1Swenshuai.xi     RESERVED_2            =13,
283*53ee8cc1Swenshuai.xi     E_LA_FREE_USE        =14,
284*53ee8cc1Swenshuai.xi     E_LA_UNREGISTERED    =15,
285*53ee8cc1Swenshuai.xi     E_LA_BROADCAST       =15,
286*53ee8cc1Swenshuai.xi     E_LA_MAX =15,
287*53ee8cc1Swenshuai.xi } MsCEC_DEVICELA;
288*53ee8cc1Swenshuai.xi 
289*53ee8cc1Swenshuai.xi //the opcode is referenced from CEC1.3a table 7 ~ 27
290*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSGLIST
291*53ee8cc1Swenshuai.xi {
292*53ee8cc1Swenshuai.xi //----- One Touch Play ----------------------------
293*53ee8cc1Swenshuai.xi     E_MSG_ACTIVE_SOURCE                         = 0x82,
294*53ee8cc1Swenshuai.xi     E_MSG_OTP_IMAGE_VIEW_ON                     = 0x04,
295*53ee8cc1Swenshuai.xi     E_MSG_OTP_TEXT_VIEW_ON                      = 0x0D,
296*53ee8cc1Swenshuai.xi 
297*53ee8cc1Swenshuai.xi 
298*53ee8cc1Swenshuai.xi //----- Routing Control ---------------------------
299*53ee8cc1Swenshuai.xi     //E_MSG_RC_ACTIVE_SOURCE                      = 0x82,
300*53ee8cc1Swenshuai.xi     E_MSG_RC_INACTIVE_SOURCE                    = 0x9D,
301*53ee8cc1Swenshuai.xi 
302*53ee8cc1Swenshuai.xi     E_MSG_RC_REQ_ACTIVE_SOURCE                  = 0x85, // should be removed
303*53ee8cc1Swenshuai.xi     E_MSG_RC_REQUEST_ACTIVE_SOURCE              = 0x85,
304*53ee8cc1Swenshuai.xi 
305*53ee8cc1Swenshuai.xi     E_MSG_RC_ROUTING_CHANGE                     = 0x80,
306*53ee8cc1Swenshuai.xi 
307*53ee8cc1Swenshuai.xi     E_MSG_RC_ROUTING_INFO                       = 0x81, // should be removed
308*53ee8cc1Swenshuai.xi     E_MSG_RC_ROUTING_INFORMATION                = 0x81,
309*53ee8cc1Swenshuai.xi 
310*53ee8cc1Swenshuai.xi     E_MSG_RC_SET_STREM_PATH                     = 0x86,
311*53ee8cc1Swenshuai.xi 
312*53ee8cc1Swenshuai.xi 
313*53ee8cc1Swenshuai.xi //----- Standby Command ---------------------------
314*53ee8cc1Swenshuai.xi     E_MSG_STANDBY                               = 0x36,
315*53ee8cc1Swenshuai.xi 
316*53ee8cc1Swenshuai.xi 
317*53ee8cc1Swenshuai.xi //----- One Touch Record---------------------------
318*53ee8cc1Swenshuai.xi     E_MSG_OTR_RECORD_OFF                        = 0x0B,
319*53ee8cc1Swenshuai.xi     E_MSG_OTR_RECORD_ON                         = 0x09,
320*53ee8cc1Swenshuai.xi     E_MSG_OTR_RECORD_STATUS                     = 0x0A,
321*53ee8cc1Swenshuai.xi     E_MSG_OTR_RECORD_TV_SCREEN                  = 0x0F,
322*53ee8cc1Swenshuai.xi 
323*53ee8cc1Swenshuai.xi 
324*53ee8cc1Swenshuai.xi //----- Timer programmer -------------------------- CEC1.3a
325*53ee8cc1Swenshuai.xi     E_MSG_TP_CLEAR_ANALOG_TIMER                 = 0x33, // should be removed
326*53ee8cc1Swenshuai.xi     E_MSG_TP_CLEAR_ANALOGUE_TIMER               = 0x33,
327*53ee8cc1Swenshuai.xi 
328*53ee8cc1Swenshuai.xi     E_MSG_TP_CLEAR_DIGITAL_TIMER                = 0x99,
329*53ee8cc1Swenshuai.xi 
330*53ee8cc1Swenshuai.xi     E_MSG_TP_CLEAR_EXT_TIMER                    = 0xA1, // should be removed
331*53ee8cc1Swenshuai.xi     E_MSG_TP_CLEAR_EXTERNAL_TIMER               = 0xA1,
332*53ee8cc1Swenshuai.xi 
333*53ee8cc1Swenshuai.xi     E_MSG_TP_SET_ANALOG_TIMER                   = 0x34, // should be removed
334*53ee8cc1Swenshuai.xi     E_MSG_TP_SET_ANALOGUE_TIMER                 = 0x34,
335*53ee8cc1Swenshuai.xi 
336*53ee8cc1Swenshuai.xi     E_MSG_TP_SET_DIGITAL_TIMER                  = 0x97,
337*53ee8cc1Swenshuai.xi 
338*53ee8cc1Swenshuai.xi     E_MSG_TP_SET_EXT_TIMER                      = 0xA2, // should be removed
339*53ee8cc1Swenshuai.xi     E_MSG_TP_SET_EXTERNAL_TIMER                 = 0xA2,
340*53ee8cc1Swenshuai.xi 
341*53ee8cc1Swenshuai.xi     E_MSG_TP_SET_TIMER_PROGRAM_TITLE            = 0x67,
342*53ee8cc1Swenshuai.xi     E_MSG_TP_TIMER_CLEARD_STATUS                = 0x43,
343*53ee8cc1Swenshuai.xi     E_MSG_TP_TIMER_STATUS                       = 0x35,
344*53ee8cc1Swenshuai.xi 
345*53ee8cc1Swenshuai.xi 
346*53ee8cc1Swenshuai.xi //----- System Information ------------------------
347*53ee8cc1Swenshuai.xi     E_MSG_SI_CEC_VERSION                        = 0x9E,       //1.3a
348*53ee8cc1Swenshuai.xi     E_MSG_SI_GET_CEC_VERSION                    = 0x9F,       //1.3a
349*53ee8cc1Swenshuai.xi 
350*53ee8cc1Swenshuai.xi     E_MSG_SI_REQUEST_PHY_ADDR                   = 0x83, // should be removed
351*53ee8cc1Swenshuai.xi     E_MSG_SI_GIVE_PHYSICAL_ADDRESS              = 0x83,
352*53ee8cc1Swenshuai.xi 
353*53ee8cc1Swenshuai.xi     E_MSG_SI_GET_MENU_LANGUAGE                  = 0x91,
354*53ee8cc1Swenshuai.xi     //E_MSG_SI_POLLING_MESSAGE                    = ?,
355*53ee8cc1Swenshuai.xi 
356*53ee8cc1Swenshuai.xi     E_MSG_SI_REPORT_PHY_ADDR                    = 0x84, // should be removed
357*53ee8cc1Swenshuai.xi     E_MSG_SI_REPORT_PHYSICAL_ADDRESS            = 0x84,
358*53ee8cc1Swenshuai.xi 
359*53ee8cc1Swenshuai.xi     E_MSG_SI_SET_MENU_LANGUAGE                  = 0x32,
360*53ee8cc1Swenshuai.xi 
361*53ee8cc1Swenshuai.xi     //E_MSG_SI_REC_TYPE_PRESET                    = 0x00,  //parameter   ?
362*53ee8cc1Swenshuai.xi     //E_MSG_SI_REC_TYPE_OWNSRC                    = 0x01,  //parameter   ?
363*53ee8cc1Swenshuai.xi 
364*53ee8cc1Swenshuai.xi 
365*53ee8cc1Swenshuai.xi //----- Deck Control Feature-----------------------
366*53ee8cc1Swenshuai.xi     E_MSG_DC_DECK_CTRL                          = 0x42, // should be removed
367*53ee8cc1Swenshuai.xi     E_MSG_DC_DECK_CONTROL                       = 0x42,
368*53ee8cc1Swenshuai.xi 
369*53ee8cc1Swenshuai.xi     E_MSG_DC_DECK_STATUS                        = 0x1B,
370*53ee8cc1Swenshuai.xi     E_MSG_DC_GIVE_DECK_STATUS                   = 0x1A,
371*53ee8cc1Swenshuai.xi     E_MSG_DC_PLAY                               = 0x41,
372*53ee8cc1Swenshuai.xi 
373*53ee8cc1Swenshuai.xi 
374*53ee8cc1Swenshuai.xi //----- Tuner Control ------------------------------
375*53ee8cc1Swenshuai.xi     E_MSG_TC_GIVE_TUNER_STATUS                  = 0x08, // should be removed
376*53ee8cc1Swenshuai.xi     E_MSG_TC_GIVE_TUNER_DEVICE_STATUS           = 0x08,
377*53ee8cc1Swenshuai.xi 
378*53ee8cc1Swenshuai.xi     E_MSG_TC_SEL_ANALOG_SERVICE                 = 0x92, // should be removed
379*53ee8cc1Swenshuai.xi     E_MSG_TC_SEL_ANALOGUE_SERVICE               = 0x92,
380*53ee8cc1Swenshuai.xi 
381*53ee8cc1Swenshuai.xi     E_MSG_TC_SEL_DIGITAL_SERVICE                = 0x93, // should be removed
382*53ee8cc1Swenshuai.xi     E_MSG_TC_SELECT_DIGITAL_SERVICE             = 0x93,
383*53ee8cc1Swenshuai.xi 
384*53ee8cc1Swenshuai.xi     E_MSG_TC_TUNER_DEVICE_STATUS                = 0x07,
385*53ee8cc1Swenshuai.xi 
386*53ee8cc1Swenshuai.xi     E_MSG_TC_TUNER_STEP_DEC                     = 0x06, // should be removed
387*53ee8cc1Swenshuai.xi     E_MSG_TC_TUNER_STEP_DECREMENT               = 0x06,
388*53ee8cc1Swenshuai.xi 
389*53ee8cc1Swenshuai.xi     E_MSG_TC_TUNER_STEP_INC                     = 0x05, // should be removed
390*53ee8cc1Swenshuai.xi     E_MSG_TC_TUNER_STEP_INCREMENT               = 0x05,
391*53ee8cc1Swenshuai.xi 
392*53ee8cc1Swenshuai.xi 
393*53ee8cc1Swenshuai.xi //---------Vendor Specific -------------------------
394*53ee8cc1Swenshuai.xi     //E_MSG_VS_CEC_VERSION                        = 0x9E,       //1.3a
395*53ee8cc1Swenshuai.xi     E_MSG_VS_DEVICE_VENDOR_ID                   = 0x87,
396*53ee8cc1Swenshuai.xi     //E_MSG_VS_GET_CEC_VERSION                    = 0x9F,       //1.3a
397*53ee8cc1Swenshuai.xi 
398*53ee8cc1Swenshuai.xi     E_MSG_VS_GIVE_VENDOR_ID                     = 0x8C, // should be removed
399*53ee8cc1Swenshuai.xi     E_MSG_VS_GIVE_DEVICE_VENDOR_ID              = 0x8C,
400*53ee8cc1Swenshuai.xi 
401*53ee8cc1Swenshuai.xi     E_MSG_VS_VENDOR_COMMAND                     = 0x89,
402*53ee8cc1Swenshuai.xi     E_MSG_VS_VENDOR_COMMAND_WITH_ID             = 0xA0,      //1.3a
403*53ee8cc1Swenshuai.xi 
404*53ee8cc1Swenshuai.xi     E_MSG_VS_VENDOR_RC_BUT_DOWN                 = 0x8A, // should be removed
405*53ee8cc1Swenshuai.xi     E_MSG_VS_VENDOR_REMOTE_BUTTON_DOWN          = 0x8A,
406*53ee8cc1Swenshuai.xi 
407*53ee8cc1Swenshuai.xi     E_MSG_VS_VENDOR_RC_BUT_UP                   = 0x8B, // should be removed
408*53ee8cc1Swenshuai.xi     E_MSG_VS_VENDOR_REMOTE_BUTTON_UP            = 0x8B,
409*53ee8cc1Swenshuai.xi 
410*53ee8cc1Swenshuai.xi 
411*53ee8cc1Swenshuai.xi //----- OSD Display --------------------------------
412*53ee8cc1Swenshuai.xi     E_MSG_SET_OSD_STRING                        = 0x64,
413*53ee8cc1Swenshuai.xi 
414*53ee8cc1Swenshuai.xi 
415*53ee8cc1Swenshuai.xi //----- Device OSD Name Transfer  -------------------------
416*53ee8cc1Swenshuai.xi     E_MSG_OSDNT_GIVE_OSD_NAME                   = 0x46,
417*53ee8cc1Swenshuai.xi     E_MSG_OSDNT_SET_OSD_NAME                    = 0x47,
418*53ee8cc1Swenshuai.xi 
419*53ee8cc1Swenshuai.xi 
420*53ee8cc1Swenshuai.xi //----- Device Menu Control ------------------------
421*53ee8cc1Swenshuai.xi     E_MSG_DMC_MENU_REQUEST                      = 0x8D,
422*53ee8cc1Swenshuai.xi     E_MSG_DMC_MENU_STATUS                       = 0x8E,
423*53ee8cc1Swenshuai.xi     //E_MSG_DMC_MENU_ACTIVATED                    = 0x00,   //parameter
424*53ee8cc1Swenshuai.xi     //E_MSG_DMC_MENU_DEACTIVATED                  = 0x01,   //parameter
425*53ee8cc1Swenshuai.xi 
426*53ee8cc1Swenshuai.xi     E_MSG_UI_PRESS                              = 0x44, // should be removed
427*53ee8cc1Swenshuai.xi     E_MSG_DMC_USER_CONTROL_PRESSED              = 0x44,
428*53ee8cc1Swenshuai.xi 
429*53ee8cc1Swenshuai.xi     E_MSG_UI_RELEASE                            = 0x45, // should be removed
430*53ee8cc1Swenshuai.xi     E_MSG_DMC_USER_CONTROL_RELEASED             = 0x45,
431*53ee8cc1Swenshuai.xi 
432*53ee8cc1Swenshuai.xi 
433*53ee8cc1Swenshuai.xi //----- Remote Control Passthrough ----------------
434*53ee8cc1Swenshuai.xi //----- UI Message --------------------------------
435*53ee8cc1Swenshuai.xi //    E_MSG_RCP_USER_CONTROL_PRESSED              = 0x44,
436*53ee8cc1Swenshuai.xi //    E_MSG_RCP_USER_CONTROL_RELEASED             = 0x45,
437*53ee8cc1Swenshuai.xi 
438*53ee8cc1Swenshuai.xi 
439*53ee8cc1Swenshuai.xi //----- Power Status  ------------------------------
440*53ee8cc1Swenshuai.xi     E_MSG_PS_GIVE_POWER_STATUS                  = 0x8F, // should be removed
441*53ee8cc1Swenshuai.xi     E_MSG_PS_GIVE_DEVICE_POWER_STATUS           = 0x8F,
442*53ee8cc1Swenshuai.xi 
443*53ee8cc1Swenshuai.xi     E_MSG_PS_REPORT_POWER_STATUS                = 0x90,
444*53ee8cc1Swenshuai.xi 
445*53ee8cc1Swenshuai.xi 
446*53ee8cc1Swenshuai.xi //----- General Protocal Message ------------------
447*53ee8cc1Swenshuai.xi 
448*53ee8cc1Swenshuai.xi //----- Feature Abort -----------------------------
449*53ee8cc1Swenshuai.xi     E_MSG_FEATURE_ABORT                         = 0x00,
450*53ee8cc1Swenshuai.xi 
451*53ee8cc1Swenshuai.xi //----- Abort Message -----------------------------
452*53ee8cc1Swenshuai.xi     E_MSG_ABORT_MESSAGE                         = 0xFF,
453*53ee8cc1Swenshuai.xi 
454*53ee8cc1Swenshuai.xi 
455*53ee8cc1Swenshuai.xi //----- System Audio Control ------------------
456*53ee8cc1Swenshuai.xi     E_MSG_SAC_GIVE_AUDIO_STATUS                 = 0x71,
457*53ee8cc1Swenshuai.xi     E_MSG_SAC_GIVE_SYSTEM_AUDIO_MODE_STATUS     = 0x7D,
458*53ee8cc1Swenshuai.xi     E_MSG_SAC_REPORT_AUDIO_STATUS               = 0x7A,
459*53ee8cc1Swenshuai.xi 
460*53ee8cc1Swenshuai.xi     E_MSG_SAC_REPORT_SHORT_AUDIO_DESCRIPTOR     = 0xA3,
461*53ee8cc1Swenshuai.xi     E_MSG_SAC_REQUEST_SHORT_AUDIO_DESCRIPTOR    = 0xA4,
462*53ee8cc1Swenshuai.xi 
463*53ee8cc1Swenshuai.xi     E_MSG_SAC_SET_SYSTEM_AUDIO_MODE             = 0x72,
464*53ee8cc1Swenshuai.xi     E_MSG_SAC_SYSTEM_AUDIO_MODE_REQUEST         = 0x70,
465*53ee8cc1Swenshuai.xi     E_MSG_SAC_SYSTEM_AUDIO_MODE_STATUS          = 0x7E,
466*53ee8cc1Swenshuai.xi 
467*53ee8cc1Swenshuai.xi 
468*53ee8cc1Swenshuai.xi //----- System Audio Control ------------------
469*53ee8cc1Swenshuai.xi     E_MSG_SAC_SET_AUDIO_RATE                    = 0x9A,
470*53ee8cc1Swenshuai.xi 
471*53ee8cc1Swenshuai.xi 
472*53ee8cc1Swenshuai.xi //----- Audio Return Channel  Control ------------------
473*53ee8cc1Swenshuai.xi     E_MSG_ARC_INITIATE_ARC                      = 0xC0,
474*53ee8cc1Swenshuai.xi     E_MSG_ARC_REPORT_ARC_INITIATED              = 0xC1,
475*53ee8cc1Swenshuai.xi     E_MSG_ARC_REPORT_ARC_TERMINATED             = 0xC2,
476*53ee8cc1Swenshuai.xi 
477*53ee8cc1Swenshuai.xi     E_MSG_ARC_REQUEST_ARC_INITATION             = 0xC3, // should be removed
478*53ee8cc1Swenshuai.xi     E_MSG_ARC_REQUEST_ARC_INITIATION            = 0xC3,
479*53ee8cc1Swenshuai.xi 
480*53ee8cc1Swenshuai.xi     E_MSG_ARC_REQUEST_ARC_TERMINATION           = 0xC4,
481*53ee8cc1Swenshuai.xi 
482*53ee8cc1Swenshuai.xi     E_MSG_ARC_TERMINATED_ARC                    = 0xC5, // should be removed
483*53ee8cc1Swenshuai.xi     E_MSG_ARC_TERMINATE_ARC                     = 0xC5,
484*53ee8cc1Swenshuai.xi 
485*53ee8cc1Swenshuai.xi 
486*53ee8cc1Swenshuai.xi //----- Capability Discovery and Control ------------------
487*53ee8cc1Swenshuai.xi     E_MSG_CDC_CDC_MESSAGE                       = 0xF8,
488*53ee8cc1Swenshuai.xi 
489*53ee8cc1Swenshuai.xi } MsCEC_MSGLIST;
490*53ee8cc1Swenshuai.xi 
491*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_TRANS_TYPE
492*53ee8cc1Swenshuai.xi {
493*53ee8cc1Swenshuai.xi     E_TRANS_BROADCAST_MSG   = 0,
494*53ee8cc1Swenshuai.xi     E_TRANS_DIRECT_MSG      = 1,
495*53ee8cc1Swenshuai.xi     E_TRANS_BOTHTYPE_MSG    = 2,
496*53ee8cc1Swenshuai.xi } MsCEC_MSG_TRANS_TYPE;
497*53ee8cc1Swenshuai.xi 
498*53ee8cc1Swenshuai.xi 
499*53ee8cc1Swenshuai.xi //Device Type, 1byte
500*53ee8cc1Swenshuai.xi typedef enum _MsCEC_DEVICE_TYPE
501*53ee8cc1Swenshuai.xi {
502*53ee8cc1Swenshuai.xi     E_DEVICE_TYPE_TV                    =0,
503*53ee8cc1Swenshuai.xi     E_DEVICE_TYPE_RECORDING_DEVICE      =1,
504*53ee8cc1Swenshuai.xi     E_DEVICE_TYPE_RESERVED              =2,
505*53ee8cc1Swenshuai.xi     E_DEVICE_TYPE_TUNER                 =3,
506*53ee8cc1Swenshuai.xi     E_DEVICE_TYPE_PLAYBACK_DEVICE       =4,
507*53ee8cc1Swenshuai.xi     E_DEVICE_TYPE_AUDIO_SYSTEM          =5,
508*53ee8cc1Swenshuai.xi } MsCEC_DEVICE_TYPE;
509*53ee8cc1Swenshuai.xi 
510*53ee8cc1Swenshuai.xi 
511*53ee8cc1Swenshuai.xi //Deck Control, Deck Control Mode 1 byte
512*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_DC_DECK_CTRL_PARM
513*53ee8cc1Swenshuai.xi {
514*53ee8cc1Swenshuai.xi     E_MSG_DCM_CMD_SKIP_FORWARD          = 1,  //parameter
515*53ee8cc1Swenshuai.xi     E_MSG_DCM_CMD_SKIP_REVERSE          = 2,  //parameter
516*53ee8cc1Swenshuai.xi     E_MSG_DCM_CMD_STOP                  = 3,  //parameter
517*53ee8cc1Swenshuai.xi     E_MSG_DCM_CMD_EJECT                 = 4,  //parameter
518*53ee8cc1Swenshuai.xi } MsCEC_MSG_DC_DECK_CTRL_PARM;
519*53ee8cc1Swenshuai.xi 
520*53ee8cc1Swenshuai.xi //Deck status, Deck info 1 byte
521*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_DC_DECK_STATUS_PARM
522*53ee8cc1Swenshuai.xi {
523*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_PLAY                   = 0x11,  //parameter
524*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_RECORD                 = 0x12,  //parameter
525*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_PLAY_REVERSE           = 0x13,  //parameter
526*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_STILL                  = 0x14,  //parameter
527*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_SLOW                   = 0x15,  //parameter
528*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_SLOW_REVERSE           = 0x16,  //parameter
529*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_FAST_FORWARD           = 0x17,  //parameter
530*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_FAST_REVERSE           = 0x18,  //parameter
531*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_NO_MEDIA               = 0x19,  //parameter
532*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_STOP                   = 0x1A,  //parameter
533*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_SKIP_FORWARD           = 0x1B,  //parameter
534*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_SKIP_REVERSE           = 0x1C,  //parameter
535*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_INDEX_SEARCH_FORWARD   = 0x1D,  //parameter
536*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_INDEX_SEARCH_REVERSE   = 0x1E,  //parameter
537*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_OTHER_STATUS           = 0x1F,  //parameter
538*53ee8cc1Swenshuai.xi } MsCEC_MSG_DC_DECK_STATUS_PARM;
539*53ee8cc1Swenshuai.xi 
540*53ee8cc1Swenshuai.xi 
541*53ee8cc1Swenshuai.xi //Give deck status, Status request 1 byte
542*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_STATUS_REQUEST_PARM
543*53ee8cc1Swenshuai.xi {
544*53ee8cc1Swenshuai.xi     E_MSG_SR_CMD_ON                     = 1,  //parameter
545*53ee8cc1Swenshuai.xi     E_MSG_SR_CMD_OFF                    = 2,  //parameter
546*53ee8cc1Swenshuai.xi     E_MSG_SR_CMD_ONCE                   = 3,  //parameter
547*53ee8cc1Swenshuai.xi } MsCEC_MSG_STATUS_REQUEST_PARM;
548*53ee8cc1Swenshuai.xi 
549*53ee8cc1Swenshuai.xi 
550*53ee8cc1Swenshuai.xi //Play, [Play Mode] 1 byte
551*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_DC_PLAY_PARM
552*53ee8cc1Swenshuai.xi {
553*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_PLAY_FORWARD               = 0x24,  //parameter
554*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_PLAY_REVERSE               = 0x20,  //parameter
555*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_PLAY_STILL                 = 0x25,  //parameter
556*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_FAST_FORWARD_MINI_SPEED    = 0x05,  //parameter
557*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_FAST_FORWARD_MEDIUM_SPEED  = 0x06,  //parameter
558*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_FAST_FORWARD_MAXI_SPEED    = 0x07,  //parameter
559*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_FAST_REVERSE_MINI_SPEED    = 0x09,  //parameter
560*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_FAST_REVERSE_MEDIUM_SPEED  = 0x0A,  //parameter
561*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_FAST_REVERSE_MAXI_SPEED    = 0x0B,  //parameter
562*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_SLOW_FORWARD_MINI_SPEED    = 0x15,  //parameter
563*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_SLOW_FORWARD_MEDIUM_SPEED  = 0x16,  //parameter
564*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_SLOW_FORWARD_MAXI_SPEED    = 0x17,  //parameter
565*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_SLOW_REVERSE_MINI_SPEED    = 0x19,  //parameter
566*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_SLOW_REVERSE_MEDIUM_SPEED  = 0x1A,  //parameter
567*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_SLOW_REVERSE_MAXI_SPEED    = 0x1B,  //parameter
568*53ee8cc1Swenshuai.xi } MsCEC_MSG_DC_PLAY_PARM;
569*53ee8cc1Swenshuai.xi 
570*53ee8cc1Swenshuai.xi 
571*53ee8cc1Swenshuai.xi //Power status 1 byte
572*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_POWER_STATUS_PARM
573*53ee8cc1Swenshuai.xi {
574*53ee8cc1Swenshuai.xi     E_MSG_PWRSTA_ON             = 0x00,
575*53ee8cc1Swenshuai.xi     E_MSG_PWRSTA_STANDBY        = 0x01,
576*53ee8cc1Swenshuai.xi     E_MSG_PWRSTA_STANDBY2ON     = 0x02,
577*53ee8cc1Swenshuai.xi     E_MSG_PWRSTA_ON2STANDBY     = 0x03,
578*53ee8cc1Swenshuai.xi     E_MSG_PWRSTA_UNKNOW                 = 0x04,
579*53ee8cc1Swenshuai.xi } MsCEC_MSG_POWER_STATUS_PARM;
580*53ee8cc1Swenshuai.xi 
581*53ee8cc1Swenshuai.xi 
582*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_ABORT_REASON
583*53ee8cc1Swenshuai.xi {
584*53ee8cc1Swenshuai.xi     E_MSG_AR_UNRECOGNIZE_OPCDE  = 0x00,  // abort reason
585*53ee8cc1Swenshuai.xi     E_MSG_AR_CANNOTRESPOND      = 0x01,  // abort reason
586*53ee8cc1Swenshuai.xi     E_MSG_AR_CANNOTPROVIDESCR   = 0x02,  // abort reason
587*53ee8cc1Swenshuai.xi     E_MSG_AR_INVALID_OPCODE     = 0x03,  // abort reason
588*53ee8cc1Swenshuai.xi     E_MSG_AR_REFUSED            = 0x04,  // abort reason
589*53ee8cc1Swenshuai.xi     E_MSG_AR_IGNORED            = 0x05,
590*53ee8cc1Swenshuai.xi     E_MSG_AR_SUCCESSED        = 0x06,
591*53ee8cc1Swenshuai.xi } MsCEC_MSG_ABORT_REASON;
592*53ee8cc1Swenshuai.xi 
593*53ee8cc1Swenshuai.xi 
594*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_MENU_REQ_TYPE
595*53ee8cc1Swenshuai.xi {
596*53ee8cc1Swenshuai.xi     E_MSG_MENU_REQ_ACTIVATED    = 0,  // menu request activated status
597*53ee8cc1Swenshuai.xi     E_MSG_MENU_REQ_DEACTIVATED  = 1,  // menu request deactivated status
598*53ee8cc1Swenshuai.xi     E_MSG_MENU_REQ_QUERY        = 2,  // menu request query status
599*53ee8cc1Swenshuai.xi } MsCEC_MSG_MENU_REQ_TYPE;
600*53ee8cc1Swenshuai.xi 
601*53ee8cc1Swenshuai.xi 
602*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_MENU_STATE
603*53ee8cc1Swenshuai.xi {
604*53ee8cc1Swenshuai.xi     E_MSG_MENU_ACTIVATED    = 0,  // menu activated
605*53ee8cc1Swenshuai.xi     E_MSG_MENU_DEACTIVATED  = 1,  // menu deactivated
606*53ee8cc1Swenshuai.xi } MsCEC_MSG_MENU_STATE;
607*53ee8cc1Swenshuai.xi 
608*53ee8cc1Swenshuai.xi 
609*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_RECORD_SOURCE_TYPE
610*53ee8cc1Swenshuai.xi {
611*53ee8cc1Swenshuai.xi     E_MSG_RECORD_TYPE_OWN_SOURCE                = 1,  // own source
612*53ee8cc1Swenshuai.xi     E_MSG_RECORD_TYPE_DIGITAL_SERVICE           = 2,  // digital service
613*53ee8cc1Swenshuai.xi #if(HDMI_CEC_VERSION >= CEC_VERSION_13a)
614*53ee8cc1Swenshuai.xi     E_MSG_RECORD_TYPE_ANALOGUE_SERVICE          = 3,  // Analogue Service
615*53ee8cc1Swenshuai.xi     E_MSG_RECORD_TYPE_EXTERNAL_PLUG             = 4,  // External Plug
616*53ee8cc1Swenshuai.xi     E_MSG_RECORD_TYPE_EXTERNAL_PHYSICAL_ADDRESS = 5,  // External Physical Address
617*53ee8cc1Swenshuai.xi #endif
618*53ee8cc1Swenshuai.xi } MsCEC_MSG_RECORD_SOURCE_TYPE;
619*53ee8cc1Swenshuai.xi 
620*53ee8cc1Swenshuai.xi 
621*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_RECORD_STATUS_INFO
622*53ee8cc1Swenshuai.xi {
623*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_RECORDING_OWN_SOURCE   = 0x01,  // Recording currently selected source
624*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_RECORDING_DIGITAL_SERVICE   = 0x02,  // Recording Digital Service
625*53ee8cc1Swenshuai.xi #if(HDMI_CEC_VERSION >= CEC_VERSION_13a)
626*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_RECORDING_ANALOGUE_SERVICE   = 0x03,  // Recording Analogue Service
627*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_RECORDING_EXTERNAL_INPUT   = 0x04,  // Recording External input
628*53ee8cc1Swenshuai.xi #endif
629*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_DIGITAL_SERVICE   = 0x05,  // unable to record Digital Service, no suitable tuner.
630*53ee8cc1Swenshuai.xi #if(HDMI_CEC_VERSION >= CEC_VERSION_13a)
631*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_ANALOGUE_SERVICE   = 0x06,  // unable to record Analogue Service, no suitable tuner.
632*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_REQ_SERVICE   = 0x07,  // unable to select required service, Has suitable tuner, but the requested parameters are invalid or out of range for that tuner.
633*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_INVALID_EXTERNAL_PLUG_NUMBER   = 0x09,  // invalid External plug number
634*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_INVALID_EXTERNAL_PHYSICAL_ADDRESS   = 0x0A,  // invalid External Physical Address
635*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_CA_NOT_SUPPORT   = 0x0B,  // CA system not supported
636*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_CA_NO   = 0x0C,  // No or Insufficient CA Entitlements
637*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_COPY_NEVER   = 0x0D,  // Not allowed to copy source, source is ��copy never��.
638*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_NO_FURTHER_COPY   = 0x0E,  // No further copies allowed
639*53ee8cc1Swenshuai.xi #endif
640*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_NO_MEDIA   = 0x10,  // no media
641*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_PLAYING   = 0x11,  // Playing
642*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_ALREADY_RECORDING   = 0x12,  // already recording
643*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_MEDIA_PROTECTED   = 0x13,  // media protected
644*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_NO_SOURCE  = 0x14,  // no source signal
645*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_MEDIA_PROBLEM  = 0x15,  // media problem
646*53ee8cc1Swenshuai.xi #if(HDMI_CEC_VERSION >= CEC_VERSION_13a)
647*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_NOT_ENOUGH_SPACE  = 0x16,  // not enough space available
648*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_PARENTAL_LOCK  = 0x17,  // Parental Lock On
649*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_RECORDING_TERMINATED_NORMALLY  = 0x1A,  // Recording terminated normally, can optionally be sent in response to a <Record Off> message.
650*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_RECORDING_ALREADY_TERMINATED  = 0x1B,  // Recording has already terminated, can optionally be sent in response to a <Record Off> message.
651*53ee8cc1Swenshuai.xi #endif
652*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_OTHER_REASON  = 0x1F,  // No recording �V other reason
653*53ee8cc1Swenshuai.xi } MsCEC_MSG_RECORD_STATUS_INFO;
654*53ee8cc1Swenshuai.xi 
655*53ee8cc1Swenshuai.xi 
656*53ee8cc1Swenshuai.xi //UI command parameter: Table 27 User Control Codes
657*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_USER_CTRL_PARM
658*53ee8cc1Swenshuai.xi {
659*53ee8cc1Swenshuai.xi     E_MSG_UI_SELECT             = 0x00,
660*53ee8cc1Swenshuai.xi     E_MSG_UI_UP                 = 0x01,
661*53ee8cc1Swenshuai.xi     E_MSG_UI_DOWN               = 0x02,
662*53ee8cc1Swenshuai.xi     E_MSG_UI_LEFT               = 0x03,
663*53ee8cc1Swenshuai.xi     E_MSG_UI_RIGHT              = 0x04,
664*53ee8cc1Swenshuai.xi     E_MSG_UI_RIGHT_UP           = 0x05,
665*53ee8cc1Swenshuai.xi     E_MSG_UI_RIGHT_DOWN         = 0x06,
666*53ee8cc1Swenshuai.xi     E_MSG_UI_LEFT_UP            = 0x07,
667*53ee8cc1Swenshuai.xi     E_MSG_UI_LEFT_DOWN          = 0x08,
668*53ee8cc1Swenshuai.xi     E_MSG_UI_ROOTMENU           = 0x09,
669*53ee8cc1Swenshuai.xi     E_MSG_UI_SETUP_MENU         = 0x0A,
670*53ee8cc1Swenshuai.xi     E_MSG_UI_CONTENTS_MENU      = 0x0B,
671*53ee8cc1Swenshuai.xi     E_MSG_UI_FAVORITE_MENU      = 0x0C,
672*53ee8cc1Swenshuai.xi     E_MSG_UI_EXIT               = 0x0D,
673*53ee8cc1Swenshuai.xi 
674*53ee8cc1Swenshuai.xi // 0x0E ~ 0x1F  reserved
675*53ee8cc1Swenshuai.xi 
676*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_0           = 0x20,
677*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_1           = 0x21,
678*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_2           = 0x22,
679*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_3           = 0x23,
680*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_4           = 0x24,
681*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_5           = 0x25,
682*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_6           = 0x26,
683*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_7           = 0x27,
684*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_8           = 0x28,
685*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_9           = 0x29,
686*53ee8cc1Swenshuai.xi 
687*53ee8cc1Swenshuai.xi     E_MSG_UI_DOT                = 0x2A,
688*53ee8cc1Swenshuai.xi     E_MSG_UI_ENTER              = 0x2B,
689*53ee8cc1Swenshuai.xi     E_MSG_UI_CLEAR              = 0x2C,
690*53ee8cc1Swenshuai.xi 
691*53ee8cc1Swenshuai.xi // 0x2D ~ 0x2E reserved
692*53ee8cc1Swenshuai.xi     E_MSG_UI_NEXT_FAVORITE      = 0x2F,
693*53ee8cc1Swenshuai.xi 
694*53ee8cc1Swenshuai.xi     E_MSG_UI_CHANNEL_UP         = 0x30,
695*53ee8cc1Swenshuai.xi     E_MSG_UI_CHANNEL_DOWN       = 0x31,
696*53ee8cc1Swenshuai.xi     E_MSG_UI_PREVIOUS_CHANNEL   = 0x32,
697*53ee8cc1Swenshuai.xi     E_MSG_UI_SOUND_SELECT       = 0x33,
698*53ee8cc1Swenshuai.xi     E_MSG_UI_INPUT_SELECT       = 0x34,
699*53ee8cc1Swenshuai.xi     E_MSG_UI_DISPLAY_INFO       = 0x35,
700*53ee8cc1Swenshuai.xi     E_MSG_UI_HELP               = 0x36,
701*53ee8cc1Swenshuai.xi     E_MSG_UI_PAGE_UP            = 0x37,
702*53ee8cc1Swenshuai.xi     E_MSG_UI_PAGE_DOWN          = 0x38,
703*53ee8cc1Swenshuai.xi 
704*53ee8cc1Swenshuai.xi // 0x39 ~ 0x3F reserved
705*53ee8cc1Swenshuai.xi 
706*53ee8cc1Swenshuai.xi     E_MSG_UI_POWER              = 0x40,
707*53ee8cc1Swenshuai.xi     E_MSG_UI_VOLUME_UP          = 0x41,
708*53ee8cc1Swenshuai.xi     E_MSG_UI_VOLUME_DOWN        = 0x42,
709*53ee8cc1Swenshuai.xi     E_MSG_UI_MUTE               = 0x43,
710*53ee8cc1Swenshuai.xi     E_MSG_UI_PLAY               = 0x44,
711*53ee8cc1Swenshuai.xi     E_MSG_UI_STOP               = 0x45,
712*53ee8cc1Swenshuai.xi     E_MSG_UI_PAUSE              = 0x46,
713*53ee8cc1Swenshuai.xi     E_MSG_UI_RECORD             = 0x47,
714*53ee8cc1Swenshuai.xi     E_MSG_UI_REWIND             = 0x48,
715*53ee8cc1Swenshuai.xi     E_MSG_UI_FAST_FORWARD       = 0x49,
716*53ee8cc1Swenshuai.xi     E_MSG_UI_EJECT              = 0x4A,
717*53ee8cc1Swenshuai.xi     E_MSG_UI_FORWARD            = 0x4B,
718*53ee8cc1Swenshuai.xi     E_MSG_UI_BACKWARD           = 0x4C,
719*53ee8cc1Swenshuai.xi     E_MSG_UI_STOP_RECORD        = 0x4D,
720*53ee8cc1Swenshuai.xi     E_MSG_UI_PAUSE_RECORD       = 0x4E,
721*53ee8cc1Swenshuai.xi 
722*53ee8cc1Swenshuai.xi // 0x4F reserved
723*53ee8cc1Swenshuai.xi 
724*53ee8cc1Swenshuai.xi     E_MSG_UI_ANGLE                      = 0x50,
725*53ee8cc1Swenshuai.xi     E_MSG_UI_SUB_PICTURE                = 0x51,
726*53ee8cc1Swenshuai.xi     E_MSG_UI_VIDEO_ON_DEMAND            = 0x52,
727*53ee8cc1Swenshuai.xi     E_MSG_UI_ELECTRONIC_PROGRAM_GUIDE   = 0x53,
728*53ee8cc1Swenshuai.xi     E_MSG_UI_TIMER_PROGRAMMING          = 0x54,
729*53ee8cc1Swenshuai.xi     E_MSG_UI_INITIAL_CONFIGURATION      = 0x55,
730*53ee8cc1Swenshuai.xi 
731*53ee8cc1Swenshuai.xi // 0x56 ~ 0x5F reserved
732*53ee8cc1Swenshuai.xi 
733*53ee8cc1Swenshuai.xi   //0x60 ~ 0x6D, identified as function
734*53ee8cc1Swenshuai.xi     E_MSG_UI_PLAY_FUN               = 0x60,
735*53ee8cc1Swenshuai.xi     E_MSG_UI_PSUSE_PLAY_FUN         = 0x61,
736*53ee8cc1Swenshuai.xi     E_MSG_UI_RECORD_FUN             = 0x62,
737*53ee8cc1Swenshuai.xi     E_MSG_UI_PAUSE_RECORD_FUN       = 0x63,
738*53ee8cc1Swenshuai.xi     E_MSG_UI_STOP_FUN               = 0x64,
739*53ee8cc1Swenshuai.xi     E_MSG_UI_MUTE_FUN               = 0x65,
740*53ee8cc1Swenshuai.xi     E_MSG_UI_RESTORE_VOLUME_FUN     = 0x66,
741*53ee8cc1Swenshuai.xi     E_MSG_UI_TUNE_FUN               = 0x67,
742*53ee8cc1Swenshuai.xi     E_MSG_UI_SELECT_MEDIA_FUN       = 0x68,
743*53ee8cc1Swenshuai.xi     E_MSG_UI_SELECT_AV_INPUT_FUN    = 0x69,
744*53ee8cc1Swenshuai.xi     E_MSG_UI_SELECT_AUDIO_INPUT_FUN = 0x6A,
745*53ee8cc1Swenshuai.xi     E_MSG_UI_POWER_TOGGLE_FUN       = 0x6B,
746*53ee8cc1Swenshuai.xi     E_MSG_UI_POWER_OFF_FUN          = 0x6C,
747*53ee8cc1Swenshuai.xi     E_MSG_UI_POWER_ON_FUN           = 0x6D,
748*53ee8cc1Swenshuai.xi 
749*53ee8cc1Swenshuai.xi // 0x6E ~ 0x70 reserved
750*53ee8cc1Swenshuai.xi 
751*53ee8cc1Swenshuai.xi     E_MSG_UI_F1_BLUE            = 0x71,
752*53ee8cc1Swenshuai.xi     E_MSG_UI_F2_RED             = 0x72,
753*53ee8cc1Swenshuai.xi     E_MSG_UI_F3_GREEN           = 0x73,
754*53ee8cc1Swenshuai.xi     E_MSG_UI_F4_YELLOW          = 0x74,
755*53ee8cc1Swenshuai.xi     E_MSG_UI_F5                 = 0x75,
756*53ee8cc1Swenshuai.xi     E_MSG_UI_DATA               = 0x76,
757*53ee8cc1Swenshuai.xi 
758*53ee8cc1Swenshuai.xi // 0x77 ~ 0xFF reserved
759*53ee8cc1Swenshuai.xi } MsCEC_MSG_USER_CTRL_PARM;
760*53ee8cc1Swenshuai.xi 
761*53ee8cc1Swenshuai.xi //query the power on mode through mailbox
762*53ee8cc1Swenshuai.xi #define CP_READ_POWERON_MODE  0x9A
763*53ee8cc1Swenshuai.xi 
764*53ee8cc1Swenshuai.xi //mailbox report CEC wake up system
765*53ee8cc1Swenshuai.xi #define M_POWER_ON_BY_HDMI_CEC  0x2F
766*53ee8cc1Swenshuai.xi 
767*53ee8cc1Swenshuai.xi 
768*53ee8cc1Swenshuai.xi typedef struct _MDrv_Cec_RxData_Info
769*53ee8cc1Swenshuai.xi {
770*53ee8cc1Swenshuai.xi     MS_U8 ucLength;
771*53ee8cc1Swenshuai.xi     MS_U8 tRxData[CEC_FIFO_DATA_NUMBER];
772*53ee8cc1Swenshuai.xi } MS_CEC_RxData_Info;
773*53ee8cc1Swenshuai.xi 
774*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
775*53ee8cc1Swenshuai.xi {
776*53ee8cc1Swenshuai.xi     MS_U8 CecFifoIdxS;
777*53ee8cc1Swenshuai.xi     MS_U8 CecFifoIdxE;
778*53ee8cc1Swenshuai.xi     MS_U8 bCecMsgCnt;
779*53ee8cc1Swenshuai.xi     MS_BOOL fCecInitFinish;
780*53ee8cc1Swenshuai.xi     MS_CEC_RxData_Info CecRxBuf[CEC_FIFO_NUM_COUNT];   //TV CEC H/W part
781*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA MyLogicalAddress;                         //TV related
782*53ee8cc1Swenshuai.xi     MS_U8 MyPhysicalAddress[CEC_PHY_ADDR_COUNT];
783*53ee8cc1Swenshuai.xi     MsCEC_DEVICE_TYPE MyDeviceType;
784*53ee8cc1Swenshuai.xi     MsCEC_MSG_POWER_STATUS_PARM MyPowerStatus;
785*53ee8cc1Swenshuai.xi     MS_BOOL CecDevicesExisted[15];
786*53ee8cc1Swenshuai.xi 
787*53ee8cc1Swenshuai.xi     MS_U8 ActiveDeviceCECVersion;
788*53ee8cc1Swenshuai.xi     MsCEC_DEVICE_TYPE ActiveDeviceType;
789*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA ActiveLogicalAddress;    //the remoter controller's active device
790*53ee8cc1Swenshuai.xi     MS_U8 ActivePhysicalAddress[CEC_PHY_ADDR_COUNT];
791*53ee8cc1Swenshuai.xi     MsCEC_MSG_POWER_STATUS_PARM ActivePowerStatus;
792*53ee8cc1Swenshuai.xi 
793*53ee8cc1Swenshuai.xi #if ENABLE_CEC_MULTIPLE
794*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA MyLogicalAddress2;
795*53ee8cc1Swenshuai.xi     MS_U8 MyPhysicalAddress2[CEC_PHY_ADDR_COUNT];
796*53ee8cc1Swenshuai.xi     MsCEC_DEVICE_TYPE MyDeviceType2;
797*53ee8cc1Swenshuai.xi     MsCEC_DEVICE_TYPE IniLogicalAddress;
798*53ee8cc1Swenshuai.xi #endif
799*53ee8cc1Swenshuai.xi } MS_CEC_INFO_LIST;
800*53ee8cc1Swenshuai.xi 
801*53ee8cc1Swenshuai.xi typedef struct
802*53ee8cc1Swenshuai.xi {
803*53ee8cc1Swenshuai.xi     MS_BOOL bAttachDrvISR;
804*53ee8cc1Swenshuai.xi     MS_U32 ulXTAL_CLK_Hz;
805*53ee8cc1Swenshuai.xi } stCEC_INITIAL_CONFIG;
806*53ee8cc1Swenshuai.xi 
807*53ee8cc1Swenshuai.xi typedef struct
808*53ee8cc1Swenshuai.xi {
809*53ee8cc1Swenshuai.xi     MS_BOOL bAttachDrvISR;
810*53ee8cc1Swenshuai.xi     MS_U32 ulXTAL_CLK_Hz;
811*53ee8cc1Swenshuai.xi     MS_U32 ulReturnValue;
812*53ee8cc1Swenshuai.xi } stCEC_INITIAL_CONFIG_INFO;
813*53ee8cc1Swenshuai.xi 
814*53ee8cc1Swenshuai.xi typedef enum
815*53ee8cc1Swenshuai.xi {
816*53ee8cc1Swenshuai.xi     E_CEC_CMD_ATTACH_DRIVER_ISR
817*53ee8cc1Swenshuai.xi }E_CEC_CTRL_ID;
818*53ee8cc1Swenshuai.xi 
819*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
820*53ee8cc1Swenshuai.xi /// Attach driver ISR or not
821*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_ToBeAdd
822*53ee8cc1Swenshuai.xi /// @param  bAttachDrvFlag       \b IN: true: attach driver ISR; false: no attach driver ISR
823*53ee8cc1Swenshuai.xi /// @return None
824*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
825*53ee8cc1Swenshuai.xi typedef struct
826*53ee8cc1Swenshuai.xi {
827*53ee8cc1Swenshuai.xi     MS_BOOL bAttachDrvFlag;
828*53ee8cc1Swenshuai.xi }stCMD_CEC_ATTACH_DRIVER_ISR;
829*53ee8cc1Swenshuai.xi 
830*53ee8cc1Swenshuai.xi typedef enum
831*53ee8cc1Swenshuai.xi {
832*53ee8cc1Swenshuai.xi     //CEC property
833*53ee8cc1Swenshuai.xi     MAPI_CMD_DDC2BI_GET_INFO,
834*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_INIT_CHIP,
835*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_PORT_SELECT,
836*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_EXIT,
837*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_SET_MY_LOGICAL_ADDRESS,
838*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_INIT,
839*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_CHECK_EXIST_DEVICES,
840*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_NEXT_DEVICE,
841*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_CHK_RX_BUF,
842*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_TX_SEND_MSG,
843*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_TX_SEND_MSG2,
844*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_TX_SEND_POLLING_MSG,
845*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_ACTIVE_SOURCE,
846*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_ROUTING_CHANGE,
847*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_REQ_ACTIVE_SOURCE,
848*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_SET_STREAM_PATH,
849*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_STANDBY,
850*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_RECORD_OFF,
851*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_RECORD_ON,
852*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_REPORT_CEC_VERSION,
853*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_REQ_CEC_VERSION,
854*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_REPORT_PHYCAL_ADDRESS,
855*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_REQ_PHYCAL_ADDRESS,
856*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_DECK_CONTROL,
857*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_DEC_STATUS,
858*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_GIVE_DECK_STATUS,
859*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_DC_PLAY,
860*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_REQ_MENU_STATUS,
861*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_USER_CTRL_PRESSED,
862*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_USER_CTRL_RELEASED,
863*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_GIVE_AUDIO_STATUS,
864*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_REPORT_POWER_STATUS,
865*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_REQ_POWER_STATUS,
866*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_FEATURE_ABORT,
867*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_ABORT,
868*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_SEND_MENU_LANGUAGE,
869*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_REQ_ARC_INITIATION,
870*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_REQ_ARC_TERMINATION,
871*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_AUDIO_MODE_REQ,
872*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_MSG_REPORT_PHYCAL_ADDRESS2,
873*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_CHECK_FRAME,
874*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_CONFIG_WAKEUP,
875*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_ENABLED,
876*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_GET_TX_STATUS,
877*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_SET_POWER_STATE,
878*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_SET_MY_LOGICAL_ADDRESS2,
879*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_GET_HEADER,  // API TO DRV
880*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_GET_OPCODE,
881*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_GET_PARA,
882*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_GET_CMD_LEN,
883*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_IS_RX_BUF_EMPTY,
884*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_SET_ACTIVE_LOGICAL_ADDRESS,
885*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_GET_ACTIVE_LOGICAL_ADDRESS,
886*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_GET_POWER_STATUS,
887*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_GET_FIFO_IDX,
888*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_SET_FIFO_IDX,
889*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_SET_ACTIVE_POWER_STATUS,
890*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_GET_ACTIVE_POWER_STATUS,
891*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_SET_ACTIVE_PHYSICAL_ADDRESS,
892*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_SET_ACTIVE_DEVICE_CEC_VERSION,
893*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_SET_ACTIVE_DEVICE_TYPE,
894*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_GET_MSG_CNT,
895*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_SET_MSG_CNT,
896*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_GET_RX_DATA,
897*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_SET_MY_PHYSICAL_ADDRESS,
898*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_SET_MY_PHYSICAL_ADDRESS2,
899*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_SET_INITIATOR,
900*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_CHECK_DEVICE_IS_TX,
901*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_CONFIG_WAKEUP_INFO_VENDOR_ID,
902*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_SET_RETRY_COUNT,
903*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_ATTACH_DRIVER_ISR,
904*53ee8cc1Swenshuai.xi     MAPI_CMD_CEC_GET_CONFIGURATION,
905*53ee8cc1Swenshuai.xi }E_CEC_API_CMD_TYPE;
906*53ee8cc1Swenshuai.xi 
907*53ee8cc1Swenshuai.xi typedef struct
908*53ee8cc1Swenshuai.xi {
909*53ee8cc1Swenshuai.xi     MS_U32 u32XTAL_CLK_Hz;
910*53ee8cc1Swenshuai.xi }MS_CEC_INIT_INFO;
911*53ee8cc1Swenshuai.xi 
912*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
913*53ee8cc1Swenshuai.xi {
914*53ee8cc1Swenshuai.xi     MS_CEC_INFO_LIST *eInfo;
915*53ee8cc1Swenshuai.xi     MS_BOOL bGetInfo;
916*53ee8cc1Swenshuai.xi } stCEC_DDC2BI_GET_INFO, *pstCEC_DDC2BI_GET_INFO;
917*53ee8cc1Swenshuai.xi 
918*53ee8cc1Swenshuai.xi typedef struct
919*53ee8cc1Swenshuai.xi {
920*53ee8cc1Swenshuai.xi     MS_U32 u32XTAL_CLK_Hz;
921*53ee8cc1Swenshuai.xi } stCEC_INIT_CHIP, *pstCEC_INIT_CHIP;
922*53ee8cc1Swenshuai.xi 
923*53ee8cc1Swenshuai.xi typedef struct
924*53ee8cc1Swenshuai.xi {
925*53ee8cc1Swenshuai.xi     MsCEC_INPUT_PORT InputPort;
926*53ee8cc1Swenshuai.xi } stCEC_PORT_SELECT, *pstCEC_PORT_SELECT;
927*53ee8cc1Swenshuai.xi 
928*53ee8cc1Swenshuai.xi typedef struct
929*53ee8cc1Swenshuai.xi {
930*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA myLA;
931*53ee8cc1Swenshuai.xi } stCEC_SET_MY_LOGICAL_ADDRESS, *pstCEC_SET_MY_LOGICAL_ADDRESS;
932*53ee8cc1Swenshuai.xi 
933*53ee8cc1Swenshuai.xi typedef struct
934*53ee8cc1Swenshuai.xi {
935*53ee8cc1Swenshuai.xi     MS_U32 u32XTAL_CLK_Hz;
936*53ee8cc1Swenshuai.xi } stCEC_INIT, *pstCEC_INIT;
937*53ee8cc1Swenshuai.xi 
938*53ee8cc1Swenshuai.xi typedef struct
939*53ee8cc1Swenshuai.xi {
940*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eNextDeviceLA;
941*53ee8cc1Swenshuai.xi } stCEC_NEXT_DEVICE, *pstCEC_NEXT_DEVICE;
942*53ee8cc1Swenshuai.xi 
943*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
944*53ee8cc1Swenshuai.xi {
945*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
946*53ee8cc1Swenshuai.xi     MsCEC_MSGLIST eMsg;
947*53ee8cc1Swenshuai.xi     MS_U8 *ucCmd;
948*53ee8cc1Swenshuai.xi     MS_U8 ucLen;
949*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
950*53ee8cc1Swenshuai.xi } stCEC_TX_SEND_MSG, *pstCEC_TX_SEND_MSG;
951*53ee8cc1Swenshuai.xi 
952*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
953*53ee8cc1Swenshuai.xi {
954*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
955*53ee8cc1Swenshuai.xi     MsCEC_MSGLIST eMsg;
956*53ee8cc1Swenshuai.xi     MS_U8 *ucCmd;
957*53ee8cc1Swenshuai.xi     MS_U8 ucLen;
958*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
959*53ee8cc1Swenshuai.xi } stCEC_TX_SEND_MSG2, *pstCEC_TX_SEND_MSG2;
960*53ee8cc1Swenshuai.xi 
961*53ee8cc1Swenshuai.xi typedef struct
962*53ee8cc1Swenshuai.xi {
963*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
964*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
965*53ee8cc1Swenshuai.xi } stCEC_TX_SEND_POLLING_MSG, *pstCEC_TX_SEND_POLLING_MSG;
966*53ee8cc1Swenshuai.xi 
967*53ee8cc1Swenshuai.xi typedef struct
968*53ee8cc1Swenshuai.xi {
969*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
970*53ee8cc1Swenshuai.xi } stCEC_MSG_ACTIVE_SOURCE, *pstCEC_MSG_ACTIVE_SOURCE;
971*53ee8cc1Swenshuai.xi 
972*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
973*53ee8cc1Swenshuai.xi {
974*53ee8cc1Swenshuai.xi     MS_U8 *ucOrigAddr;
975*53ee8cc1Swenshuai.xi     MS_U8 *ucNewAddr;
976*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
977*53ee8cc1Swenshuai.xi } stCEC_MSG_ROUTING_CHANGE, *pstCEC_MSG_ROUTING_CHANGE;
978*53ee8cc1Swenshuai.xi 
979*53ee8cc1Swenshuai.xi typedef struct
980*53ee8cc1Swenshuai.xi {
981*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
982*53ee8cc1Swenshuai.xi } stCEC_MSG_REQ_ACTIVE_SOURCE, *pstCEC_MSG_REQ_ACTIVE_SOURCE;
983*53ee8cc1Swenshuai.xi 
984*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
985*53ee8cc1Swenshuai.xi {
986*53ee8cc1Swenshuai.xi     MS_U8 *ucNewAddr;
987*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
988*53ee8cc1Swenshuai.xi } stCEC_MSG_SET_STREAM_PATH, *pstCEC_MSG_SET_STREAM_PATH;
989*53ee8cc1Swenshuai.xi 
990*53ee8cc1Swenshuai.xi typedef struct
991*53ee8cc1Swenshuai.xi {
992*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
993*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
994*53ee8cc1Swenshuai.xi } stCEC_MSG_STANDBY, *pstCEC_MSG_STANDBY;
995*53ee8cc1Swenshuai.xi 
996*53ee8cc1Swenshuai.xi typedef struct
997*53ee8cc1Swenshuai.xi {
998*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
999*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1000*53ee8cc1Swenshuai.xi } stCEC_MSG_RECORD_OFF, *pstCEC_MSG_RECORD_OFF;
1001*53ee8cc1Swenshuai.xi 
1002*53ee8cc1Swenshuai.xi typedef struct
1003*53ee8cc1Swenshuai.xi {
1004*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
1005*53ee8cc1Swenshuai.xi     MsCEC_MSG_RECORD_SOURCE_TYPE eCmd;
1006*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1007*53ee8cc1Swenshuai.xi } stCEC_MSG_RECORD_ON, *pstCEC_MSG_RECORD_ON;
1008*53ee8cc1Swenshuai.xi 
1009*53ee8cc1Swenshuai.xi typedef struct
1010*53ee8cc1Swenshuai.xi {
1011*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
1012*53ee8cc1Swenshuai.xi     MS_U8 ucVersion;
1013*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1014*53ee8cc1Swenshuai.xi } stCEC_MSG_REPORT_CEC_VERSION, *pstCEC_MSG_REPORT_CEC_VERSION;
1015*53ee8cc1Swenshuai.xi 
1016*53ee8cc1Swenshuai.xi typedef struct
1017*53ee8cc1Swenshuai.xi {
1018*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
1019*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1020*53ee8cc1Swenshuai.xi } stCEC_MSG_REQ_CEC_VERSION, *pstCEC_MSG_REQ_CEC_VERSION;
1021*53ee8cc1Swenshuai.xi 
1022*53ee8cc1Swenshuai.xi typedef struct
1023*53ee8cc1Swenshuai.xi {
1024*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1025*53ee8cc1Swenshuai.xi } stCEC_MSG_REPORT_PHYCAL_ADDRESS, *pstCEC_MSG_REPORT_PHYCAL_ADDRESS;
1026*53ee8cc1Swenshuai.xi 
1027*53ee8cc1Swenshuai.xi typedef struct
1028*53ee8cc1Swenshuai.xi {
1029*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
1030*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1031*53ee8cc1Swenshuai.xi } stCEC_MSG_REQ_PHYCAL_ADDRESS, *pstCEC_MSG_REQ_PHYCAL_ADDRESS;
1032*53ee8cc1Swenshuai.xi 
1033*53ee8cc1Swenshuai.xi typedef struct
1034*53ee8cc1Swenshuai.xi {
1035*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
1036*53ee8cc1Swenshuai.xi     MsCEC_MSG_DC_DECK_CTRL_PARM eCmd;
1037*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1038*53ee8cc1Swenshuai.xi } stCEC_MSG_DECK_CONTROL, *pstCEC_MSG_DECK_CONTROL;
1039*53ee8cc1Swenshuai.xi 
1040*53ee8cc1Swenshuai.xi typedef struct
1041*53ee8cc1Swenshuai.xi {
1042*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
1043*53ee8cc1Swenshuai.xi     MsCEC_MSG_DC_DECK_STATUS_PARM eCmd;
1044*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1045*53ee8cc1Swenshuai.xi } stCEC_MSG_DEC_STATUS, *pstCEC_MSG_DEC_STATUS;
1046*53ee8cc1Swenshuai.xi 
1047*53ee8cc1Swenshuai.xi typedef struct
1048*53ee8cc1Swenshuai.xi {
1049*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
1050*53ee8cc1Swenshuai.xi     MsCEC_MSG_STATUS_REQUEST_PARM eCmd;
1051*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1052*53ee8cc1Swenshuai.xi } stCEC_MSG_GIVE_DECK_STATUS, *pstCEC_MSG_GIVE_DECK_STATUS;
1053*53ee8cc1Swenshuai.xi 
1054*53ee8cc1Swenshuai.xi typedef struct
1055*53ee8cc1Swenshuai.xi {
1056*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
1057*53ee8cc1Swenshuai.xi     MsCEC_MSG_DC_PLAY_PARM eCmd;
1058*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1059*53ee8cc1Swenshuai.xi } stCEC_MSG_DC_PLAY, *pstCEC_MSG_DC_PLAY;
1060*53ee8cc1Swenshuai.xi 
1061*53ee8cc1Swenshuai.xi typedef struct
1062*53ee8cc1Swenshuai.xi {
1063*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
1064*53ee8cc1Swenshuai.xi     MsCEC_MSG_MENU_REQ_TYPE eCmd;
1065*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1066*53ee8cc1Swenshuai.xi } stCEC_MSG_REQ_MENU_STATUS, *pstCEC_MSG_REQ_MENU_STATUS;
1067*53ee8cc1Swenshuai.xi 
1068*53ee8cc1Swenshuai.xi typedef struct
1069*53ee8cc1Swenshuai.xi {
1070*53ee8cc1Swenshuai.xi     MS_BOOL bUserCtrlEn;
1071*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
1072*53ee8cc1Swenshuai.xi     MsCEC_MSG_USER_CTRL_PARM eCmd;
1073*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1074*53ee8cc1Swenshuai.xi } stCEC_MSG_USER_CTRL_PRESSED, *pstCEC_MSG_USER_CTRL_PRESSED;
1075*53ee8cc1Swenshuai.xi 
1076*53ee8cc1Swenshuai.xi typedef struct
1077*53ee8cc1Swenshuai.xi {
1078*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
1079*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1080*53ee8cc1Swenshuai.xi } stCEC_MSG_USER_CTRL_RELEASED, *pstCEC_MSG_USER_CTRL_RELEASED;
1081*53ee8cc1Swenshuai.xi 
1082*53ee8cc1Swenshuai.xi typedef struct
1083*53ee8cc1Swenshuai.xi {
1084*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
1085*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1086*53ee8cc1Swenshuai.xi } stCEC_MSG_GIVE_AUDIO_STATUS, *pstCEC_MSG_GIVE_AUDIO_STATUS;
1087*53ee8cc1Swenshuai.xi 
1088*53ee8cc1Swenshuai.xi typedef struct
1089*53ee8cc1Swenshuai.xi {
1090*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
1091*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1092*53ee8cc1Swenshuai.xi } stCEC_MSG_REPORT_POWER_STATUS, *pstCEC_MSG_REPORT_POWER_STATUS;
1093*53ee8cc1Swenshuai.xi 
1094*53ee8cc1Swenshuai.xi typedef struct
1095*53ee8cc1Swenshuai.xi {
1096*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
1097*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1098*53ee8cc1Swenshuai.xi } stCEC_MSG_REQ_POWER_STATUS, *pstCEC_MSG_REQ_POWER_STATUS;
1099*53ee8cc1Swenshuai.xi 
1100*53ee8cc1Swenshuai.xi typedef struct
1101*53ee8cc1Swenshuai.xi {
1102*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
1103*53ee8cc1Swenshuai.xi     MsCEC_MSGLIST eMsg;
1104*53ee8cc1Swenshuai.xi     MsCEC_MSG_ABORT_REASON eCmd;
1105*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1106*53ee8cc1Swenshuai.xi } stCEC_MSG_FEATURE_ABORT, *pstCEC_MSG_FEATURE_ABORT;
1107*53ee8cc1Swenshuai.xi 
1108*53ee8cc1Swenshuai.xi typedef struct
1109*53ee8cc1Swenshuai.xi {
1110*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
1111*53ee8cc1Swenshuai.xi     MsCEC_MSGLIST eMsg;
1112*53ee8cc1Swenshuai.xi     MsCEC_MSG_ABORT_REASON eCmd;
1113*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1114*53ee8cc1Swenshuai.xi } stCEC_MSG_ABORT, *pstCEC_MSG_ABORT;
1115*53ee8cc1Swenshuai.xi 
1116*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
1117*53ee8cc1Swenshuai.xi {
1118*53ee8cc1Swenshuai.xi     MS_U8 *pu8MenulanguageCode;
1119*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1120*53ee8cc1Swenshuai.xi } stCEC_MSG_SEND_MENU_LANGUAGE, *pstCEC_MSG_SEND_MENU_LANGUAGE;
1121*53ee8cc1Swenshuai.xi 
1122*53ee8cc1Swenshuai.xi typedef struct
1123*53ee8cc1Swenshuai.xi {
1124*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
1125*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1126*53ee8cc1Swenshuai.xi } stCEC_MSG_REQ_ARC_INITIATION, *pstCEC_MSG_REQ_ARC_INITIATION;
1127*53ee8cc1Swenshuai.xi 
1128*53ee8cc1Swenshuai.xi typedef struct
1129*53ee8cc1Swenshuai.xi {
1130*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
1131*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1132*53ee8cc1Swenshuai.xi } stCEC_MSG_REQ_ARC_TERMINATION, *pstCEC_MSG_REQ_ARC_TERMINATION;
1133*53ee8cc1Swenshuai.xi 
1134*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
1135*53ee8cc1Swenshuai.xi {
1136*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eDetAddr;
1137*53ee8cc1Swenshuai.xi     MS_BOOL bAmpSwitch;
1138*53ee8cc1Swenshuai.xi     MS_U8 *ucMyAddress;
1139*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1140*53ee8cc1Swenshuai.xi } stCEC_MSG_AUDIO_MODE_REQ, *pstCEC_MSG_AUDIO_MODE_REQ;
1141*53ee8cc1Swenshuai.xi 
1142*53ee8cc1Swenshuai.xi typedef struct
1143*53ee8cc1Swenshuai.xi {
1144*53ee8cc1Swenshuai.xi     CEC_ERROR_CODE eErrorCode;
1145*53ee8cc1Swenshuai.xi } stCEC_MSG_REPORT_PHYCAL_ADDRESS2, *pstCEC_MSG_REPORT_PHYCAL_ADDRESS2;
1146*53ee8cc1Swenshuai.xi 
1147*53ee8cc1Swenshuai.xi typedef struct
1148*53ee8cc1Swenshuai.xi {
1149*53ee8cc1Swenshuai.xi     MsCEC_MSG_TRANS_TYPE eMsgType;
1150*53ee8cc1Swenshuai.xi     MS_U8 ucLen;
1151*53ee8cc1Swenshuai.xi     MS_BOOL bValid;
1152*53ee8cc1Swenshuai.xi } stCEC_CHECK_FRAME, *pstCEC_CHECK_FRAME;
1153*53ee8cc1Swenshuai.xi 
1154*53ee8cc1Swenshuai.xi typedef struct
1155*53ee8cc1Swenshuai.xi {
1156*53ee8cc1Swenshuai.xi     MS_BOOL bEnableFlag;
1157*53ee8cc1Swenshuai.xi } stCEC_ENABLED, *pstCEC_ENABLED;
1158*53ee8cc1Swenshuai.xi 
1159*53ee8cc1Swenshuai.xi typedef struct
1160*53ee8cc1Swenshuai.xi {
1161*53ee8cc1Swenshuai.xi     MS_U8 ucTxStatus;
1162*53ee8cc1Swenshuai.xi } stCEC_GET_TX_STATUS, *pstCEC_GET_TX_STATUS;
1163*53ee8cc1Swenshuai.xi 
1164*53ee8cc1Swenshuai.xi typedef struct
1165*53ee8cc1Swenshuai.xi {
1166*53ee8cc1Swenshuai.xi     MS_BOOL bIsTx;
1167*53ee8cc1Swenshuai.xi } stCEC_DEVICE_IS_TX, *pstCEC_DEVICE_IS_TX;
1168*53ee8cc1Swenshuai.xi 
1169*53ee8cc1Swenshuai.xi typedef struct
1170*53ee8cc1Swenshuai.xi {
1171*53ee8cc1Swenshuai.xi     EN_POWER_MODE ePowerState;
1172*53ee8cc1Swenshuai.xi     MS_U32 u32Status;
1173*53ee8cc1Swenshuai.xi } stCEC_SET_POWER_STATE, *pstCEC_SET_POWER_STATE;
1174*53ee8cc1Swenshuai.xi 
1175*53ee8cc1Swenshuai.xi typedef struct
1176*53ee8cc1Swenshuai.xi {
1177*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA myLA;
1178*53ee8cc1Swenshuai.xi } stCEC_SET_MY_LOGICAL_ADDRESS2, *pstCEC_SET_MY_LOGICAL_ADDRESS2;
1179*53ee8cc1Swenshuai.xi 
1180*53ee8cc1Swenshuai.xi // API TO DRV
1181*53ee8cc1Swenshuai.xi typedef struct
1182*53ee8cc1Swenshuai.xi {
1183*53ee8cc1Swenshuai.xi     MS_U8 ucValue;
1184*53ee8cc1Swenshuai.xi } stCEC_GET_HEADER, *pstCEC_GET_HEADER;
1185*53ee8cc1Swenshuai.xi 
1186*53ee8cc1Swenshuai.xi typedef struct
1187*53ee8cc1Swenshuai.xi {
1188*53ee8cc1Swenshuai.xi     MS_U8 ucValue;
1189*53ee8cc1Swenshuai.xi } stCEC_GET_OPCODE, *pstCEC_GET_OPCODE;
1190*53ee8cc1Swenshuai.xi 
1191*53ee8cc1Swenshuai.xi typedef struct
1192*53ee8cc1Swenshuai.xi {
1193*53ee8cc1Swenshuai.xi     MS_U8 ucIdx;
1194*53ee8cc1Swenshuai.xi     MS_U8 ucValue;
1195*53ee8cc1Swenshuai.xi } stCEC_GET_PARA, *pstCEC_GET_PARA;
1196*53ee8cc1Swenshuai.xi 
1197*53ee8cc1Swenshuai.xi typedef struct
1198*53ee8cc1Swenshuai.xi {
1199*53ee8cc1Swenshuai.xi     MS_U8 ucValue;
1200*53ee8cc1Swenshuai.xi } stCEC_GET_CMD_LEN, *pstCEC_GET_CMD_LEN;
1201*53ee8cc1Swenshuai.xi 
1202*53ee8cc1Swenshuai.xi typedef struct
1203*53ee8cc1Swenshuai.xi {
1204*53ee8cc1Swenshuai.xi     MS_BOOL bEmpty;
1205*53ee8cc1Swenshuai.xi } stCEC_IS_RX_BUF_EMPTY, *pstCEC_IS_RX_BUF_EMPTY;
1206*53ee8cc1Swenshuai.xi 
1207*53ee8cc1Swenshuai.xi typedef struct
1208*53ee8cc1Swenshuai.xi {
1209*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eAddr;
1210*53ee8cc1Swenshuai.xi } stCEC_SET_ACTIVE_LOGICAL_ADDRESS, *pstCEC_SET_ACTIVE_LOGICAL_ADDRESS;
1211*53ee8cc1Swenshuai.xi 
1212*53ee8cc1Swenshuai.xi typedef struct
1213*53ee8cc1Swenshuai.xi {
1214*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eAddr;
1215*53ee8cc1Swenshuai.xi } stCEC_GET_ACTIVE_LOGICAL_ADDRESS, *pstCEC_GET_ACTIVE_LOGICAL_ADDRESS;
1216*53ee8cc1Swenshuai.xi 
1217*53ee8cc1Swenshuai.xi typedef struct
1218*53ee8cc1Swenshuai.xi {
1219*53ee8cc1Swenshuai.xi     MsCEC_MSG_POWER_STATUS_PARM ePowerStatus;
1220*53ee8cc1Swenshuai.xi } stCEC_GET_POWER_STATUS, *pstCEC_GET_POWER_STATUS;
1221*53ee8cc1Swenshuai.xi 
1222*53ee8cc1Swenshuai.xi typedef struct
1223*53ee8cc1Swenshuai.xi {
1224*53ee8cc1Swenshuai.xi     MS_U8 ucFifoIdx;
1225*53ee8cc1Swenshuai.xi } stCEC_GET_FIFO_IDX, *pstCEC_GET_FIFO_IDX;
1226*53ee8cc1Swenshuai.xi 
1227*53ee8cc1Swenshuai.xi typedef struct
1228*53ee8cc1Swenshuai.xi {
1229*53ee8cc1Swenshuai.xi     MS_U8 ucIdx;
1230*53ee8cc1Swenshuai.xi } stCEC_SET_FIFO_IDX, *pstCEC_SET_FIFO_IDX;
1231*53ee8cc1Swenshuai.xi 
1232*53ee8cc1Swenshuai.xi typedef struct
1233*53ee8cc1Swenshuai.xi {
1234*53ee8cc1Swenshuai.xi     MsCEC_MSG_POWER_STATUS_PARM eStatus;
1235*53ee8cc1Swenshuai.xi } stCEC_SET_ACTIVE_POWER_STATUS, *pstCEC_SET_ACTIVE_POWER_STATUS;
1236*53ee8cc1Swenshuai.xi 
1237*53ee8cc1Swenshuai.xi typedef struct
1238*53ee8cc1Swenshuai.xi {
1239*53ee8cc1Swenshuai.xi     MsCEC_MSG_POWER_STATUS_PARM ePowerStatus;
1240*53ee8cc1Swenshuai.xi } stCEC_GET_ACTIVE_POWER_STATUS, *pstCEC_GET_ACTIVE_POWER_STATUS;
1241*53ee8cc1Swenshuai.xi 
1242*53ee8cc1Swenshuai.xi typedef struct
1243*53ee8cc1Swenshuai.xi {
1244*53ee8cc1Swenshuai.xi     MS_U8 ucPara1;
1245*53ee8cc1Swenshuai.xi     MS_U8 ucPara2;
1246*53ee8cc1Swenshuai.xi } stCEC_SET_ACTIVE_PHYSICAL_ADDRESS, *pstCEC_SET_ACTIVE_PHYSICAL_ADDRESS;
1247*53ee8cc1Swenshuai.xi 
1248*53ee8cc1Swenshuai.xi typedef struct
1249*53ee8cc1Swenshuai.xi {
1250*53ee8cc1Swenshuai.xi     MS_U8 ucVer;
1251*53ee8cc1Swenshuai.xi } stCEC_SET_ACTIVE_DEVICE_CEC_VERSION, *pstCEC_SET_ACTIVE_DEVICE_CEC_VERSION;
1252*53ee8cc1Swenshuai.xi 
1253*53ee8cc1Swenshuai.xi typedef struct
1254*53ee8cc1Swenshuai.xi {
1255*53ee8cc1Swenshuai.xi     MsCEC_DEVICE_TYPE eType;
1256*53ee8cc1Swenshuai.xi } stCEC_SET_ACTIVE_DEVICE_TYPE, *pstCEC_SET_ACTIVE_DEVICE_TYPE;
1257*53ee8cc1Swenshuai.xi 
1258*53ee8cc1Swenshuai.xi typedef struct
1259*53ee8cc1Swenshuai.xi {
1260*53ee8cc1Swenshuai.xi     MS_U8 ucMsgCnt;
1261*53ee8cc1Swenshuai.xi } stCEC_GET_MSG_CNT, *pstCEC_GET_MSG_CNT;
1262*53ee8cc1Swenshuai.xi 
1263*53ee8cc1Swenshuai.xi typedef struct
1264*53ee8cc1Swenshuai.xi {
1265*53ee8cc1Swenshuai.xi     MS_U8 ucCnt;
1266*53ee8cc1Swenshuai.xi } stCEC_SET_MSG_CNT, *pstCEC_SET_MSG_CNT;
1267*53ee8cc1Swenshuai.xi 
1268*53ee8cc1Swenshuai.xi typedef struct
1269*53ee8cc1Swenshuai.xi {
1270*53ee8cc1Swenshuai.xi     MS_U8 ucFifoIdx;
1271*53ee8cc1Swenshuai.xi     MS_U8 ucIdx;
1272*53ee8cc1Swenshuai.xi     MS_U8 ucRxData;
1273*53ee8cc1Swenshuai.xi } stCEC_GET_RX_DATA, *pstCEC_GET_RX_DATA;
1274*53ee8cc1Swenshuai.xi 
1275*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
1276*53ee8cc1Swenshuai.xi {
1277*53ee8cc1Swenshuai.xi     MS_U8 *ucData;
1278*53ee8cc1Swenshuai.xi } stCEC_SET_MY_PHYSICAL_ADDRESS, *pstCEC_SET_MY_PHYSICAL_ADDRESS;
1279*53ee8cc1Swenshuai.xi 
1280*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
1281*53ee8cc1Swenshuai.xi {
1282*53ee8cc1Swenshuai.xi     MS_U8 *ucData;
1283*53ee8cc1Swenshuai.xi } stCEC_SET_MY_PHYSICAL_ADDRESS2, *pstCEC_SET_MY_PHYSICAL_ADDRESS2;
1284*53ee8cc1Swenshuai.xi 
1285*53ee8cc1Swenshuai.xi typedef struct
1286*53ee8cc1Swenshuai.xi {
1287*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA eIniLa;
1288*53ee8cc1Swenshuai.xi } stCEC_SET_INITIATOR, *pstCEC_SET_INITIATOR;
1289*53ee8cc1Swenshuai.xi 
1290*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
1291*53ee8cc1Swenshuai.xi {
1292*53ee8cc1Swenshuai.xi     MS_U8 *ucVendorID;
1293*53ee8cc1Swenshuai.xi } stCEC_CONFIG_WAKEUP_INFO_VENDOR_ID, *pstCEC_CONFIG_WAKEUP_INFO_VENDOR_ID;
1294*53ee8cc1Swenshuai.xi 
1295*53ee8cc1Swenshuai.xi typedef struct
1296*53ee8cc1Swenshuai.xi {
1297*53ee8cc1Swenshuai.xi     MS_U8 ucRetryCount;
1298*53ee8cc1Swenshuai.xi } stCEC_SET_RETRY_COUNT, *pstCEC_SET_RETRY_COUNT;
1299*53ee8cc1Swenshuai.xi 
1300*53ee8cc1Swenshuai.xi typedef struct
1301*53ee8cc1Swenshuai.xi {
1302*53ee8cc1Swenshuai.xi     MS_BOOL bAttachDrvFlag;
1303*53ee8cc1Swenshuai.xi }stCEC_ATTACH_DRIVER_ISR, *pstCEC_ATTACH_DRIVER_ISR;
1304*53ee8cc1Swenshuai.xi 
1305*53ee8cc1Swenshuai.xi typedef struct
1306*53ee8cc1Swenshuai.xi {
1307*53ee8cc1Swenshuai.xi     stCEC_INITIAL_CONFIG_INFO stInitialConfigInfo;
1308*53ee8cc1Swenshuai.xi } stCEC_GET_CONFIGURATION, *pstCEC_GET_CONFIGURATION;
1309*53ee8cc1Swenshuai.xi 
1310*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------
1311*53ee8cc1Swenshuai.xi 
1312*53ee8cc1Swenshuai.xi typedef struct
1313*53ee8cc1Swenshuai.xi {
1314*53ee8cc1Swenshuai.xi     MS_BOOL bIsInitialized;
1315*53ee8cc1Swenshuai.xi     MS_BOOL bIsRunning;
1316*53ee8cc1Swenshuai.xi }MS_CEC_Status;
1317*53ee8cc1Swenshuai.xi 
1318*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1319*53ee8cc1Swenshuai.xi //  Function and Variable
1320*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1321*53ee8cc1Swenshuai.xi /**
1322*53ee8cc1Swenshuai.xi *   @brief HDMI Status
1323*53ee8cc1Swenshuai.xi */
1324*53ee8cc1Swenshuai.xi 
1325*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1326*53ee8cc1Swenshuai.xi /// Assign which HDMI port connect to CEC
1327*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1328*53ee8cc1Swenshuai.xi /// @param  InputPort          \b IN: CEC connect port
1329*53ee8cc1Swenshuai.xi /// @return None
1330*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1331*53ee8cc1Swenshuai.xi void SYMBOL_WEAK MApi_CEC_PortSelcet(MsCEC_INPUT_PORT InputPort); // Select CEC bank mapping
1332*53ee8cc1Swenshuai.xi 
1333*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1334*53ee8cc1Swenshuai.xi /// Get version (without Mutex protect)
1335*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1336*53ee8cc1Swenshuai.xi /// @param  ppVersion          \b IN: version
1337*53ee8cc1Swenshuai.xi /// @return TRUE: have version
1338*53ee8cc1Swenshuai.xi /// @return FALSE: no version
1339*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1340*53ee8cc1Swenshuai.xi MS_BOOL MApi_CEC_GetLibVer(const MSIF_Version **ppVersion);      ///< Get version (without Mutex protect)
1341*53ee8cc1Swenshuai.xi 
1342*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1343*53ee8cc1Swenshuai.xi /// Get cec info
1344*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1345*53ee8cc1Swenshuai.xi /// @param  pInfo          \b IN: info list
1346*53ee8cc1Swenshuai.xi /// @return TRUE: have info list
1347*53ee8cc1Swenshuai.xi /// @return FALSE: no info list
1348*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1349*53ee8cc1Swenshuai.xi MS_BOOL MApi_DDC2BI_GetInfo(MS_CEC_INFO_LIST *pInfo);
1350*53ee8cc1Swenshuai.xi 
1351*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1352*53ee8cc1Swenshuai.xi /// Get cec status
1353*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1354*53ee8cc1Swenshuai.xi /// @param  pStatus          \b IN: status
1355*53ee8cc1Swenshuai.xi /// @return TRUE: have status
1356*53ee8cc1Swenshuai.xi /// @return FALSE: no status
1357*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1358*53ee8cc1Swenshuai.xi MS_BOOL MApi_DDC2BI_GetStatus(MS_CEC_Status *pStatus);
1359*53ee8cc1Swenshuai.xi 
1360*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1361*53ee8cc1Swenshuai.xi /// Set debug level
1362*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1363*53ee8cc1Swenshuai.xi /// @param  u16DbgSwitch          \b IN: switch or not
1364*53ee8cc1Swenshuai.xi /// @return TRUE: do switch
1365*53ee8cc1Swenshuai.xi /// @return FALSE: no switch
1366*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1367*53ee8cc1Swenshuai.xi MS_BOOL MApi_DDC2BI_SetDbgLevel(MS_U16 u16DbgSwitch);
1368*53ee8cc1Swenshuai.xi 
1369*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1370*53ee8cc1Swenshuai.xi /// CEC do not work
1371*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1372*53ee8cc1Swenshuai.xi /// @return None
1373*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------
1374*53ee8cc1Swenshuai.xi void MApi_CEC_Exit(void); // Mask CEC interrupt and release CEC
1375*53ee8cc1Swenshuai.xi 
1376*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1377*53ee8cc1Swenshuai.xi /// CEC initial sequence
1378*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1379*53ee8cc1Swenshuai.xi /// @param  pCECInfo          \b IN: CEC info
1380*53ee8cc1Swenshuai.xi /// @return None
1381*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1382*53ee8cc1Swenshuai.xi void MApi_CEC_Init(MS_CEC_INIT_INFO *pCECInfo); // CEC initial sequence
1383*53ee8cc1Swenshuai.xi 
1384*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1385*53ee8cc1Swenshuai.xi /// CEC initial chip relatived part
1386*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1387*53ee8cc1Swenshuai.xi /// @param  pCECInfo          \b IN: CEC info
1388*53ee8cc1Swenshuai.xi /// @return None
1389*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1390*53ee8cc1Swenshuai.xi void MApi_CEC_InitChip(MS_CEC_INIT_INFO *pCECInfo); // CEC initial chip relatived part
1391*53ee8cc1Swenshuai.xi 
1392*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1393*53ee8cc1Swenshuai.xi /// CEC set own logical address
1394*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1395*53ee8cc1Swenshuai.xi /// @param  myLA          \b IN: logical address
1396*53ee8cc1Swenshuai.xi /// @return None
1397*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1398*53ee8cc1Swenshuai.xi void MApi_CEC_SetMyLogicalAddress(MsCEC_DEVICELA myLA); // CEC set own logical address
1399*53ee8cc1Swenshuai.xi 
1400*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1401*53ee8cc1Swenshuai.xi /// Use to store CEC received messages
1402*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1403*53ee8cc1Swenshuai.xi /// @return None
1404*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------
1405*53ee8cc1Swenshuai.xi void MApi_CEC_ChkRxBuf(void); // Use to store CEC received messages
1406*53ee8cc1Swenshuai.xi 
1407*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1408*53ee8cc1Swenshuai.xi /// Use to send any CEC message by user defined
1409*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1410*53ee8cc1Swenshuai.xi /// @param  header          \b IN: destination logical address
1411*53ee8cc1Swenshuai.xi /// @param  opcode          \b IN: opcode
1412*53ee8cc1Swenshuai.xi /// @param  operand_ptr          \b IN: operand
1413*53ee8cc1Swenshuai.xi /// @param  len          \b IN: length
1414*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1415*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1416*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_TxSendMsg(MsCEC_DEVICELA header,MsCEC_MSGLIST opcode,MS_U8* operand_ptr,MS_U8 len);
1417*53ee8cc1Swenshuai.xi 
1418*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1419*53ee8cc1Swenshuai.xi /// Use to send any CEC message by user defined
1420*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_ToBeRemove
1421*53ee8cc1Swenshuai.xi /// @param  dst_address          \b IN: destination logical address
1422*53ee8cc1Swenshuai.xi /// @param  opcode          \b IN: opcode
1423*53ee8cc1Swenshuai.xi /// @param  operand_ptr          \b IN: operand
1424*53ee8cc1Swenshuai.xi /// @param  len          \b IN: length
1425*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1426*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1427*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_TxSendMsg2(MsCEC_DEVICELA dst_address, MsCEC_MSGLIST msg, MS_U8* operand_ptr, MS_U8 len);
1428*53ee8cc1Swenshuai.xi 
1429*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1430*53ee8cc1Swenshuai.xi /// Use to send CEC polling msg
1431*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1432*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1433*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1434*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1435*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MsAPI_CecTxSendPollingMsg(MsCEC_DEVICELA dst_address); // Use to send CEC polling msg
1436*53ee8cc1Swenshuai.xi 
1437*53ee8cc1Swenshuai.xi //*****************************//
1438*53ee8cc1Swenshuai.xi //    One Touch Play &
1439*53ee8cc1Swenshuai.xi //    Routing Control Feature
1440*53ee8cc1Swenshuai.xi //*****************************//
1441*53ee8cc1Swenshuai.xi 
1442*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1443*53ee8cc1Swenshuai.xi /// Used by a new source to indicate that it has started to transmit a stream or used in response to a <Request Active Source>
1444*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1445*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1446*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1447*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ActiveSource(void);
1448*53ee8cc1Swenshuai.xi 
1449*53ee8cc1Swenshuai.xi 
1450*53ee8cc1Swenshuai.xi //*****************************//
1451*53ee8cc1Swenshuai.xi //    Routing Control Feature
1452*53ee8cc1Swenshuai.xi //*****************************//
1453*53ee8cc1Swenshuai.xi 
1454*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1455*53ee8cc1Swenshuai.xi /// Used by a CEC switch when it's manually switched to inform akk other devices
1456*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1457*53ee8cc1Swenshuai.xi /// @param  orig_address       \b IN: the original physicall address
1458*53ee8cc1Swenshuai.xi /// @param  new_address       \b IN: the new physical address
1459*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1460*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1461*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_RoutingChange(MS_U8* orig_address, MS_U8* new_address);
1462*53ee8cc1Swenshuai.xi 
1463*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1464*53ee8cc1Swenshuai.xi /// Used by a new device to discover the status of the system.
1465*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1466*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1467*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1468*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReqActiveSource(void);
1469*53ee8cc1Swenshuai.xi 
1470*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1471*53ee8cc1Swenshuai.xi /// Used by the TV to request a streaming path from the specified physical address.
1472*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1473*53ee8cc1Swenshuai.xi /// @param  new_address       \b IN: the new physical address
1474*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1475*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1476*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_SetStreamPath(MS_U8* new_address);
1477*53ee8cc1Swenshuai.xi 
1478*53ee8cc1Swenshuai.xi 
1479*53ee8cc1Swenshuai.xi //*****************************//
1480*53ee8cc1Swenshuai.xi //    Standby Feature
1481*53ee8cc1Swenshuai.xi //*****************************//
1482*53ee8cc1Swenshuai.xi 
1483*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1484*53ee8cc1Swenshuai.xi /// Use to switch one or all devices into standby mode.
1485*53ee8cc1Swenshuai.xi /// One device: it's specific logical address, like "E_LA_RECORDER1"
1486*53ee8cc1Swenshuai.xi /// All device:   Use broadcast logical address, "E_LA_BROADCAST"
1487*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1488*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1489*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1490*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1491*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_Standby(MsCEC_DEVICELA dst_address);
1492*53ee8cc1Swenshuai.xi 
1493*53ee8cc1Swenshuai.xi 
1494*53ee8cc1Swenshuai.xi //*****************************//
1495*53ee8cc1Swenshuai.xi //    On Touch Record
1496*53ee8cc1Swenshuai.xi //*****************************//
1497*53ee8cc1Swenshuai.xi 
1498*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1499*53ee8cc1Swenshuai.xi /// Requests a device to stop a recording.
1500*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1501*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1502*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1503*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1504*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_RecordOff(MsCEC_DEVICELA dst_address);
1505*53ee8cc1Swenshuai.xi 
1506*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1507*53ee8cc1Swenshuai.xi /// Attempt to record the specified source.
1508*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1509*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1510*53ee8cc1Swenshuai.xi /// @param  cmd       \b IN: record source command
1511*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1512*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1513*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MsAPI_CEC_Msg_RecordOn(MsCEC_DEVICELA dst_address, MsCEC_MSG_RECORD_SOURCE_TYPE cmd);
1514*53ee8cc1Swenshuai.xi 
1515*53ee8cc1Swenshuai.xi 
1516*53ee8cc1Swenshuai.xi //*****************************//
1517*53ee8cc1Swenshuai.xi //    System Information Feature
1518*53ee8cc1Swenshuai.xi //*****************************//
1519*53ee8cc1Swenshuai.xi 
1520*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1521*53ee8cc1Swenshuai.xi /// Used to indicate the supported CEC version, in response to a <Get CEC Version>
1522*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1523*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1524*53ee8cc1Swenshuai.xi /// @param  version       \b IN: cec version
1525*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1526*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1527*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReportCECVersion(MsCEC_DEVICELA dst_address, MS_U8 version);
1528*53ee8cc1Swenshuai.xi 
1529*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1530*53ee8cc1Swenshuai.xi /// Used by a device to enquire which version of CEC the target supports
1531*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1532*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1533*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1534*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1535*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReqCECVersion(MsCEC_DEVICELA dst_address);
1536*53ee8cc1Swenshuai.xi 
1537*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1538*53ee8cc1Swenshuai.xi ///  Use to inform all other devices of the mapping between physical and logical address of the initiator
1539*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1540*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1541*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1542*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReportPhycalAddress(void);
1543*53ee8cc1Swenshuai.xi 
1544*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1545*53ee8cc1Swenshuai.xi /// A request to a device to return its physical address
1546*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1547*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1548*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1549*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1550*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReqPhycalAddress(MsCEC_DEVICELA dst_address);
1551*53ee8cc1Swenshuai.xi 
1552*53ee8cc1Swenshuai.xi 
1553*53ee8cc1Swenshuai.xi //*****************************//
1554*53ee8cc1Swenshuai.xi //    Deck Control Feature
1555*53ee8cc1Swenshuai.xi //*****************************//
1556*53ee8cc1Swenshuai.xi 
1557*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1558*53ee8cc1Swenshuai.xi ///  Use to control a device's media functions
1559*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1560*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1561*53ee8cc1Swenshuai.xi /// @param  cmd       \b IN: deck control mode command
1562*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1563*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1564*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_DeckControl(MsCEC_DEVICELA dst_address, MsCEC_MSG_DC_DECK_CTRL_PARM cmd);
1565*53ee8cc1Swenshuai.xi 
1566*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1567*53ee8cc1Swenshuai.xi ///  Use to provide a device's status when received "Give Deck Status"
1568*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1569*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1570*53ee8cc1Swenshuai.xi /// @param  cmd       \b IN: deck info command
1571*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1572*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1573*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_DecStatus(MsCEC_DEVICELA dst_address, MsCEC_MSG_DC_DECK_STATUS_PARM cmd);
1574*53ee8cc1Swenshuai.xi 
1575*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1576*53ee8cc1Swenshuai.xi ///  Use to request device's status
1577*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1578*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1579*53ee8cc1Swenshuai.xi /// @param  cmd       \b IN: status request command
1580*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1581*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1582*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_MSg_GiveDeckStatus(MsCEC_DEVICELA dst_address, MsCEC_MSG_STATUS_REQUEST_PARM cmd);
1583*53ee8cc1Swenshuai.xi 
1584*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1585*53ee8cc1Swenshuai.xi ///  Use to control the playback behaviour of a source device
1586*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1587*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1588*53ee8cc1Swenshuai.xi /// @param  cmd       \b IN: play mode command
1589*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1590*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1591*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_MSg_DCPlay(MsCEC_DEVICELA dst_address, MsCEC_MSG_DC_PLAY_PARM cmd);
1592*53ee8cc1Swenshuai.xi 
1593*53ee8cc1Swenshuai.xi 
1594*53ee8cc1Swenshuai.xi //*****************************//
1595*53ee8cc1Swenshuai.xi //    Device Menu Control &
1596*53ee8cc1Swenshuai.xi //    Remote Control Passthrough Feature
1597*53ee8cc1Swenshuai.xi //*****************************//
1598*53ee8cc1Swenshuai.xi 
1599*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1600*53ee8cc1Swenshuai.xi ///  Request from TV for a device to show/remove a menu or to query status
1601*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1602*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1603*53ee8cc1Swenshuai.xi /// @param  cmd       \b IN: menu request type command
1604*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1605*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1606*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReqMenuStatus(MsCEC_DEVICELA dst_address, MsCEC_MSG_MENU_REQ_TYPE cmd);
1607*53ee8cc1Swenshuai.xi 
1608*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1609*53ee8cc1Swenshuai.xi /// Use to indicated that user pressed which control button
1610*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1611*53ee8cc1Swenshuai.xi /// @param  bUserCtrlEn       \b IN: menu status is activated or not
1612*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1613*53ee8cc1Swenshuai.xi /// @param  cmd       \b IN: UI command
1614*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1615*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1616*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_UserCtrlPressed(MS_BOOL bUserCtrlEn, MsCEC_DEVICELA dst_address, MsCEC_MSG_USER_CTRL_PARM cmd);
1617*53ee8cc1Swenshuai.xi 
1618*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1619*53ee8cc1Swenshuai.xi /// Use to indicated that user released which control button
1620*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1621*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1622*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1623*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1624*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_UserCtrlReleased(MsCEC_DEVICELA dst_address);
1625*53ee8cc1Swenshuai.xi 
1626*53ee8cc1Swenshuai.xi 
1627*53ee8cc1Swenshuai.xi //*****************************//
1628*53ee8cc1Swenshuai.xi //    Power Status Feature
1629*53ee8cc1Swenshuai.xi //*****************************//
1630*53ee8cc1Swenshuai.xi 
1631*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1632*53ee8cc1Swenshuai.xi /// Use to inform a requesting device of the current power status
1633*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1634*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1635*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1636*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1637*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReportPowerStatus(MsCEC_DEVICELA dst_address);
1638*53ee8cc1Swenshuai.xi 
1639*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1640*53ee8cc1Swenshuai.xi /// Use to determine the current power status of a target device
1641*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1642*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1643*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1644*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1645*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReqPowerStatus(MsCEC_DEVICELA dst_address);
1646*53ee8cc1Swenshuai.xi 
1647*53ee8cc1Swenshuai.xi //*****************************//
1648*53ee8cc1Swenshuai.xi //    General Protocol Feature
1649*53ee8cc1Swenshuai.xi //*****************************//
1650*53ee8cc1Swenshuai.xi 
1651*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1652*53ee8cc1Swenshuai.xi /// Use to indicate that device doesn't support message type
1653*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1654*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1655*53ee8cc1Swenshuai.xi /// @param  msg       \b IN: feature opcode
1656*53ee8cc1Swenshuai.xi /// @param  cmd       \b IN: abort reason
1657*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1658*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1659*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_FeatureAbort(MsCEC_DEVICELA dst_address, MsCEC_MSGLIST msg, MsCEC_MSG_ABORT_REASON cmd);
1660*53ee8cc1Swenshuai.xi 
1661*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1662*53ee8cc1Swenshuai.xi /// This message is reserved for testing purposes.
1663*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1664*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1665*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1666*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1667*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_Abort(MsCEC_DEVICELA dst_address);
1668*53ee8cc1Swenshuai.xi 
1669*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1670*53ee8cc1Swenshuai.xi /// Used by a TV to indicate its currently selected menu language
1671*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1672*53ee8cc1Swenshuai.xi /// @param  pu8MenuLanguageCode       \b IN: menu language code
1673*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1674*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1675*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_SendMenuLanguage(MS_U8* pu8MenuLanguageCode);
1676*53ee8cc1Swenshuai.xi 
1677*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1678*53ee8cc1Swenshuai.xi /// Used by an ARC TX device to request an ARC RX device to activate the ARC functionility in ARC TX device
1679*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1680*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1681*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1682*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1683*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MsAPI_CecMsg_ReqARCInitiation(MsCEC_DEVICELA dst_address);
1684*53ee8cc1Swenshuai.xi 
1685*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1686*53ee8cc1Swenshuai.xi /// Used by an ARC TX device to request an ARC RX device to deactivate the ARC functionility in ARC TX device
1687*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1688*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1689*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1690*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1691*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MsAPI_CecMsg_ReqARCTermination(MsCEC_DEVICELA dst_address);
1692*53ee8cc1Swenshuai.xi 
1693*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1694*53ee8cc1Swenshuai.xi /// A device implementing System Audio Control and which has volume control  RC buttons request to use System Audio Mode to the Amplifier
1695*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1696*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1697*53ee8cc1Swenshuai.xi /// @param  amp_switch       \b IN: 1: unmute amplifier. 0: mute amplifier
1698*53ee8cc1Swenshuai.xi /// @param  my_address       \b IN: source to be used is the device specified at this address
1699*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1700*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1701*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MsAPI_CecMsg_AudioModeReq(MsCEC_DEVICELA dst_address, MS_BOOL amp_switch, MS_U8* my_address );
1702*53ee8cc1Swenshuai.xi 
1703*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1704*53ee8cc1Swenshuai.xi /// Use to request an Amplifier to send its volume and mute status
1705*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1706*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1707*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1708*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1709*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_GiveAudioStatus(MsCEC_DEVICELA dst_address);
1710*53ee8cc1Swenshuai.xi 
1711*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1712*53ee8cc1Swenshuai.xi /// Get RX header
1713*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1714*53ee8cc1Swenshuai.xi /// @return header
1715*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1716*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_Get_Header(void);
1717*53ee8cc1Swenshuai.xi 
1718*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1719*53ee8cc1Swenshuai.xi /// Get RX opcode
1720*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1721*53ee8cc1Swenshuai.xi /// @return opcode
1722*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1723*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_Get_OpCode(void);
1724*53ee8cc1Swenshuai.xi 
1725*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1726*53ee8cc1Swenshuai.xi /// Get RX parameter
1727*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1728*53ee8cc1Swenshuai.xi /// @param  u8Idx       \b IN: parameter index
1729*53ee8cc1Swenshuai.xi /// @return parameter
1730*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1731*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_Get_Para(MS_U8 u8Idx);
1732*53ee8cc1Swenshuai.xi 
1733*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1734*53ee8cc1Swenshuai.xi /// Get RX command length
1735*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1736*53ee8cc1Swenshuai.xi /// @return comand length
1737*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1738*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_GetCmdLen(void);
1739*53ee8cc1Swenshuai.xi 
1740*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1741*53ee8cc1Swenshuai.xi /// Set active logical address
1742*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1743*53ee8cc1Swenshuai.xi /// @param  Addr       \b IN: logical address
1744*53ee8cc1Swenshuai.xi /// @return None
1745*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1746*53ee8cc1Swenshuai.xi void MApi_CEC_SetActiveLogicalAddress(MsCEC_DEVICELA Addr);
1747*53ee8cc1Swenshuai.xi 
1748*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1749*53ee8cc1Swenshuai.xi /// Get active logical address
1750*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1751*53ee8cc1Swenshuai.xi /// @return logical address
1752*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1753*53ee8cc1Swenshuai.xi MsCEC_DEVICELA MApi_CEC_GetActiveLogicalAddress(void);
1754*53ee8cc1Swenshuai.xi 
1755*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1756*53ee8cc1Swenshuai.xi /// Get power status
1757*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1758*53ee8cc1Swenshuai.xi /// @return power status
1759*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1760*53ee8cc1Swenshuai.xi MsCEC_MSG_POWER_STATUS_PARM MApi_CEC_GetPowerStatus(void);
1761*53ee8cc1Swenshuai.xi 
1762*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1763*53ee8cc1Swenshuai.xi /// Get fifo index
1764*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1765*53ee8cc1Swenshuai.xi /// @return fifo index
1766*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1767*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_GetFifoIdx(void);
1768*53ee8cc1Swenshuai.xi 
1769*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1770*53ee8cc1Swenshuai.xi /// Set fifo index
1771*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1772*53ee8cc1Swenshuai.xi /// @param  u8Idx       \b IN: fifo index
1773*53ee8cc1Swenshuai.xi /// @return None
1774*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1775*53ee8cc1Swenshuai.xi void MApi_CEC_SetFifoIdx(MS_U8 u8Idx);
1776*53ee8cc1Swenshuai.xi 
1777*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1778*53ee8cc1Swenshuai.xi /// Set active power status
1779*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1780*53ee8cc1Swenshuai.xi /// @param  Status       \b IN: active power status
1781*53ee8cc1Swenshuai.xi /// @return None
1782*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1783*53ee8cc1Swenshuai.xi void MApi_CEC_SetActivePowerStatus(MsCEC_MSG_POWER_STATUS_PARM Status);
1784*53ee8cc1Swenshuai.xi 
1785*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1786*53ee8cc1Swenshuai.xi /// Get active power status
1787*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1788*53ee8cc1Swenshuai.xi /// @return power status
1789*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1790*53ee8cc1Swenshuai.xi MsCEC_MSG_POWER_STATUS_PARM MApi_CEC_GetActivePowerStatus(void);
1791*53ee8cc1Swenshuai.xi 
1792*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1793*53ee8cc1Swenshuai.xi /// Set active physical address
1794*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1795*53ee8cc1Swenshuai.xi /// @param  u8Para1       \b IN: physical address lower byte
1796*53ee8cc1Swenshuai.xi /// @param  u8Para2       \b IN: physical address higer byte
1797*53ee8cc1Swenshuai.xi /// @return None
1798*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1799*53ee8cc1Swenshuai.xi void MApi_CEC_SetActivePhysicalAddress(MS_U8 u8Para1, MS_U8 u8Para2);
1800*53ee8cc1Swenshuai.xi 
1801*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1802*53ee8cc1Swenshuai.xi /// Set active device CEC version
1803*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1804*53ee8cc1Swenshuai.xi /// @param  u8Ver       \b IN: active cec version
1805*53ee8cc1Swenshuai.xi /// @return None
1806*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1807*53ee8cc1Swenshuai.xi void MApi_CEC_SetActiveDeviceCECVersion(MS_U8 u8Ver);
1808*53ee8cc1Swenshuai.xi 
1809*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1810*53ee8cc1Swenshuai.xi /// Set active device type
1811*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1812*53ee8cc1Swenshuai.xi /// @param  Type       \b IN: active device type
1813*53ee8cc1Swenshuai.xi /// @return None
1814*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1815*53ee8cc1Swenshuai.xi void MApi_CEC_SetActiveDeviceType(MsCEC_DEVICE_TYPE Type);
1816*53ee8cc1Swenshuai.xi 
1817*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1818*53ee8cc1Swenshuai.xi /// Get message count
1819*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1820*53ee8cc1Swenshuai.xi /// @return message count
1821*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1822*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_GetMsgCnt(void);
1823*53ee8cc1Swenshuai.xi 
1824*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1825*53ee8cc1Swenshuai.xi /// Set message count
1826*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1827*53ee8cc1Swenshuai.xi /// @param  u8Cnt       \b IN: message count
1828*53ee8cc1Swenshuai.xi /// @return None
1829*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1830*53ee8cc1Swenshuai.xi void MApi_CEC_SetMsgCnt(MS_U8 u8Cnt);
1831*53ee8cc1Swenshuai.xi 
1832*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1833*53ee8cc1Swenshuai.xi /// Get Rx data
1834*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1835*53ee8cc1Swenshuai.xi /// @param  u8Fifoidx       \b IN: fifo index
1836*53ee8cc1Swenshuai.xi /// @param  u8Idx       \b IN: data index
1837*53ee8cc1Swenshuai.xi /// @return data
1838*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1839*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_GetRxData(MS_U8 u8Fifoidx, MS_U8 u8Idx);
1840*53ee8cc1Swenshuai.xi 
1841*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1842*53ee8cc1Swenshuai.xi /// Use to check CEC frame is valid or not
1843*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1844*53ee8cc1Swenshuai.xi /// @param  msg_type       \b IN: CEC message type
1845*53ee8cc1Swenshuai.xi /// @param  ucLen       \b IN: message length, include header and opcode
1846*53ee8cc1Swenshuai.xi /// @return TRUE: CEC frame is valid
1847*53ee8cc1Swenshuai.xi /// @return FALSE: CEC frame is not valid
1848*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1849*53ee8cc1Swenshuai.xi MS_BOOL MApi_CEC_CheckFrame(MsCEC_MSG_TRANS_TYPE msg_type, MS_U8 ucLen);
1850*53ee8cc1Swenshuai.xi 
1851*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1852*53ee8cc1Swenshuai.xi /// Use to check exist devices
1853*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1854*53ee8cc1Swenshuai.xi /// @return None
1855*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1856*53ee8cc1Swenshuai.xi void MApi_CEC_CheckExistDevices(void);
1857*53ee8cc1Swenshuai.xi 
1858*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1859*53ee8cc1Swenshuai.xi /// Use to config wake up
1860*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1861*53ee8cc1Swenshuai.xi /// @return None
1862*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1863*53ee8cc1Swenshuai.xi void MApi_CEC_ConfigWakeUp(void);
1864*53ee8cc1Swenshuai.xi 
1865*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1866*53ee8cc1Swenshuai.xi /// Enable CEC
1867*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1868*53ee8cc1Swenshuai.xi /// @param  bEnableFlag       \b IN: enable CEC or not
1869*53ee8cc1Swenshuai.xi /// @return None
1870*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1871*53ee8cc1Swenshuai.xi void MApi_CEC_Enabled(MS_BOOL bEnableFlag);
1872*53ee8cc1Swenshuai.xi 
1873*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1874*53ee8cc1Swenshuai.xi /// Set physical address
1875*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1876*53ee8cc1Swenshuai.xi /// @param  pdata       \b IN: physical address
1877*53ee8cc1Swenshuai.xi /// @return None
1878*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1879*53ee8cc1Swenshuai.xi void MApi_CEC_SetMyPhysicalAddress(MS_U8 *pdata);
1880*53ee8cc1Swenshuai.xi 
1881*53ee8cc1Swenshuai.xi #if ENABLE_CEC_MULTIPLE
1882*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1883*53ee8cc1Swenshuai.xi /// Set second logical address
1884*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_SECOND
1885*53ee8cc1Swenshuai.xi /// @param  myLA       \b IN: second logical address
1886*53ee8cc1Swenshuai.xi /// @return None
1887*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1888*53ee8cc1Swenshuai.xi void MApi_CEC_SetMyLogicalAddress2(MsCEC_DEVICELA myLA);
1889*53ee8cc1Swenshuai.xi 
1890*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1891*53ee8cc1Swenshuai.xi /// Report second physical address
1892*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_SECOND
1893*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1894*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1895*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReportPhycalAddress2(void);
1896*53ee8cc1Swenshuai.xi 
1897*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1898*53ee8cc1Swenshuai.xi /// Set second physical address
1899*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_SECOND
1900*53ee8cc1Swenshuai.xi /// @param  pdata       \b IN: second physical address
1901*53ee8cc1Swenshuai.xi /// @return None
1902*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1903*53ee8cc1Swenshuai.xi void MApi_CEC_SetMyPhysicalAddress2(MS_U8 *pdata);
1904*53ee8cc1Swenshuai.xi 
1905*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1906*53ee8cc1Swenshuai.xi /// Set initiator logical address
1907*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_SECOND
1908*53ee8cc1Swenshuai.xi /// @param  IniLA       \b IN: initiator logical address
1909*53ee8cc1Swenshuai.xi /// @return None
1910*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1911*53ee8cc1Swenshuai.xi void MApi_CEC_SetInitiator(MsCEC_DEVICELA IniLA);
1912*53ee8cc1Swenshuai.xi #endif
1913*53ee8cc1Swenshuai.xi 
1914*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1915*53ee8cc1Swenshuai.xi /// Get Tx status
1916*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1917*53ee8cc1Swenshuai.xi /// @return status
1918*53ee8cc1Swenshuai.xi ///[Bit0]: CEC receives a new message.
1919*53ee8cc1Swenshuai.xi ///[Bit1]: CEC transmits a message successfully.
1920*53ee8cc1Swenshuai.xi ///[Bit2]: CEC retry fail for TX.
1921*53ee8cc1Swenshuai.xi ///[Bit3]: CEC lost arbitration to the second initiator.
1922*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1923*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_GetTxStatus(void);
1924*53ee8cc1Swenshuai.xi 
1925*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1926*53ee8cc1Swenshuai.xi /// Set power state
1927*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1928*53ee8cc1Swenshuai.xi /// @param  u16PowerState       \b IN: power state
1929*53ee8cc1Swenshuai.xi /// @return 0: success
1930*53ee8cc1Swenshuai.xi /// @return 1: fail
1931*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1932*53ee8cc1Swenshuai.xi MS_U32 MApi_CEC_SetPowerState(EN_POWER_MODE u16PowerState);
1933*53ee8cc1Swenshuai.xi 
1934*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1935*53ee8cc1Swenshuai.xi /// Set retry count
1936*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_ToBeAdd
1937*53ee8cc1Swenshuai.xi /// @param  u8RetryCount       \b IN: retry count
1938*53ee8cc1Swenshuai.xi /// @return None
1939*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1940*53ee8cc1Swenshuai.xi void MApi_CEC_SetRetryCount(MS_U8 u8RetryCount);
1941*53ee8cc1Swenshuai.xi 
1942*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1943*53ee8cc1Swenshuai.xi /// config wakeup info vendor ID
1944*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_ToBeAdd
1945*53ee8cc1Swenshuai.xi /// @param  u8CecVendorID       \b IN: vendor ID
1946*53ee8cc1Swenshuai.xi /// @return None
1947*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1948*53ee8cc1Swenshuai.xi void MApi_CEC_ConfigWakeupInfoVendorID(MS_U8* u8CecVendorID);
1949*53ee8cc1Swenshuai.xi 
1950*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1951*53ee8cc1Swenshuai.xi /// Set logical address to next active device
1952*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_ToBeAdd
1953*53ee8cc1Swenshuai.xi /// @param  None
1954*53ee8cc1Swenshuai.xi /// @return logical address
1955*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1956*53ee8cc1Swenshuai.xi MsCEC_DEVICELA MApi_CEC_NextDevice(void);
1957*53ee8cc1Swenshuai.xi 
1958*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1959*53ee8cc1Swenshuai.xi /// Check Rx Buf if empty or not
1960*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_ToBeAdd
1961*53ee8cc1Swenshuai.xi /// @param  None
1962*53ee8cc1Swenshuai.xi /// @return 1: empty
1963*53ee8cc1Swenshuai.xi /// @return 0: non empty
1964*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1965*53ee8cc1Swenshuai.xi MS_BOOL MApi_CEC_IsRxBufEmpty(void);
1966*53ee8cc1Swenshuai.xi 
1967*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1968*53ee8cc1Swenshuai.xi /// Check divcec is Tx or not
1969*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_ToBeAdd
1970*53ee8cc1Swenshuai.xi /// @param  None
1971*53ee8cc1Swenshuai.xi /// @return 1: Tx
1972*53ee8cc1Swenshuai.xi /// @return 0: Rx
1973*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1974*53ee8cc1Swenshuai.xi MS_BOOL MApi_CEC_CheckDeviceIsTx(void);
1975*53ee8cc1Swenshuai.xi 
1976*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1977*53ee8cc1Swenshuai.xi /// General API
1978*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_ToBeAdd
1979*53ee8cc1Swenshuai.xi /// @param  u32Cmd       \b IN: API name
1980*53ee8cc1Swenshuai.xi /// @param  pBuf       \b IN: buffer of input and output value
1981*53ee8cc1Swenshuai.xi /// @param  u32BufSize       \b IN: buffer size
1982*53ee8cc1Swenshuai.xi /// @return TRUE: call API success
1983*53ee8cc1Swenshuai.xi /// @return FALSE: call API fail
1984*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1985*53ee8cc1Swenshuai.xi MS_BOOL SYMBOL_WEAK MApi_CEC_Ctrl(MS_U32 u32Cmd, void *pBuf, MS_U32 u32BufSize);
1986*53ee8cc1Swenshuai.xi 
1987*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1988*53ee8cc1Swenshuai.xi /// Get CEC init parameter
1989*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1990*53ee8cc1Swenshuai.xi /// @param  stInitialConfig: Init parameters
1991*53ee8cc1Swenshuai.xi /// @return UTOPIA_STATUS_ERR_NOT_AVAIL: CEC not system init
1992*53ee8cc1Swenshuai.xi /// @return UTOPIA_STATUS_SUCCESS: CEC system init ready
1993*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1994*53ee8cc1Swenshuai.xi MS_U32 SYMBOL_WEAK mapi_CEC_GetConfig(stCEC_INITIAL_CONFIG *stInitialConfig);
1995*53ee8cc1Swenshuai.xi 
1996*53ee8cc1Swenshuai.xi #ifdef __cplusplus
1997*53ee8cc1Swenshuai.xi }
1998*53ee8cc1Swenshuai.xi #endif
1999*53ee8cc1Swenshuai.xi 
2000*53ee8cc1Swenshuai.xi #endif //_API_CEC_H_
2001*53ee8cc1Swenshuai.xi 
2002