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