xref: /utopia/UTPA2-700.0.x/projects/tmplib/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 RETRY_CNT          1UL
223*53ee8cc1Swenshuai.xi #define FrameInterval      7UL
224*53ee8cc1Swenshuai.xi #define BusFreeTime        6UL//5 // Free bit time by IC design has a little difference than spec, set to 6 instead of 5
225*53ee8cc1Swenshuai.xi #define ReTxInterval       3UL
226*53ee8cc1Swenshuai.xi 
227*53ee8cc1Swenshuai.xi #define ENABLE_CEC_INT                  ENABLE
228*53ee8cc1Swenshuai.xi #define ENABLE_CUST01_CEC               ENABLE
229*53ee8cc1Swenshuai.xi #define ENABLE_SW_CEC_WAKEUP            ENABLE
230*53ee8cc1Swenshuai.xi #define ENABLE_CEC_MULTIPLE             DISABLE
231*53ee8cc1Swenshuai.xi 
232*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
233*53ee8cc1Swenshuai.xi //  Type and Structure
234*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
235*53ee8cc1Swenshuai.xi 
236*53ee8cc1Swenshuai.xi typedef enum _MsCEC_INPUT_PORT
237*53ee8cc1Swenshuai.xi {
238*53ee8cc1Swenshuai.xi     INPUT_PORT0 = 0x00,
239*53ee8cc1Swenshuai.xi     INPUT_PORT1 = 0x01,
240*53ee8cc1Swenshuai.xi     INPUT_PORT2 = 0x02,
241*53ee8cc1Swenshuai.xi     INPUT_PORT3 = 0x03,
242*53ee8cc1Swenshuai.xi }MsCEC_INPUT_PORT;
243*53ee8cc1Swenshuai.xi 
244*53ee8cc1Swenshuai.xi typedef enum _CEC_ERROR_CODE
245*53ee8cc1Swenshuai.xi {
246*53ee8cc1Swenshuai.xi     E_CEC_FEATURE_ABORT = 0x00,
247*53ee8cc1Swenshuai.xi     E_CEC_RX_SUCCESS    = 0x01,
248*53ee8cc1Swenshuai.xi     E_CEC_TX_SUCCESS    = 0x02,
249*53ee8cc1Swenshuai.xi     E_CEC_RF            = 0x04,
250*53ee8cc1Swenshuai.xi     E_CEC_LOST_ABT      = 0x08,
251*53ee8cc1Swenshuai.xi     E_CEC_BIT_SHORT     = 0x10,
252*53ee8cc1Swenshuai.xi     E_CEC_BIT_LONG      = 0x20,
253*53ee8cc1Swenshuai.xi     E_CEC_NACK          = 0x40,
254*53ee8cc1Swenshuai.xi     E_CEC_SYSTEM_BUSY   = 0x80,
255*53ee8cc1Swenshuai.xi } CEC_ERROR_CODE;
256*53ee8cc1Swenshuai.xi 
257*53ee8cc1Swenshuai.xi //Logical Address
258*53ee8cc1Swenshuai.xi typedef enum _MsCEC_DEVICELA
259*53ee8cc1Swenshuai.xi {
260*53ee8cc1Swenshuai.xi     E_LA_TV              =0,
261*53ee8cc1Swenshuai.xi     E_LA_RECORDER1       =1,
262*53ee8cc1Swenshuai.xi     E_LA_RECORDER2       =2,
263*53ee8cc1Swenshuai.xi     E_LA_TUNER1          =3,
264*53ee8cc1Swenshuai.xi     E_LA_PLAYBACK1       =4,
265*53ee8cc1Swenshuai.xi     E_LA_AUDIO_SYS       =5,
266*53ee8cc1Swenshuai.xi     E_LA_TUNER2          =6,
267*53ee8cc1Swenshuai.xi     E_LA_TUNER3          =7,
268*53ee8cc1Swenshuai.xi     E_LA_PLAYBACK2       =8,
269*53ee8cc1Swenshuai.xi     E_LA_RECORER3        =9,
270*53ee8cc1Swenshuai.xi #if(HDMI_CEC_VERSION >= CEC_VERSION_13a)
271*53ee8cc1Swenshuai.xi     E_LA_TUNER4          =10,
272*53ee8cc1Swenshuai.xi     E_LA_PLYBACK3        =11,
273*53ee8cc1Swenshuai.xi #endif
274*53ee8cc1Swenshuai.xi     RESERVED_1            =12,
275*53ee8cc1Swenshuai.xi     RESERVED_2            =13,
276*53ee8cc1Swenshuai.xi     E_LA_FREE_USE        =14,
277*53ee8cc1Swenshuai.xi     E_LA_UNREGISTERED    =15,
278*53ee8cc1Swenshuai.xi     E_LA_BROADCAST       =15,
279*53ee8cc1Swenshuai.xi     E_LA_MAX =15,
280*53ee8cc1Swenshuai.xi } MsCEC_DEVICELA;
281*53ee8cc1Swenshuai.xi 
282*53ee8cc1Swenshuai.xi //the opcode is referenced from CEC1.3a table 7 ~ 27
283*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSGLIST
284*53ee8cc1Swenshuai.xi {
285*53ee8cc1Swenshuai.xi //----- One Touch Play ----------------------------
286*53ee8cc1Swenshuai.xi     E_MSG_ACTIVE_SOURCE                         = 0x82,
287*53ee8cc1Swenshuai.xi     E_MSG_OTP_IMAGE_VIEW_ON                     = 0x04,
288*53ee8cc1Swenshuai.xi     E_MSG_OTP_TEXT_VIEW_ON                      = 0x0D,
289*53ee8cc1Swenshuai.xi 
290*53ee8cc1Swenshuai.xi 
291*53ee8cc1Swenshuai.xi //----- Routing Control ---------------------------
292*53ee8cc1Swenshuai.xi     //E_MSG_RC_ACTIVE_SOURCE                      = 0x82,
293*53ee8cc1Swenshuai.xi     E_MSG_RC_INACTIVE_SOURCE                    = 0x9D,
294*53ee8cc1Swenshuai.xi 
295*53ee8cc1Swenshuai.xi     E_MSG_RC_REQ_ACTIVE_SOURCE                  = 0x85, // should be removed
296*53ee8cc1Swenshuai.xi     E_MSG_RC_REQUEST_ACTIVE_SOURCE              = 0x85,
297*53ee8cc1Swenshuai.xi 
298*53ee8cc1Swenshuai.xi     E_MSG_RC_ROUTING_CHANGE                     = 0x80,
299*53ee8cc1Swenshuai.xi 
300*53ee8cc1Swenshuai.xi     E_MSG_RC_ROUTING_INFO                       = 0x81, // should be removed
301*53ee8cc1Swenshuai.xi     E_MSG_RC_ROUTING_INFORMATION                = 0x81,
302*53ee8cc1Swenshuai.xi 
303*53ee8cc1Swenshuai.xi     E_MSG_RC_SET_STREM_PATH                     = 0x86,
304*53ee8cc1Swenshuai.xi 
305*53ee8cc1Swenshuai.xi 
306*53ee8cc1Swenshuai.xi //----- Standby Command ---------------------------
307*53ee8cc1Swenshuai.xi     E_MSG_STANDBY                               = 0x36,
308*53ee8cc1Swenshuai.xi 
309*53ee8cc1Swenshuai.xi 
310*53ee8cc1Swenshuai.xi //----- One Touch Record---------------------------
311*53ee8cc1Swenshuai.xi     E_MSG_OTR_RECORD_OFF                        = 0x0B,
312*53ee8cc1Swenshuai.xi     E_MSG_OTR_RECORD_ON                         = 0x09,
313*53ee8cc1Swenshuai.xi     E_MSG_OTR_RECORD_STATUS                     = 0x0A,
314*53ee8cc1Swenshuai.xi     E_MSG_OTR_RECORD_TV_SCREEN                  = 0x0F,
315*53ee8cc1Swenshuai.xi 
316*53ee8cc1Swenshuai.xi 
317*53ee8cc1Swenshuai.xi //----- Timer programmer -------------------------- CEC1.3a
318*53ee8cc1Swenshuai.xi     E_MSG_TP_CLEAR_ANALOG_TIMER                 = 0x33, // should be removed
319*53ee8cc1Swenshuai.xi     E_MSG_TP_CLEAR_ANALOGUE_TIMER               = 0x33,
320*53ee8cc1Swenshuai.xi 
321*53ee8cc1Swenshuai.xi     E_MSG_TP_CLEAR_DIGITAL_TIMER                = 0x99,
322*53ee8cc1Swenshuai.xi 
323*53ee8cc1Swenshuai.xi     E_MSG_TP_CLEAR_EXT_TIMER                    = 0xA1, // should be removed
324*53ee8cc1Swenshuai.xi     E_MSG_TP_CLEAR_EXTERNAL_TIMER               = 0xA1,
325*53ee8cc1Swenshuai.xi 
326*53ee8cc1Swenshuai.xi     E_MSG_TP_SET_ANALOG_TIMER                   = 0x34, // should be removed
327*53ee8cc1Swenshuai.xi     E_MSG_TP_SET_ANALOGUE_TIMER                 = 0x34,
328*53ee8cc1Swenshuai.xi 
329*53ee8cc1Swenshuai.xi     E_MSG_TP_SET_DIGITAL_TIMER                  = 0x97,
330*53ee8cc1Swenshuai.xi 
331*53ee8cc1Swenshuai.xi     E_MSG_TP_SET_EXT_TIMER                      = 0xA2, // should be removed
332*53ee8cc1Swenshuai.xi     E_MSG_TP_SET_EXTERNAL_TIMER                 = 0xA2,
333*53ee8cc1Swenshuai.xi 
334*53ee8cc1Swenshuai.xi     E_MSG_TP_SET_TIMER_PROGRAM_TITLE            = 0x67,
335*53ee8cc1Swenshuai.xi     E_MSG_TP_TIMER_CLEARD_STATUS                = 0x43,
336*53ee8cc1Swenshuai.xi     E_MSG_TP_TIMER_STATUS                       = 0x35,
337*53ee8cc1Swenshuai.xi 
338*53ee8cc1Swenshuai.xi 
339*53ee8cc1Swenshuai.xi //----- System Information ------------------------
340*53ee8cc1Swenshuai.xi     E_MSG_SI_CEC_VERSION                        = 0x9E,       //1.3a
341*53ee8cc1Swenshuai.xi     E_MSG_SI_GET_CEC_VERSION                    = 0x9F,       //1.3a
342*53ee8cc1Swenshuai.xi 
343*53ee8cc1Swenshuai.xi     E_MSG_SI_REQUEST_PHY_ADDR                   = 0x83, // should be removed
344*53ee8cc1Swenshuai.xi     E_MSG_SI_GIVE_PHYSICAL_ADDRESS              = 0x83,
345*53ee8cc1Swenshuai.xi 
346*53ee8cc1Swenshuai.xi     E_MSG_SI_GET_MENU_LANGUAGE                  = 0x91,
347*53ee8cc1Swenshuai.xi     //E_MSG_SI_POLLING_MESSAGE                    = ?,
348*53ee8cc1Swenshuai.xi 
349*53ee8cc1Swenshuai.xi     E_MSG_SI_REPORT_PHY_ADDR                    = 0x84, // should be removed
350*53ee8cc1Swenshuai.xi     E_MSG_SI_REPORT_PHYSICAL_ADDRESS            = 0x84,
351*53ee8cc1Swenshuai.xi 
352*53ee8cc1Swenshuai.xi     E_MSG_SI_SET_MENU_LANGUAGE                  = 0x32,
353*53ee8cc1Swenshuai.xi 
354*53ee8cc1Swenshuai.xi     //E_MSG_SI_REC_TYPE_PRESET                    = 0x00,  //parameter   ?
355*53ee8cc1Swenshuai.xi     //E_MSG_SI_REC_TYPE_OWNSRC                    = 0x01,  //parameter   ?
356*53ee8cc1Swenshuai.xi 
357*53ee8cc1Swenshuai.xi 
358*53ee8cc1Swenshuai.xi //----- Deck Control Feature-----------------------
359*53ee8cc1Swenshuai.xi     E_MSG_DC_DECK_CTRL                          = 0x42, // should be removed
360*53ee8cc1Swenshuai.xi     E_MSG_DC_DECK_CONTROL                       = 0x42,
361*53ee8cc1Swenshuai.xi 
362*53ee8cc1Swenshuai.xi     E_MSG_DC_DECK_STATUS                        = 0x1B,
363*53ee8cc1Swenshuai.xi     E_MSG_DC_GIVE_DECK_STATUS                   = 0x1A,
364*53ee8cc1Swenshuai.xi     E_MSG_DC_PLAY                               = 0x41,
365*53ee8cc1Swenshuai.xi 
366*53ee8cc1Swenshuai.xi 
367*53ee8cc1Swenshuai.xi //----- Tuner Control ------------------------------
368*53ee8cc1Swenshuai.xi     E_MSG_TC_GIVE_TUNER_STATUS                  = 0x08, // should be removed
369*53ee8cc1Swenshuai.xi     E_MSG_TC_GIVE_TUNER_DEVICE_STATUS           = 0x08,
370*53ee8cc1Swenshuai.xi 
371*53ee8cc1Swenshuai.xi     E_MSG_TC_SEL_ANALOG_SERVICE                 = 0x92, // should be removed
372*53ee8cc1Swenshuai.xi     E_MSG_TC_SEL_ANALOGUE_SERVICE               = 0x92,
373*53ee8cc1Swenshuai.xi 
374*53ee8cc1Swenshuai.xi     E_MSG_TC_SEL_DIGITAL_SERVICE                = 0x93, // should be removed
375*53ee8cc1Swenshuai.xi     E_MSG_TC_SELECT_DIGITAL_SERVICE             = 0x93,
376*53ee8cc1Swenshuai.xi 
377*53ee8cc1Swenshuai.xi     E_MSG_TC_TUNER_DEVICE_STATUS                = 0x07,
378*53ee8cc1Swenshuai.xi 
379*53ee8cc1Swenshuai.xi     E_MSG_TC_TUNER_STEP_DEC                     = 0x06, // should be removed
380*53ee8cc1Swenshuai.xi     E_MSG_TC_TUNER_STEP_DECREMENT               = 0x06,
381*53ee8cc1Swenshuai.xi 
382*53ee8cc1Swenshuai.xi     E_MSG_TC_TUNER_STEP_INC                     = 0x05, // should be removed
383*53ee8cc1Swenshuai.xi     E_MSG_TC_TUNER_STEP_INCREMENT               = 0x05,
384*53ee8cc1Swenshuai.xi 
385*53ee8cc1Swenshuai.xi 
386*53ee8cc1Swenshuai.xi //---------Vendor Specific -------------------------
387*53ee8cc1Swenshuai.xi     //E_MSG_VS_CEC_VERSION                        = 0x9E,       //1.3a
388*53ee8cc1Swenshuai.xi     E_MSG_VS_DEVICE_VENDOR_ID                   = 0x87,
389*53ee8cc1Swenshuai.xi     //E_MSG_VS_GET_CEC_VERSION                    = 0x9F,       //1.3a
390*53ee8cc1Swenshuai.xi 
391*53ee8cc1Swenshuai.xi     E_MSG_VS_GIVE_VENDOR_ID                     = 0x8C, // should be removed
392*53ee8cc1Swenshuai.xi     E_MSG_VS_GIVE_DEVICE_VENDOR_ID              = 0x8C,
393*53ee8cc1Swenshuai.xi 
394*53ee8cc1Swenshuai.xi     E_MSG_VS_VENDOR_COMMAND                     = 0x89,
395*53ee8cc1Swenshuai.xi     E_MSG_VS_VENDOR_COMMAND_WITH_ID             = 0xA0,      //1.3a
396*53ee8cc1Swenshuai.xi 
397*53ee8cc1Swenshuai.xi     E_MSG_VS_VENDOR_RC_BUT_DOWN                 = 0x8A, // should be removed
398*53ee8cc1Swenshuai.xi     E_MSG_VS_VENDOR_REMOTE_BUTTON_DOWN          = 0x8A,
399*53ee8cc1Swenshuai.xi 
400*53ee8cc1Swenshuai.xi     E_MSG_VS_VENDOR_RC_BUT_UP                   = 0x8B, // should be removed
401*53ee8cc1Swenshuai.xi     E_MSG_VS_VENDOR_REMOTE_BUTTON_UP            = 0x8B,
402*53ee8cc1Swenshuai.xi 
403*53ee8cc1Swenshuai.xi 
404*53ee8cc1Swenshuai.xi //----- OSD Display --------------------------------
405*53ee8cc1Swenshuai.xi     E_MSG_SET_OSD_STRING                        = 0x64,
406*53ee8cc1Swenshuai.xi 
407*53ee8cc1Swenshuai.xi 
408*53ee8cc1Swenshuai.xi //----- Device OSD Name Transfer  -------------------------
409*53ee8cc1Swenshuai.xi     E_MSG_OSDNT_GIVE_OSD_NAME                   = 0x46,
410*53ee8cc1Swenshuai.xi     E_MSG_OSDNT_SET_OSD_NAME                    = 0x47,
411*53ee8cc1Swenshuai.xi 
412*53ee8cc1Swenshuai.xi 
413*53ee8cc1Swenshuai.xi //----- Device Menu Control ------------------------
414*53ee8cc1Swenshuai.xi     E_MSG_DMC_MENU_REQUEST                      = 0x8D,
415*53ee8cc1Swenshuai.xi     E_MSG_DMC_MENU_STATUS                       = 0x8E,
416*53ee8cc1Swenshuai.xi     //E_MSG_DMC_MENU_ACTIVATED                    = 0x00,   //parameter
417*53ee8cc1Swenshuai.xi     //E_MSG_DMC_MENU_DEACTIVATED                  = 0x01,   //parameter
418*53ee8cc1Swenshuai.xi 
419*53ee8cc1Swenshuai.xi     E_MSG_UI_PRESS                              = 0x44, // should be removed
420*53ee8cc1Swenshuai.xi     E_MSG_DMC_USER_CONTROL_PRESSED              = 0x44,
421*53ee8cc1Swenshuai.xi 
422*53ee8cc1Swenshuai.xi     E_MSG_UI_RELEASE                            = 0x45, // should be removed
423*53ee8cc1Swenshuai.xi     E_MSG_DMC_USER_CONTROL_RELEASED             = 0x45,
424*53ee8cc1Swenshuai.xi 
425*53ee8cc1Swenshuai.xi 
426*53ee8cc1Swenshuai.xi //----- Remote Control Passthrough ----------------
427*53ee8cc1Swenshuai.xi //----- UI Message --------------------------------
428*53ee8cc1Swenshuai.xi //    E_MSG_RCP_USER_CONTROL_PRESSED              = 0x44,
429*53ee8cc1Swenshuai.xi //    E_MSG_RCP_USER_CONTROL_RELEASED             = 0x45,
430*53ee8cc1Swenshuai.xi 
431*53ee8cc1Swenshuai.xi 
432*53ee8cc1Swenshuai.xi //----- Power Status  ------------------------------
433*53ee8cc1Swenshuai.xi     E_MSG_PS_GIVE_POWER_STATUS                  = 0x8F, // should be removed
434*53ee8cc1Swenshuai.xi     E_MSG_PS_GIVE_DEVICE_POWER_STATUS           = 0x8F,
435*53ee8cc1Swenshuai.xi 
436*53ee8cc1Swenshuai.xi     E_MSG_PS_REPORT_POWER_STATUS                = 0x90,
437*53ee8cc1Swenshuai.xi 
438*53ee8cc1Swenshuai.xi 
439*53ee8cc1Swenshuai.xi //----- General Protocal Message ------------------
440*53ee8cc1Swenshuai.xi 
441*53ee8cc1Swenshuai.xi //----- Feature Abort -----------------------------
442*53ee8cc1Swenshuai.xi     E_MSG_FEATURE_ABORT                         = 0x00,
443*53ee8cc1Swenshuai.xi 
444*53ee8cc1Swenshuai.xi //----- Abort Message -----------------------------
445*53ee8cc1Swenshuai.xi     E_MSG_ABORT_MESSAGE                         = 0xFF,
446*53ee8cc1Swenshuai.xi 
447*53ee8cc1Swenshuai.xi 
448*53ee8cc1Swenshuai.xi //----- System Audio Control ------------------
449*53ee8cc1Swenshuai.xi     E_MSG_SAC_GIVE_AUDIO_STATUS                 = 0x71,
450*53ee8cc1Swenshuai.xi     E_MSG_SAC_GIVE_SYSTEM_AUDIO_MODE_STATUS     = 0x7D,
451*53ee8cc1Swenshuai.xi     E_MSG_SAC_REPORT_AUDIO_STATUS               = 0x7A,
452*53ee8cc1Swenshuai.xi 
453*53ee8cc1Swenshuai.xi     E_MSG_SAC_REPORT_SHORT_AUDIO_DESCRIPTOR     = 0xA3,
454*53ee8cc1Swenshuai.xi     E_MSG_SAC_REQUEST_SHORT_AUDIO_DESCRIPTOR    = 0xA4,
455*53ee8cc1Swenshuai.xi 
456*53ee8cc1Swenshuai.xi     E_MSG_SAC_SET_SYSTEM_AUDIO_MODE             = 0x72,
457*53ee8cc1Swenshuai.xi     E_MSG_SAC_SYSTEM_AUDIO_MODE_REQUEST         = 0x70,
458*53ee8cc1Swenshuai.xi     E_MSG_SAC_SYSTEM_AUDIO_MODE_STATUS          = 0x7E,
459*53ee8cc1Swenshuai.xi 
460*53ee8cc1Swenshuai.xi 
461*53ee8cc1Swenshuai.xi //----- System Audio Control ------------------
462*53ee8cc1Swenshuai.xi     E_MSG_SAC_SET_AUDIO_RATE                    = 0x9A,
463*53ee8cc1Swenshuai.xi 
464*53ee8cc1Swenshuai.xi 
465*53ee8cc1Swenshuai.xi //----- Audio Return Channel  Control ------------------
466*53ee8cc1Swenshuai.xi     E_MSG_ARC_INITIATE_ARC                      = 0xC0,
467*53ee8cc1Swenshuai.xi     E_MSG_ARC_REPORT_ARC_INITIATED              = 0xC1,
468*53ee8cc1Swenshuai.xi     E_MSG_ARC_REPORT_ARC_TERMINATED             = 0xC2,
469*53ee8cc1Swenshuai.xi 
470*53ee8cc1Swenshuai.xi     E_MSG_ARC_REQUEST_ARC_INITATION             = 0xC3, // should be removed
471*53ee8cc1Swenshuai.xi     E_MSG_ARC_REQUEST_ARC_INITIATION            = 0xC3,
472*53ee8cc1Swenshuai.xi 
473*53ee8cc1Swenshuai.xi     E_MSG_ARC_REQUEST_ARC_TERMINATION           = 0xC4,
474*53ee8cc1Swenshuai.xi 
475*53ee8cc1Swenshuai.xi     E_MSG_ARC_TERMINATED_ARC                    = 0xC5, // should be removed
476*53ee8cc1Swenshuai.xi     E_MSG_ARC_TERMINATE_ARC                     = 0xC5,
477*53ee8cc1Swenshuai.xi 
478*53ee8cc1Swenshuai.xi 
479*53ee8cc1Swenshuai.xi //----- Capability Discovery and Control ------------------
480*53ee8cc1Swenshuai.xi     E_MSG_CDC_CDC_MESSAGE                       = 0xF8,
481*53ee8cc1Swenshuai.xi 
482*53ee8cc1Swenshuai.xi } MsCEC_MSGLIST;
483*53ee8cc1Swenshuai.xi 
484*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_TRANS_TYPE
485*53ee8cc1Swenshuai.xi {
486*53ee8cc1Swenshuai.xi     E_TRANS_BROADCAST_MSG   = 0,
487*53ee8cc1Swenshuai.xi     E_TRANS_DIRECT_MSG      = 1,
488*53ee8cc1Swenshuai.xi     E_TRANS_BOTHTYPE_MSG    = 2,
489*53ee8cc1Swenshuai.xi } MsCEC_MSG_TRANS_TYPE;
490*53ee8cc1Swenshuai.xi 
491*53ee8cc1Swenshuai.xi 
492*53ee8cc1Swenshuai.xi //Device Type, 1byte
493*53ee8cc1Swenshuai.xi typedef enum _MsCEC_DEVICE_TYPE
494*53ee8cc1Swenshuai.xi {
495*53ee8cc1Swenshuai.xi     E_DEVICE_TYPE_TV                    =0,
496*53ee8cc1Swenshuai.xi     E_DEVICE_TYPE_RECORDING_DEVICE      =1,
497*53ee8cc1Swenshuai.xi     E_DEVICE_TYPE_RESERVED              =2,
498*53ee8cc1Swenshuai.xi     E_DEVICE_TYPE_TUNER                 =3,
499*53ee8cc1Swenshuai.xi     E_DEVICE_TYPE_PLAYBACK_DEVICE       =4,
500*53ee8cc1Swenshuai.xi     E_DEVICE_TYPE_AUDIO_SYSTEM          =5,
501*53ee8cc1Swenshuai.xi } MsCEC_DEVICE_TYPE;
502*53ee8cc1Swenshuai.xi 
503*53ee8cc1Swenshuai.xi 
504*53ee8cc1Swenshuai.xi //Deck Control, Deck Control Mode 1 byte
505*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_DC_DECK_CTRL_PARM
506*53ee8cc1Swenshuai.xi {
507*53ee8cc1Swenshuai.xi     E_MSG_DCM_CMD_SKIP_FORWARD          = 1,  //parameter
508*53ee8cc1Swenshuai.xi     E_MSG_DCM_CMD_SKIP_REVERSE          = 2,  //parameter
509*53ee8cc1Swenshuai.xi     E_MSG_DCM_CMD_STOP                  = 3,  //parameter
510*53ee8cc1Swenshuai.xi     E_MSG_DCM_CMD_EJECT                 = 4,  //parameter
511*53ee8cc1Swenshuai.xi } MsCEC_MSG_DC_DECK_CTRL_PARM;
512*53ee8cc1Swenshuai.xi 
513*53ee8cc1Swenshuai.xi //Deck status, Deck info 1 byte
514*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_DC_DECK_STATUS_PARM
515*53ee8cc1Swenshuai.xi {
516*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_PLAY                   = 0x11,  //parameter
517*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_RECORD                 = 0x12,  //parameter
518*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_PLAY_REVERSE           = 0x13,  //parameter
519*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_STILL                  = 0x14,  //parameter
520*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_SLOW                   = 0x15,  //parameter
521*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_SLOW_REVERSE           = 0x16,  //parameter
522*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_FAST_FORWARD           = 0x17,  //parameter
523*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_FAST_REVERSE           = 0x18,  //parameter
524*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_NO_MEDIA               = 0x19,  //parameter
525*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_STOP                   = 0x1A,  //parameter
526*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_SKIP_FORWARD           = 0x1B,  //parameter
527*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_SKIP_REVERSE           = 0x1C,  //parameter
528*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_INDEX_SEARCH_FORWARD   = 0x1D,  //parameter
529*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_INDEX_SEARCH_REVERSE   = 0x1E,  //parameter
530*53ee8cc1Swenshuai.xi     E_MSG_DI_CMD_OTHER_STATUS           = 0x1F,  //parameter
531*53ee8cc1Swenshuai.xi } MsCEC_MSG_DC_DECK_STATUS_PARM;
532*53ee8cc1Swenshuai.xi 
533*53ee8cc1Swenshuai.xi 
534*53ee8cc1Swenshuai.xi //Give deck status, Status request 1 byte
535*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_STATUS_REQUEST_PARM
536*53ee8cc1Swenshuai.xi {
537*53ee8cc1Swenshuai.xi     E_MSG_SR_CMD_ON                     = 1,  //parameter
538*53ee8cc1Swenshuai.xi     E_MSG_SR_CMD_OFF                    = 2,  //parameter
539*53ee8cc1Swenshuai.xi     E_MSG_SR_CMD_ONCE                   = 3,  //parameter
540*53ee8cc1Swenshuai.xi } MsCEC_MSG_STATUS_REQUEST_PARM;
541*53ee8cc1Swenshuai.xi 
542*53ee8cc1Swenshuai.xi 
543*53ee8cc1Swenshuai.xi //Play, [Play Mode] 1 byte
544*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_DC_PLAY_PARM
545*53ee8cc1Swenshuai.xi {
546*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_PLAY_FORWARD               = 0x24,  //parameter
547*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_PLAY_REVERSE               = 0x20,  //parameter
548*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_PLAY_STILL                 = 0x25,  //parameter
549*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_FAST_FORWARD_MINI_SPEED    = 0x05,  //parameter
550*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_FAST_FORWARD_MEDIUM_SPEED  = 0x06,  //parameter
551*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_FAST_FORWARD_MAXI_SPEED    = 0x07,  //parameter
552*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_FAST_REVERSE_MINI_SPEED    = 0x09,  //parameter
553*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_FAST_REVERSE_MEDIUM_SPEED  = 0x0A,  //parameter
554*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_FAST_REVERSE_MAXI_SPEED    = 0x0B,  //parameter
555*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_SLOW_FORWARD_MINI_SPEED    = 0x15,  //parameter
556*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_SLOW_FORWARD_MEDIUM_SPEED  = 0x16,  //parameter
557*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_SLOW_FORWARD_MAXI_SPEED    = 0x17,  //parameter
558*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_SLOW_REVERSE_MINI_SPEED    = 0x19,  //parameter
559*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_SLOW_REVERSE_MEDIUM_SPEED  = 0x1A,  //parameter
560*53ee8cc1Swenshuai.xi     E_MSG_PM_CMD_SLOW_REVERSE_MAXI_SPEED    = 0x1B,  //parameter
561*53ee8cc1Swenshuai.xi } MsCEC_MSG_DC_PLAY_PARM;
562*53ee8cc1Swenshuai.xi 
563*53ee8cc1Swenshuai.xi 
564*53ee8cc1Swenshuai.xi //Power status 1 byte
565*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_POWER_STATUS_PARM
566*53ee8cc1Swenshuai.xi {
567*53ee8cc1Swenshuai.xi     E_MSG_PWRSTA_ON             = 0x00,
568*53ee8cc1Swenshuai.xi     E_MSG_PWRSTA_STANDBY        = 0x01,
569*53ee8cc1Swenshuai.xi     E_MSG_PWRSTA_STANDBY2ON     = 0x02,
570*53ee8cc1Swenshuai.xi     E_MSG_PWRSTA_ON2STANDBY     = 0x03,
571*53ee8cc1Swenshuai.xi     E_MSG_PWRSTA_UNKNOW                 = 0x04,
572*53ee8cc1Swenshuai.xi } MsCEC_MSG_POWER_STATUS_PARM;
573*53ee8cc1Swenshuai.xi 
574*53ee8cc1Swenshuai.xi 
575*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_ABORT_REASON
576*53ee8cc1Swenshuai.xi {
577*53ee8cc1Swenshuai.xi     E_MSG_AR_UNRECOGNIZE_OPCDE  = 0x00,  // abort reason
578*53ee8cc1Swenshuai.xi     E_MSG_AR_CANNOTRESPOND      = 0x01,  // abort reason
579*53ee8cc1Swenshuai.xi     E_MSG_AR_CANNOTPROVIDESCR   = 0x02,  // abort reason
580*53ee8cc1Swenshuai.xi     E_MSG_AR_INVALID_OPCODE     = 0x03,  // abort reason
581*53ee8cc1Swenshuai.xi     E_MSG_AR_REFUSED            = 0x04,  // abort reason
582*53ee8cc1Swenshuai.xi     E_MSG_AR_IGNORED            = 0x05,
583*53ee8cc1Swenshuai.xi     E_MSG_AR_SUCCESSED        = 0x06,
584*53ee8cc1Swenshuai.xi } MsCEC_MSG_ABORT_REASON;
585*53ee8cc1Swenshuai.xi 
586*53ee8cc1Swenshuai.xi 
587*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_MENU_REQ_TYPE
588*53ee8cc1Swenshuai.xi {
589*53ee8cc1Swenshuai.xi     E_MSG_MENU_REQ_ACTIVATED    = 0,  // menu request activated status
590*53ee8cc1Swenshuai.xi     E_MSG_MENU_REQ_DEACTIVATED  = 1,  // menu request deactivated status
591*53ee8cc1Swenshuai.xi     E_MSG_MENU_REQ_QUERY        = 2,  // menu request query status
592*53ee8cc1Swenshuai.xi } MsCEC_MSG_MENU_REQ_TYPE;
593*53ee8cc1Swenshuai.xi 
594*53ee8cc1Swenshuai.xi 
595*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_MENU_STATE
596*53ee8cc1Swenshuai.xi {
597*53ee8cc1Swenshuai.xi     E_MSG_MENU_ACTIVATED    = 0,  // menu activated
598*53ee8cc1Swenshuai.xi     E_MSG_MENU_DEACTIVATED  = 1,  // menu deactivated
599*53ee8cc1Swenshuai.xi } MsCEC_MSG_MENU_STATE;
600*53ee8cc1Swenshuai.xi 
601*53ee8cc1Swenshuai.xi 
602*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_RECORD_SOURCE_TYPE
603*53ee8cc1Swenshuai.xi {
604*53ee8cc1Swenshuai.xi     E_MSG_RECORD_TYPE_OWN_SOURCE                = 1,  // own source
605*53ee8cc1Swenshuai.xi     E_MSG_RECORD_TYPE_DIGITAL_SERVICE           = 2,  // digital service
606*53ee8cc1Swenshuai.xi #if(HDMI_CEC_VERSION >= CEC_VERSION_13a)
607*53ee8cc1Swenshuai.xi     E_MSG_RECORD_TYPE_ANALOGUE_SERVICE          = 3,  // Analogue Service
608*53ee8cc1Swenshuai.xi     E_MSG_RECORD_TYPE_EXTERNAL_PLUG             = 4,  // External Plug
609*53ee8cc1Swenshuai.xi     E_MSG_RECORD_TYPE_EXTERNAL_PHYSICAL_ADDRESS = 5,  // External Physical Address
610*53ee8cc1Swenshuai.xi #endif
611*53ee8cc1Swenshuai.xi } MsCEC_MSG_RECORD_SOURCE_TYPE;
612*53ee8cc1Swenshuai.xi 
613*53ee8cc1Swenshuai.xi 
614*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_RECORD_STATUS_INFO
615*53ee8cc1Swenshuai.xi {
616*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_RECORDING_OWN_SOURCE   = 0x01,  // Recording currently selected source
617*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_RECORDING_DIGITAL_SERVICE   = 0x02,  // Recording Digital Service
618*53ee8cc1Swenshuai.xi #if(HDMI_CEC_VERSION >= CEC_VERSION_13a)
619*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_RECORDING_ANALOGUE_SERVICE   = 0x03,  // Recording Analogue Service
620*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_RECORDING_EXTERNAL_INPUT   = 0x04,  // Recording External input
621*53ee8cc1Swenshuai.xi #endif
622*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_DIGITAL_SERVICE   = 0x05,  // unable to record Digital Service, no suitable tuner.
623*53ee8cc1Swenshuai.xi #if(HDMI_CEC_VERSION >= CEC_VERSION_13a)
624*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_ANALOGUE_SERVICE   = 0x06,  // unable to record Analogue Service, no suitable tuner.
625*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.
626*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_INVALID_EXTERNAL_PLUG_NUMBER   = 0x09,  // invalid External plug number
627*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_INVALID_EXTERNAL_PHYSICAL_ADDRESS   = 0x0A,  // invalid External Physical Address
628*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_CA_NOT_SUPPORT   = 0x0B,  // CA system not supported
629*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_CA_NO   = 0x0C,  // No or Insufficient CA Entitlements
630*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_COPY_NEVER   = 0x0D,  // Not allowed to copy source, source is ��copy never��.
631*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_NO_FURTHER_COPY   = 0x0E,  // No further copies allowed
632*53ee8cc1Swenshuai.xi #endif
633*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_NO_MEDIA   = 0x10,  // no media
634*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_PLAYING   = 0x11,  // Playing
635*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_ALREADY_RECORDING   = 0x12,  // already recording
636*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_MEDIA_PROTECTED   = 0x13,  // media protected
637*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_NO_SOURCE  = 0x14,  // no source signal
638*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_MEDIA_PROBLEM  = 0x15,  // media problem
639*53ee8cc1Swenshuai.xi #if(HDMI_CEC_VERSION >= CEC_VERSION_13a)
640*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_NOT_ENOUGH_SPACE  = 0x16,  // not enough space available
641*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_PARENTAL_LOCK  = 0x17,  // Parental Lock On
642*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_RECORDING_TERMINATED_NORMALLY  = 0x1A,  // Recording terminated normally, can optionally be sent in response to a <Record Off> message.
643*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.
644*53ee8cc1Swenshuai.xi #endif
645*53ee8cc1Swenshuai.xi     E_MSG_RECORD_INFO_NO_RECORDING_OTHER_REASON  = 0x1F,  // No recording �V other reason
646*53ee8cc1Swenshuai.xi } MsCEC_MSG_RECORD_STATUS_INFO;
647*53ee8cc1Swenshuai.xi 
648*53ee8cc1Swenshuai.xi 
649*53ee8cc1Swenshuai.xi //UI command parameter: Table 27 User Control Codes
650*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_USER_CTRL_PARM
651*53ee8cc1Swenshuai.xi {
652*53ee8cc1Swenshuai.xi     E_MSG_UI_SELECT             = 0x00,
653*53ee8cc1Swenshuai.xi     E_MSG_UI_UP                 = 0x01,
654*53ee8cc1Swenshuai.xi     E_MSG_UI_DOWN               = 0x02,
655*53ee8cc1Swenshuai.xi     E_MSG_UI_LEFT               = 0x03,
656*53ee8cc1Swenshuai.xi     E_MSG_UI_RIGHT              = 0x04,
657*53ee8cc1Swenshuai.xi     E_MSG_UI_RIGHT_UP           = 0x05,
658*53ee8cc1Swenshuai.xi     E_MSG_UI_RIGHT_DOWN         = 0x06,
659*53ee8cc1Swenshuai.xi     E_MSG_UI_LEFT_UP            = 0x07,
660*53ee8cc1Swenshuai.xi     E_MSG_UI_LEFT_DOWN          = 0x08,
661*53ee8cc1Swenshuai.xi     E_MSG_UI_ROOTMENU           = 0x09,
662*53ee8cc1Swenshuai.xi     E_MSG_UI_SETUP_MENU         = 0x0A,
663*53ee8cc1Swenshuai.xi     E_MSG_UI_CONTENTS_MENU      = 0x0B,
664*53ee8cc1Swenshuai.xi     E_MSG_UI_FAVORITE_MENU      = 0x0C,
665*53ee8cc1Swenshuai.xi     E_MSG_UI_EXIT               = 0x0D,
666*53ee8cc1Swenshuai.xi 
667*53ee8cc1Swenshuai.xi // 0x0E ~ 0x1F  reserved
668*53ee8cc1Swenshuai.xi 
669*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_0           = 0x20,
670*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_1           = 0x21,
671*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_2           = 0x22,
672*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_3           = 0x23,
673*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_4           = 0x24,
674*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_5           = 0x25,
675*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_6           = 0x26,
676*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_7           = 0x27,
677*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_8           = 0x28,
678*53ee8cc1Swenshuai.xi     E_MSG_UI_NUMBER_9           = 0x29,
679*53ee8cc1Swenshuai.xi 
680*53ee8cc1Swenshuai.xi     E_MSG_UI_DOT                = 0x2A,
681*53ee8cc1Swenshuai.xi     E_MSG_UI_ENTER              = 0x2B,
682*53ee8cc1Swenshuai.xi     E_MSG_UI_CLEAR              = 0x2C,
683*53ee8cc1Swenshuai.xi 
684*53ee8cc1Swenshuai.xi // 0x2D ~ 0x2E reserved
685*53ee8cc1Swenshuai.xi     E_MSG_UI_NEXT_FAVORITE      = 0x2F,
686*53ee8cc1Swenshuai.xi 
687*53ee8cc1Swenshuai.xi     E_MSG_UI_CHANNEL_UP         = 0x30,
688*53ee8cc1Swenshuai.xi     E_MSG_UI_CHANNEL_DOWN       = 0x31,
689*53ee8cc1Swenshuai.xi     E_MSG_UI_PREVIOUS_CHANNEL   = 0x32,
690*53ee8cc1Swenshuai.xi     E_MSG_UI_SOUND_SELECT       = 0x33,
691*53ee8cc1Swenshuai.xi     E_MSG_UI_INPUT_SELECT       = 0x34,
692*53ee8cc1Swenshuai.xi     E_MSG_UI_DISPLAY_INFO       = 0x35,
693*53ee8cc1Swenshuai.xi     E_MSG_UI_HELP               = 0x36,
694*53ee8cc1Swenshuai.xi     E_MSG_UI_PAGE_UP            = 0x37,
695*53ee8cc1Swenshuai.xi     E_MSG_UI_PAGE_DOWN          = 0x38,
696*53ee8cc1Swenshuai.xi 
697*53ee8cc1Swenshuai.xi // 0x39 ~ 0x3F reserved
698*53ee8cc1Swenshuai.xi 
699*53ee8cc1Swenshuai.xi     E_MSG_UI_POWER              = 0x40,
700*53ee8cc1Swenshuai.xi     E_MSG_UI_VOLUME_UP          = 0x41,
701*53ee8cc1Swenshuai.xi     E_MSG_UI_VOLUME_DOWN        = 0x42,
702*53ee8cc1Swenshuai.xi     E_MSG_UI_MUTE               = 0x43,
703*53ee8cc1Swenshuai.xi     E_MSG_UI_PLAY               = 0x44,
704*53ee8cc1Swenshuai.xi     E_MSG_UI_STOP               = 0x45,
705*53ee8cc1Swenshuai.xi     E_MSG_UI_PAUSE              = 0x46,
706*53ee8cc1Swenshuai.xi     E_MSG_UI_RECORD             = 0x47,
707*53ee8cc1Swenshuai.xi     E_MSG_UI_REWIND             = 0x48,
708*53ee8cc1Swenshuai.xi     E_MSG_UI_FAST_FORWARD       = 0x49,
709*53ee8cc1Swenshuai.xi     E_MSG_UI_EJECT              = 0x4A,
710*53ee8cc1Swenshuai.xi     E_MSG_UI_FORWARD            = 0x4B,
711*53ee8cc1Swenshuai.xi     E_MSG_UI_BACKWARD           = 0x4C,
712*53ee8cc1Swenshuai.xi     E_MSG_UI_STOP_RECORD        = 0x4D,
713*53ee8cc1Swenshuai.xi     E_MSG_UI_PAUSE_RECORD       = 0x4E,
714*53ee8cc1Swenshuai.xi 
715*53ee8cc1Swenshuai.xi // 0x4F reserved
716*53ee8cc1Swenshuai.xi 
717*53ee8cc1Swenshuai.xi     E_MSG_UI_ANGLE                      = 0x50,
718*53ee8cc1Swenshuai.xi     E_MSG_UI_SUB_PICTURE                = 0x51,
719*53ee8cc1Swenshuai.xi     E_MSG_UI_VIDEO_ON_DEMAND            = 0x52,
720*53ee8cc1Swenshuai.xi     E_MSG_UI_ELECTRONIC_PROGRAM_GUIDE   = 0x53,
721*53ee8cc1Swenshuai.xi     E_MSG_UI_TIMER_PROGRAMMING          = 0x54,
722*53ee8cc1Swenshuai.xi     E_MSG_UI_INITIAL_CONFIGURATION      = 0x55,
723*53ee8cc1Swenshuai.xi 
724*53ee8cc1Swenshuai.xi // 0x56 ~ 0x5F reserved
725*53ee8cc1Swenshuai.xi 
726*53ee8cc1Swenshuai.xi   //0x60 ~ 0x6D, identified as function
727*53ee8cc1Swenshuai.xi     E_MSG_UI_PLAY_FUN               = 0x60,
728*53ee8cc1Swenshuai.xi     E_MSG_UI_PSUSE_PLAY_FUN         = 0x61,
729*53ee8cc1Swenshuai.xi     E_MSG_UI_RECORD_FUN             = 0x62,
730*53ee8cc1Swenshuai.xi     E_MSG_UI_PAUSE_RECORD_FUN       = 0x63,
731*53ee8cc1Swenshuai.xi     E_MSG_UI_STOP_FUN               = 0x64,
732*53ee8cc1Swenshuai.xi     E_MSG_UI_MUTE_FUN               = 0x65,
733*53ee8cc1Swenshuai.xi     E_MSG_UI_RESTORE_VOLUME_FUN     = 0x66,
734*53ee8cc1Swenshuai.xi     E_MSG_UI_TUNE_FUN               = 0x67,
735*53ee8cc1Swenshuai.xi     E_MSG_UI_SELECT_MEDIA_FUN       = 0x68,
736*53ee8cc1Swenshuai.xi     E_MSG_UI_SELECT_AV_INPUT_FUN    = 0x69,
737*53ee8cc1Swenshuai.xi     E_MSG_UI_SELECT_AUDIO_INPUT_FUN = 0x6A,
738*53ee8cc1Swenshuai.xi     E_MSG_UI_POWER_TOGGLE_FUN       = 0x6B,
739*53ee8cc1Swenshuai.xi     E_MSG_UI_POWER_OFF_FUN          = 0x6C,
740*53ee8cc1Swenshuai.xi     E_MSG_UI_POWER_ON_FUN           = 0x6D,
741*53ee8cc1Swenshuai.xi 
742*53ee8cc1Swenshuai.xi // 0x6E ~ 0x70 reserved
743*53ee8cc1Swenshuai.xi 
744*53ee8cc1Swenshuai.xi     E_MSG_UI_F1_BLUE            = 0x71,
745*53ee8cc1Swenshuai.xi     E_MSG_UI_F2_RED             = 0x72,
746*53ee8cc1Swenshuai.xi     E_MSG_UI_F3_GREEN           = 0x73,
747*53ee8cc1Swenshuai.xi     E_MSG_UI_F4_YELLOW          = 0x74,
748*53ee8cc1Swenshuai.xi     E_MSG_UI_F5                 = 0x75,
749*53ee8cc1Swenshuai.xi     E_MSG_UI_DATA               = 0x76,
750*53ee8cc1Swenshuai.xi 
751*53ee8cc1Swenshuai.xi // 0x77 ~ 0xFF reserved
752*53ee8cc1Swenshuai.xi } MsCEC_MSG_USER_CTRL_PARM;
753*53ee8cc1Swenshuai.xi 
754*53ee8cc1Swenshuai.xi //query the power on mode through mailbox
755*53ee8cc1Swenshuai.xi #define CP_READ_POWERON_MODE  0x9A
756*53ee8cc1Swenshuai.xi 
757*53ee8cc1Swenshuai.xi //mailbox report CEC wake up system
758*53ee8cc1Swenshuai.xi #define M_POWER_ON_BY_HDMI_CEC  0x2F
759*53ee8cc1Swenshuai.xi 
760*53ee8cc1Swenshuai.xi 
761*53ee8cc1Swenshuai.xi typedef struct _MDrv_Cec_RxData_Info
762*53ee8cc1Swenshuai.xi {
763*53ee8cc1Swenshuai.xi     MS_U8 ucLength;
764*53ee8cc1Swenshuai.xi     MS_U8 tRxData[16];
765*53ee8cc1Swenshuai.xi } MS_CEC_RxData_Info;
766*53ee8cc1Swenshuai.xi 
767*53ee8cc1Swenshuai.xi typedef struct _MDrv_CEC_INFO_LIST
768*53ee8cc1Swenshuai.xi {
769*53ee8cc1Swenshuai.xi     MS_U8 CecFifoIdxS;
770*53ee8cc1Swenshuai.xi     MS_U8 CecFifoIdxE;
771*53ee8cc1Swenshuai.xi     MS_U8 bCecMsgCnt;
772*53ee8cc1Swenshuai.xi     MS_BOOL fCecInitFinish;
773*53ee8cc1Swenshuai.xi     MS_CEC_RxData_Info CecRxBuf[CEC_FIFO_CNT];   //TV CEC H/W part
774*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA MyLogicalAddress;                         //TV related
775*53ee8cc1Swenshuai.xi     MS_U8 MyPhysicalAddress[2];
776*53ee8cc1Swenshuai.xi     MsCEC_DEVICE_TYPE MyDeviceType;
777*53ee8cc1Swenshuai.xi     MsCEC_MSG_POWER_STATUS_PARM MyPowerStatus;
778*53ee8cc1Swenshuai.xi     MS_BOOL CecDevicesExisted[15];
779*53ee8cc1Swenshuai.xi 
780*53ee8cc1Swenshuai.xi     MS_U8 ActiveDeviceCECVersion;
781*53ee8cc1Swenshuai.xi     MsCEC_DEVICE_TYPE ActiveDeviceType;
782*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA ActiveLogicalAddress;    //the remoter controller's active device
783*53ee8cc1Swenshuai.xi     MS_U8 ActivePhysicalAddress[2];
784*53ee8cc1Swenshuai.xi     MsCEC_MSG_POWER_STATUS_PARM ActivePowerStatus;
785*53ee8cc1Swenshuai.xi 
786*53ee8cc1Swenshuai.xi #if ENABLE_CEC_MULTIPLE
787*53ee8cc1Swenshuai.xi     MsCEC_DEVICELA MyLogicalAddress2;
788*53ee8cc1Swenshuai.xi     MS_U8 MyPhysicalAddress2[2];
789*53ee8cc1Swenshuai.xi     MsCEC_DEVICE_TYPE MyDeviceType2;
790*53ee8cc1Swenshuai.xi     MsCEC_DEVICE_TYPE IniLogicalAddress;
791*53ee8cc1Swenshuai.xi #endif
792*53ee8cc1Swenshuai.xi } MS_CEC_INFO_LIST;
793*53ee8cc1Swenshuai.xi 
794*53ee8cc1Swenshuai.xi typedef struct
795*53ee8cc1Swenshuai.xi {
796*53ee8cc1Swenshuai.xi     MS_U32 u32XTAL_CLK_Hz;
797*53ee8cc1Swenshuai.xi }MS_CEC_INIT_INFO;
798*53ee8cc1Swenshuai.xi 
799*53ee8cc1Swenshuai.xi 
800*53ee8cc1Swenshuai.xi 
801*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
802*53ee8cc1Swenshuai.xi //  Function and Variable
803*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
804*53ee8cc1Swenshuai.xi /**
805*53ee8cc1Swenshuai.xi *   @brief HDMI Status
806*53ee8cc1Swenshuai.xi */
807*53ee8cc1Swenshuai.xi typedef struct
808*53ee8cc1Swenshuai.xi {
809*53ee8cc1Swenshuai.xi     MS_BOOL bIsInitialized;
810*53ee8cc1Swenshuai.xi     MS_BOOL bIsRunning;
811*53ee8cc1Swenshuai.xi }MS_CEC_Status;
812*53ee8cc1Swenshuai.xi 
813*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
814*53ee8cc1Swenshuai.xi /// Assign which HDMI port connect to CEC
815*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
816*53ee8cc1Swenshuai.xi /// @param  InputPort          \b IN: CEC connect port
817*53ee8cc1Swenshuai.xi /// @return None
818*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
819*53ee8cc1Swenshuai.xi void SYMBOL_WEAK MApi_CEC_PortSelcet(MsCEC_INPUT_PORT InputPort);
820*53ee8cc1Swenshuai.xi 
821*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
822*53ee8cc1Swenshuai.xi /// Get version (without Mutex protect)
823*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
824*53ee8cc1Swenshuai.xi /// @param  ppVersion          \b IN: version
825*53ee8cc1Swenshuai.xi /// @return TRUE: have version
826*53ee8cc1Swenshuai.xi /// @return FALSE: no version
827*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
828*53ee8cc1Swenshuai.xi //  MS_BOOL  MApi_CEC_GetLibVer(const MSIF_Version **ppVersion);
829*53ee8cc1Swenshuai.xi 
830*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
831*53ee8cc1Swenshuai.xi /// Get cec info
832*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
833*53ee8cc1Swenshuai.xi /// @param  pInfo          \b IN: info list
834*53ee8cc1Swenshuai.xi /// @return TRUE: have info list
835*53ee8cc1Swenshuai.xi /// @return FALSE: no info list
836*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
837*53ee8cc1Swenshuai.xi //  MS_BOOL  MApi_DDC2BI_GetInfo(MS_CEC_INFO_LIST *pInfo);
838*53ee8cc1Swenshuai.xi 
839*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
840*53ee8cc1Swenshuai.xi /// Get cec status
841*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
842*53ee8cc1Swenshuai.xi /// @param  pStatus          \b IN: status
843*53ee8cc1Swenshuai.xi /// @return TRUE: have status
844*53ee8cc1Swenshuai.xi /// @return FALSE: no status
845*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
846*53ee8cc1Swenshuai.xi //  MS_BOOL  MApi_DDC2BI_GetStatus(MS_CEC_Status *pStatus);
847*53ee8cc1Swenshuai.xi 
848*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
849*53ee8cc1Swenshuai.xi /// Set debug level
850*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
851*53ee8cc1Swenshuai.xi /// @param  u16DbgSwitch          \b IN: switch or not
852*53ee8cc1Swenshuai.xi /// @return TRUE: do switch
853*53ee8cc1Swenshuai.xi /// @return FALSE: no switch
854*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
855*53ee8cc1Swenshuai.xi MS_BOOL  MApi_DDC2BI_SetDbgLevel(MS_U16 u16DbgSwitch);
856*53ee8cc1Swenshuai.xi 
857*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
858*53ee8cc1Swenshuai.xi /// CEC do not work
859*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
860*53ee8cc1Swenshuai.xi /// @return None
861*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------
862*53ee8cc1Swenshuai.xi void MApi_CEC_Exit(void);
863*53ee8cc1Swenshuai.xi 
864*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
865*53ee8cc1Swenshuai.xi /// CEC initial sequence
866*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
867*53ee8cc1Swenshuai.xi /// @param  pCECInfo          \b IN: CEC info
868*53ee8cc1Swenshuai.xi /// @return None
869*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
870*53ee8cc1Swenshuai.xi 
871*53ee8cc1Swenshuai.xi void MApi_CEC_Init(MS_CEC_INIT_INFO *pCECInfo);
872*53ee8cc1Swenshuai.xi 
873*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
874*53ee8cc1Swenshuai.xi /// CEC initial chip relatived part
875*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
876*53ee8cc1Swenshuai.xi /// @param  pCECInfo          \b IN: CEC info
877*53ee8cc1Swenshuai.xi /// @return None
878*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
879*53ee8cc1Swenshuai.xi void MApi_CEC_InitChip(MS_CEC_INIT_INFO *pCECInfo);
880*53ee8cc1Swenshuai.xi 
881*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
882*53ee8cc1Swenshuai.xi /// CEC set own logical address
883*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
884*53ee8cc1Swenshuai.xi /// @param  myLA          \b IN: logical address
885*53ee8cc1Swenshuai.xi /// @return None
886*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
887*53ee8cc1Swenshuai.xi void MApi_CEC_SetMyLogicalAddress(MsCEC_DEVICELA myLA);
888*53ee8cc1Swenshuai.xi 
889*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
890*53ee8cc1Swenshuai.xi /// Use to store CEC received messages
891*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
892*53ee8cc1Swenshuai.xi /// @return None
893*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------
894*53ee8cc1Swenshuai.xi void MApi_CEC_ChkRxBuf(void);
895*53ee8cc1Swenshuai.xi 
896*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
897*53ee8cc1Swenshuai.xi /// Use to send any CEC message by user defined
898*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
899*53ee8cc1Swenshuai.xi /// @param  header          \b IN: destination logical address
900*53ee8cc1Swenshuai.xi /// @param  opcode          \b IN: opcode
901*53ee8cc1Swenshuai.xi /// @param  operand_ptr          \b IN: operand
902*53ee8cc1Swenshuai.xi /// @param  len          \b IN: length
903*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
904*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
905*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_TxSendMsg(MsCEC_DEVICELA header,MsCEC_MSGLIST opcode,MS_U8* operand_ptr,MS_U8 len);
906*53ee8cc1Swenshuai.xi 
907*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
908*53ee8cc1Swenshuai.xi /// Use to send any CEC message by user defined
909*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_ToBeRemove
910*53ee8cc1Swenshuai.xi /// @param  dst_address          \b IN: destination logical address
911*53ee8cc1Swenshuai.xi /// @param  opcode          \b IN: opcode
912*53ee8cc1Swenshuai.xi /// @param  operand_ptr          \b IN: operand
913*53ee8cc1Swenshuai.xi /// @param  len          \b IN: length
914*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
915*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
916*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_TxSendMsg2(MsCEC_DEVICELA dst_address, MsCEC_MSGLIST msg, MS_U8* operand_ptr, MS_U8 len);
917*53ee8cc1Swenshuai.xi 
918*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
919*53ee8cc1Swenshuai.xi /// Use to send CEC polling msg
920*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
921*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
922*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
923*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
924*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MsAPI_CecTxSendPollingMsg(MsCEC_DEVICELA dst_address);
925*53ee8cc1Swenshuai.xi 
926*53ee8cc1Swenshuai.xi //*****************************//
927*53ee8cc1Swenshuai.xi //    One Touch Play &
928*53ee8cc1Swenshuai.xi //    Routing Control Feature
929*53ee8cc1Swenshuai.xi //*****************************//
930*53ee8cc1Swenshuai.xi 
931*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
932*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>
933*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
934*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
935*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
936*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_Msg_ActiveSource(void);
937*53ee8cc1Swenshuai.xi 
938*53ee8cc1Swenshuai.xi 
939*53ee8cc1Swenshuai.xi //*****************************//
940*53ee8cc1Swenshuai.xi //    Routing Control Feature
941*53ee8cc1Swenshuai.xi //*****************************//
942*53ee8cc1Swenshuai.xi 
943*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
944*53ee8cc1Swenshuai.xi /// Used by a CEC switch when it's manually switched to inform akk other devices
945*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
946*53ee8cc1Swenshuai.xi /// @param  orig_address       \b IN: the original physicall address
947*53ee8cc1Swenshuai.xi /// @param  new_address       \b IN: the new physical address
948*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
949*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
950*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_Msg_RoutingChange(MS_U8* orig_address, MS_U8* new_address);
951*53ee8cc1Swenshuai.xi 
952*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
953*53ee8cc1Swenshuai.xi /// Used by a new device to discover the status of the system.
954*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
955*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
956*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
957*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_ReqActiveSource(void);
958*53ee8cc1Swenshuai.xi 
959*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
960*53ee8cc1Swenshuai.xi /// Used by the TV to request a streaming path from the specified physical address.
961*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
962*53ee8cc1Swenshuai.xi /// @param  new_address       \b IN: the new physical address
963*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
964*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
965*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_Msg_SetStreamPath(MS_U8* new_address);
966*53ee8cc1Swenshuai.xi 
967*53ee8cc1Swenshuai.xi 
968*53ee8cc1Swenshuai.xi //*****************************//
969*53ee8cc1Swenshuai.xi //    Standby Feature
970*53ee8cc1Swenshuai.xi //*****************************//
971*53ee8cc1Swenshuai.xi 
972*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
973*53ee8cc1Swenshuai.xi /// Use to switch one or all devices into standby mode.
974*53ee8cc1Swenshuai.xi /// One device: it's specific logical address, like "E_LA_RECORDER1"
975*53ee8cc1Swenshuai.xi /// All device:   Use broadcast logical address, "E_LA_BROADCAST"
976*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
977*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
978*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
979*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
980*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_Msg_Standby(MsCEC_DEVICELA dst_address);
981*53ee8cc1Swenshuai.xi 
982*53ee8cc1Swenshuai.xi 
983*53ee8cc1Swenshuai.xi //*****************************//
984*53ee8cc1Swenshuai.xi //    On Touch Record
985*53ee8cc1Swenshuai.xi //*****************************//
986*53ee8cc1Swenshuai.xi 
987*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
988*53ee8cc1Swenshuai.xi /// Requests a device to stop a recording.
989*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
990*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
991*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
992*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
993*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_Msg_RecordOff(MsCEC_DEVICELA dst_address);
994*53ee8cc1Swenshuai.xi 
995*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
996*53ee8cc1Swenshuai.xi /// Attempt to record the specified source.
997*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
998*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
999*53ee8cc1Swenshuai.xi /// @param  cmd       \b IN: record source command
1000*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1001*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1002*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MsAPI_CEC_Msg_RecordOn(MsCEC_DEVICELA dst_address, MsCEC_MSG_RECORD_SOURCE_TYPE cmd);
1003*53ee8cc1Swenshuai.xi 
1004*53ee8cc1Swenshuai.xi 
1005*53ee8cc1Swenshuai.xi //*****************************//
1006*53ee8cc1Swenshuai.xi //    System Information Feature
1007*53ee8cc1Swenshuai.xi //*****************************//
1008*53ee8cc1Swenshuai.xi 
1009*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1010*53ee8cc1Swenshuai.xi /// Used to indicate the supported CEC version, in response to a <Get CEC Version>
1011*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1012*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1013*53ee8cc1Swenshuai.xi /// @param  version       \b IN: cec version
1014*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1015*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1016*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_Msg_ReportCECVersion(MsCEC_DEVICELA dst_address, MS_U8 version);
1017*53ee8cc1Swenshuai.xi 
1018*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1019*53ee8cc1Swenshuai.xi /// Used by a device to enquire which version of CEC the target supports
1020*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1021*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1022*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1023*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1024*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_ReqCECVersion(MsCEC_DEVICELA dst_address);
1025*53ee8cc1Swenshuai.xi 
1026*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1027*53ee8cc1Swenshuai.xi ///  Use to inform all other devices of the mapping between physical and logical address of the initiator
1028*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1029*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1030*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1031*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_Msg_ReportPhycalAddress(void);
1032*53ee8cc1Swenshuai.xi 
1033*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1034*53ee8cc1Swenshuai.xi /// A request to a device to return its physical address
1035*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1036*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1037*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1038*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1039*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_Msg_ReqPhycalAddress(MsCEC_DEVICELA dst_address);
1040*53ee8cc1Swenshuai.xi 
1041*53ee8cc1Swenshuai.xi 
1042*53ee8cc1Swenshuai.xi //*****************************//
1043*53ee8cc1Swenshuai.xi //    Deck Control Feature
1044*53ee8cc1Swenshuai.xi //*****************************//
1045*53ee8cc1Swenshuai.xi 
1046*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1047*53ee8cc1Swenshuai.xi ///  Use to control a device's media functions
1048*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1049*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1050*53ee8cc1Swenshuai.xi /// @param  cmd       \b IN: deck control mode command
1051*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1052*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1053*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_Msg_DeckControl(MsCEC_DEVICELA dst_address, MsCEC_MSG_DC_DECK_CTRL_PARM cmd);
1054*53ee8cc1Swenshuai.xi 
1055*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1056*53ee8cc1Swenshuai.xi ///  Use to provide a device's status when received "Give Deck Status"
1057*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1058*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1059*53ee8cc1Swenshuai.xi /// @param  cmd       \b IN: deck info command
1060*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1061*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1062*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_Msg_DecStatus(MsCEC_DEVICELA dst_address, MsCEC_MSG_DC_DECK_STATUS_PARM cmd);
1063*53ee8cc1Swenshuai.xi 
1064*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1065*53ee8cc1Swenshuai.xi ///  Use to request device's status
1066*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1067*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1068*53ee8cc1Swenshuai.xi /// @param  cmd       \b IN: status request command
1069*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1070*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1071*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_MSg_GiveDeckStatus(MsCEC_DEVICELA dst_address, MsCEC_MSG_STATUS_REQUEST_PARM cmd);
1072*53ee8cc1Swenshuai.xi 
1073*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1074*53ee8cc1Swenshuai.xi ///  Use to control the playback behaviour of a source device
1075*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1076*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1077*53ee8cc1Swenshuai.xi /// @param  cmd       \b IN: play mode command
1078*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1079*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1080*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_MSg_DCPlay(MsCEC_DEVICELA dst_address, MsCEC_MSG_DC_PLAY_PARM cmd);
1081*53ee8cc1Swenshuai.xi 
1082*53ee8cc1Swenshuai.xi 
1083*53ee8cc1Swenshuai.xi //*****************************//
1084*53ee8cc1Swenshuai.xi //    Device Menu Control &
1085*53ee8cc1Swenshuai.xi //    Remote Control Passthrough Feature
1086*53ee8cc1Swenshuai.xi //*****************************//
1087*53ee8cc1Swenshuai.xi 
1088*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1089*53ee8cc1Swenshuai.xi ///  Request from TV for a device to show/remove a menu or to query status
1090*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1091*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1092*53ee8cc1Swenshuai.xi /// @param  cmd       \b IN: menu request type command
1093*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1094*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1095*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_Msg_ReqMenuStatus(MsCEC_DEVICELA dst_address, MsCEC_MSG_MENU_REQ_TYPE cmd);
1096*53ee8cc1Swenshuai.xi 
1097*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1098*53ee8cc1Swenshuai.xi /// Use to indicated that user pressed which control button
1099*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1100*53ee8cc1Swenshuai.xi /// @param  bUserCtrlEn       \b IN: menu status is activated or not
1101*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1102*53ee8cc1Swenshuai.xi /// @param  cmd       \b IN: UI command
1103*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1104*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1105*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_Msg_UserCtrlPressed(MS_BOOL bUserCtrlEn, MsCEC_DEVICELA dst_address, MsCEC_MSG_USER_CTRL_PARM cmd);
1106*53ee8cc1Swenshuai.xi 
1107*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1108*53ee8cc1Swenshuai.xi /// Use to indicated that user released which control button
1109*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1110*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1111*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1112*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1113*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_Msg_UserCtrlReleased(MsCEC_DEVICELA dst_address);
1114*53ee8cc1Swenshuai.xi 
1115*53ee8cc1Swenshuai.xi 
1116*53ee8cc1Swenshuai.xi //*****************************//
1117*53ee8cc1Swenshuai.xi //    Power Status Feature
1118*53ee8cc1Swenshuai.xi //*****************************//
1119*53ee8cc1Swenshuai.xi 
1120*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1121*53ee8cc1Swenshuai.xi /// Use to inform a requesting device of the current power status
1122*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1123*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1124*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1125*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1126*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_Msg_ReportPowerStatus(MsCEC_DEVICELA dst_address);
1127*53ee8cc1Swenshuai.xi 
1128*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1129*53ee8cc1Swenshuai.xi /// Use to determine the current power status of a target device
1130*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1131*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1132*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1133*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1134*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_Msg_ReqPowerStatus(MsCEC_DEVICELA dst_address);
1135*53ee8cc1Swenshuai.xi 
1136*53ee8cc1Swenshuai.xi 
1137*53ee8cc1Swenshuai.xi //*****************************//
1138*53ee8cc1Swenshuai.xi //    General Protocol Feature
1139*53ee8cc1Swenshuai.xi //*****************************//
1140*53ee8cc1Swenshuai.xi 
1141*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1142*53ee8cc1Swenshuai.xi /// Use to indicate that device doesn't support message type
1143*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1144*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1145*53ee8cc1Swenshuai.xi /// @param  msg       \b IN: feature opcode
1146*53ee8cc1Swenshuai.xi /// @param  cmd       \b IN: abort reason
1147*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1148*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1149*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_Msg_FeatureAbort(MsCEC_DEVICELA dst_address, MsCEC_MSGLIST msg, MsCEC_MSG_ABORT_REASON cmd);
1150*53ee8cc1Swenshuai.xi 
1151*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1152*53ee8cc1Swenshuai.xi /// This message is reserved for testing purposes.
1153*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1154*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1155*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1156*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1157*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_Msg_Abort(MsCEC_DEVICELA dst_address);
1158*53ee8cc1Swenshuai.xi 
1159*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1160*53ee8cc1Swenshuai.xi /// Used by a TV to indicate its currently selected menu language
1161*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1162*53ee8cc1Swenshuai.xi /// @param  pu8MenuLanguageCode       \b IN: menu language code
1163*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1164*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1165*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_Msg_SendMenuLanguage(MS_U8* pu8MenuLanguageCode);
1166*53ee8cc1Swenshuai.xi 
1167*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1168*53ee8cc1Swenshuai.xi /// Used by an ARC TX device to request an ARC RX device to activate the ARC functionility in ARC TX device
1169*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1170*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1171*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1172*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1173*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MsAPI_CecMsg_ReqARCInitiation(MsCEC_DEVICELA dst_address);
1174*53ee8cc1Swenshuai.xi 
1175*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1176*53ee8cc1Swenshuai.xi /// Used by an ARC TX device to request an ARC RX device to deactivate the ARC functionility in ARC TX device
1177*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1178*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1179*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1180*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1181*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MsAPI_CecMsg_ReqARCTermination(MsCEC_DEVICELA dst_address);
1182*53ee8cc1Swenshuai.xi 
1183*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1184*53ee8cc1Swenshuai.xi /// A device implementing System Audio Control and which has volume control  RC buttons request to use System Audio Mode to the Amplifier
1185*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1186*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1187*53ee8cc1Swenshuai.xi /// @param  amp_switch       \b IN: 1: unmute amplifier. 0: mute amplifier
1188*53ee8cc1Swenshuai.xi /// @param  my_address       \b IN: source to be used is the device specified at this address
1189*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1190*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1191*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MsAPI_CecMsg_AudioModeReq(MsCEC_DEVICELA dst_address, MS_BOOL amp_switch, MS_U8* my_address );
1192*53ee8cc1Swenshuai.xi 
1193*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1194*53ee8cc1Swenshuai.xi /// Use to request an Amplifier to send its volume and mute status
1195*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message
1196*53ee8cc1Swenshuai.xi /// @param  dst_address       \b IN: destination logical address
1197*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1198*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1199*53ee8cc1Swenshuai.xi //  CEC_ERROR_CODE MApi_CEC_Msg_GiveAudioStatus(MsCEC_DEVICELA dst_address);
1200*53ee8cc1Swenshuai.xi 
1201*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1202*53ee8cc1Swenshuai.xi /// Get RX header
1203*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1204*53ee8cc1Swenshuai.xi /// @return header
1205*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1206*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_Get_Header(void);
1207*53ee8cc1Swenshuai.xi 
1208*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1209*53ee8cc1Swenshuai.xi /// Get RX opcode
1210*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1211*53ee8cc1Swenshuai.xi /// @return opcode
1212*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1213*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_Get_OpCode(void);
1214*53ee8cc1Swenshuai.xi 
1215*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1216*53ee8cc1Swenshuai.xi /// Get RX parameter
1217*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1218*53ee8cc1Swenshuai.xi /// @param  u8Idx       \b IN: parameter index
1219*53ee8cc1Swenshuai.xi /// @return parameter
1220*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1221*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_Get_Para(MS_U8 u8Idx);
1222*53ee8cc1Swenshuai.xi 
1223*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1224*53ee8cc1Swenshuai.xi /// Get RX command length
1225*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1226*53ee8cc1Swenshuai.xi /// @return comand length
1227*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1228*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_GetCmdLen(void);
1229*53ee8cc1Swenshuai.xi 
1230*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1231*53ee8cc1Swenshuai.xi /// Set active logical address
1232*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1233*53ee8cc1Swenshuai.xi /// @param  Addr       \b IN: logical address
1234*53ee8cc1Swenshuai.xi /// @return None
1235*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1236*53ee8cc1Swenshuai.xi //  void MApi_CEC_SetActiveLogicalAddress(MsCEC_DEVICELA Addr);
1237*53ee8cc1Swenshuai.xi 
1238*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1239*53ee8cc1Swenshuai.xi /// Get active logical address
1240*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1241*53ee8cc1Swenshuai.xi /// @return logical address
1242*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1243*53ee8cc1Swenshuai.xi //  MsCEC_DEVICELA MApi_CEC_GetActiveLogicalAddress(void);
1244*53ee8cc1Swenshuai.xi 
1245*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1246*53ee8cc1Swenshuai.xi /// Get power status
1247*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1248*53ee8cc1Swenshuai.xi /// @return power status
1249*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1250*53ee8cc1Swenshuai.xi //  MsCEC_MSG_POWER_STATUS_PARM MApi_CEC_GetPowerStatus(void);
1251*53ee8cc1Swenshuai.xi 
1252*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1253*53ee8cc1Swenshuai.xi /// Get fifo index
1254*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1255*53ee8cc1Swenshuai.xi /// @return fifo index
1256*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1257*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_GetFifoIdx(void);
1258*53ee8cc1Swenshuai.xi 
1259*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1260*53ee8cc1Swenshuai.xi /// Set fifo index
1261*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1262*53ee8cc1Swenshuai.xi /// @param  u8Idx       \b IN: fifo index
1263*53ee8cc1Swenshuai.xi /// @return None
1264*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1265*53ee8cc1Swenshuai.xi void MApi_CEC_SetFifoIdx(MS_U8 u8Idx);
1266*53ee8cc1Swenshuai.xi 
1267*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1268*53ee8cc1Swenshuai.xi /// Set active power status
1269*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1270*53ee8cc1Swenshuai.xi /// @param  Status       \b IN: active power status
1271*53ee8cc1Swenshuai.xi /// @return None
1272*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1273*53ee8cc1Swenshuai.xi //  void MApi_CEC_SetActivePowerStatus(MsCEC_MSG_POWER_STATUS_PARM Status);
1274*53ee8cc1Swenshuai.xi 
1275*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1276*53ee8cc1Swenshuai.xi /// Get active power status
1277*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1278*53ee8cc1Swenshuai.xi /// @return power status
1279*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1280*53ee8cc1Swenshuai.xi //  MsCEC_MSG_POWER_STATUS_PARM MApi_CEC_GetActivePowerStatus(void);
1281*53ee8cc1Swenshuai.xi 
1282*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1283*53ee8cc1Swenshuai.xi /// Set active physical address
1284*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1285*53ee8cc1Swenshuai.xi /// @param  u8Para1       \b IN: physical address lower byte
1286*53ee8cc1Swenshuai.xi /// @param  u8Para2       \b IN: physical address higer byte
1287*53ee8cc1Swenshuai.xi /// @return None
1288*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1289*53ee8cc1Swenshuai.xi //  void MApi_CEC_SetActivePhysicalAddress(MS_U8 u8Para1, MS_U8 u8Para2);
1290*53ee8cc1Swenshuai.xi 
1291*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1292*53ee8cc1Swenshuai.xi /// Set active device CEC version
1293*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1294*53ee8cc1Swenshuai.xi /// @param  u8Ver       \b IN: active cec version
1295*53ee8cc1Swenshuai.xi /// @return None
1296*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1297*53ee8cc1Swenshuai.xi //  void MApi_CEC_SetActiveDeviceCECVersion(MS_U8 u8Ver);
1298*53ee8cc1Swenshuai.xi 
1299*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1300*53ee8cc1Swenshuai.xi /// Set active device type
1301*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1302*53ee8cc1Swenshuai.xi /// @param  Type       \b IN: active device type
1303*53ee8cc1Swenshuai.xi /// @return None
1304*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1305*53ee8cc1Swenshuai.xi void MApi_CEC_SetActiveDeviceType(MsCEC_DEVICE_TYPE Type);
1306*53ee8cc1Swenshuai.xi 
1307*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1308*53ee8cc1Swenshuai.xi /// Get message count
1309*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1310*53ee8cc1Swenshuai.xi /// @return message count
1311*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1312*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_GetMsgCnt(void);
1313*53ee8cc1Swenshuai.xi 
1314*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1315*53ee8cc1Swenshuai.xi /// Set message count
1316*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1317*53ee8cc1Swenshuai.xi /// @param  u8Cnt       \b IN: message count
1318*53ee8cc1Swenshuai.xi /// @return None
1319*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1320*53ee8cc1Swenshuai.xi void MApi_CEC_SetMsgCnt(MS_U8 u8Cnt);
1321*53ee8cc1Swenshuai.xi 
1322*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1323*53ee8cc1Swenshuai.xi /// Get Rx data
1324*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1325*53ee8cc1Swenshuai.xi /// @param  u8Fifoidx       \b IN: fifo index
1326*53ee8cc1Swenshuai.xi /// @param  u8Idx       \b IN: data index
1327*53ee8cc1Swenshuai.xi /// @return data
1328*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1329*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_GetRxData(MS_U8 u8Fifoidx, MS_U8 u8Idx);
1330*53ee8cc1Swenshuai.xi 
1331*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1332*53ee8cc1Swenshuai.xi /// Use to check CEC frame is valid or not
1333*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1334*53ee8cc1Swenshuai.xi /// @param  msg_type       \b IN: CEC message type
1335*53ee8cc1Swenshuai.xi /// @param  ucLen       \b IN: message length, include header and opcode
1336*53ee8cc1Swenshuai.xi /// @return TRUE: CEC frame is valid
1337*53ee8cc1Swenshuai.xi /// @return FALSE: CEC frame is not valid
1338*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1339*53ee8cc1Swenshuai.xi MS_BOOL MApi_CEC_CheckFrame(MsCEC_MSG_TRANS_TYPE msg_type, MS_U8 ucLen);
1340*53ee8cc1Swenshuai.xi 
1341*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1342*53ee8cc1Swenshuai.xi /// Use to check exist devices
1343*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1344*53ee8cc1Swenshuai.xi /// @return None
1345*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1346*53ee8cc1Swenshuai.xi void MApi_CEC_CheckExistDevices(void);
1347*53ee8cc1Swenshuai.xi 
1348*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1349*53ee8cc1Swenshuai.xi /// Use to config wake up
1350*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1351*53ee8cc1Swenshuai.xi /// @return None
1352*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1353*53ee8cc1Swenshuai.xi void MApi_CEC_ConfigWakeUp(void);
1354*53ee8cc1Swenshuai.xi 
1355*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1356*53ee8cc1Swenshuai.xi /// Enable CEC
1357*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC
1358*53ee8cc1Swenshuai.xi /// @param  bEnableFlag       \b IN: enable CEC or not
1359*53ee8cc1Swenshuai.xi /// @return None
1360*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1361*53ee8cc1Swenshuai.xi void MApi_CEC_Enabled(MS_BOOL bEnableFlag);
1362*53ee8cc1Swenshuai.xi 
1363*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1364*53ee8cc1Swenshuai.xi /// Set physical address
1365*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1366*53ee8cc1Swenshuai.xi /// @param  pdata       \b IN: physical address
1367*53ee8cc1Swenshuai.xi /// @return None
1368*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1369*53ee8cc1Swenshuai.xi void MApi_CEC_SetMyPhysicalAddress(MS_U8 *pdata);
1370*53ee8cc1Swenshuai.xi 
1371*53ee8cc1Swenshuai.xi #if ENABLE_CEC_MULTIPLE
1372*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1373*53ee8cc1Swenshuai.xi /// Set second logical address
1374*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_SECOND
1375*53ee8cc1Swenshuai.xi /// @param  myLA       \b IN: second logical address
1376*53ee8cc1Swenshuai.xi /// @return None
1377*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1378*53ee8cc1Swenshuai.xi void MApi_CEC_SetMyLogicalAddress2(MsCEC_DEVICELA myLA);
1379*53ee8cc1Swenshuai.xi 
1380*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1381*53ee8cc1Swenshuai.xi /// Report second physical address
1382*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_SECOND
1383*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE
1384*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1385*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReportPhycalAddress2(void);
1386*53ee8cc1Swenshuai.xi 
1387*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1388*53ee8cc1Swenshuai.xi /// Set second physical address
1389*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_SECOND
1390*53ee8cc1Swenshuai.xi /// @param  pdata       \b IN: second physical address
1391*53ee8cc1Swenshuai.xi /// @return None
1392*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1393*53ee8cc1Swenshuai.xi void MApi_CEC_SetMyPhysicalAddress2(MS_U8 *pdata);
1394*53ee8cc1Swenshuai.xi 
1395*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1396*53ee8cc1Swenshuai.xi /// Set initiator logical address
1397*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_SECOND
1398*53ee8cc1Swenshuai.xi /// @param  IniLA       \b IN: initiator logical address
1399*53ee8cc1Swenshuai.xi /// @return None
1400*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1401*53ee8cc1Swenshuai.xi void MApi_CEC_SetInitiator(MsCEC_DEVICELA IniLA);
1402*53ee8cc1Swenshuai.xi #endif
1403*53ee8cc1Swenshuai.xi 
1404*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1405*53ee8cc1Swenshuai.xi /// Get Tx status
1406*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1407*53ee8cc1Swenshuai.xi /// @return status
1408*53ee8cc1Swenshuai.xi ///[Bit0]: CEC receives a new message.
1409*53ee8cc1Swenshuai.xi ///[Bit1]: CEC transmits a message successfully.
1410*53ee8cc1Swenshuai.xi ///[Bit2]: CEC retry fail for TX.
1411*53ee8cc1Swenshuai.xi ///[Bit3]: CEC lost arbitration to the second initiator.
1412*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1413*53ee8cc1Swenshuai.xi // MS_U8 MApi_CEC_GetTxStatus(void);
1414*53ee8cc1Swenshuai.xi 
1415*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1416*53ee8cc1Swenshuai.xi /// Set power state
1417*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS
1418*53ee8cc1Swenshuai.xi /// @param  u16PowerState       \b IN: power state
1419*53ee8cc1Swenshuai.xi /// @return 0: success
1420*53ee8cc1Swenshuai.xi /// @return 1: fail
1421*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1422*53ee8cc1Swenshuai.xi MS_U32 MApi_CEC_SetPowerState(EN_POWER_MODE u16PowerState);
1423*53ee8cc1Swenshuai.xi 
1424*53ee8cc1Swenshuai.xi #ifdef __cplusplus
1425*53ee8cc1Swenshuai.xi }
1426*53ee8cc1Swenshuai.xi #endif
1427*53ee8cc1Swenshuai.xi 
1428*53ee8cc1Swenshuai.xi #endif //_API_CEC_H_
1429*53ee8cc1Swenshuai.xi 
1430