1*53ee8cc1Swenshuai.xi //<MStar Software> 2*53ee8cc1Swenshuai.xi //****************************************************************************** 3*53ee8cc1Swenshuai.xi // MStar Software 4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved. 5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are 6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by 7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties. 8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all 9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written 10*53ee8cc1Swenshuai.xi // permission has been granted by MStar. 11*53ee8cc1Swenshuai.xi // 12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you 13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to 14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations: 15*53ee8cc1Swenshuai.xi // 16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar 17*53ee8cc1Swenshuai.xi // Software and any modification/derivatives thereof. 18*53ee8cc1Swenshuai.xi // No right, ownership, or interest to MStar Software and any 19*53ee8cc1Swenshuai.xi // modification/derivatives thereof is transferred to you under Terms. 20*53ee8cc1Swenshuai.xi // 21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be 22*53ee8cc1Swenshuai.xi // supplied together with third party`s software and the use of MStar 23*53ee8cc1Swenshuai.xi // Software may require additional licenses from third parties. 24*53ee8cc1Swenshuai.xi // Therefore, you hereby agree it is your sole responsibility to separately 25*53ee8cc1Swenshuai.xi // obtain any and all third party right and license necessary for your use of 26*53ee8cc1Swenshuai.xi // such third party`s software. 27*53ee8cc1Swenshuai.xi // 28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as 29*53ee8cc1Swenshuai.xi // MStar`s confidential information and you agree to keep MStar`s 30*53ee8cc1Swenshuai.xi // confidential information in strictest confidence and not disclose to any 31*53ee8cc1Swenshuai.xi // third party. 32*53ee8cc1Swenshuai.xi // 33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any 34*53ee8cc1Swenshuai.xi // kind. Any warranties are hereby expressly disclaimed by MStar, including 35*53ee8cc1Swenshuai.xi // without limitation, any warranties of merchantability, non-infringement of 36*53ee8cc1Swenshuai.xi // intellectual property rights, fitness for a particular purpose, error free 37*53ee8cc1Swenshuai.xi // and in conformity with any international standard. You agree to waive any 38*53ee8cc1Swenshuai.xi // claim against MStar for any loss, damage, cost or expense that you may 39*53ee8cc1Swenshuai.xi // incur related to your use of MStar Software. 40*53ee8cc1Swenshuai.xi // In no event shall MStar be liable for any direct, indirect, incidental or 41*53ee8cc1Swenshuai.xi // consequential damages, including without limitation, lost of profit or 42*53ee8cc1Swenshuai.xi // revenues, lost or damage of data, and unauthorized system use. 43*53ee8cc1Swenshuai.xi // You agree that this Section 4 shall still apply without being affected 44*53ee8cc1Swenshuai.xi // even if MStar Software has been modified by MStar in accordance with your 45*53ee8cc1Swenshuai.xi // request or instruction for your use, except otherwise agreed by both 46*53ee8cc1Swenshuai.xi // parties in writing. 47*53ee8cc1Swenshuai.xi // 48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or 49*53ee8cc1Swenshuai.xi // services in relation with MStar Software to you for your use of 50*53ee8cc1Swenshuai.xi // MStar Software in conjunction with your or your customer`s product 51*53ee8cc1Swenshuai.xi // ("Services"). 52*53ee8cc1Swenshuai.xi // You understand and agree that, except otherwise agreed by both parties in 53*53ee8cc1Swenshuai.xi // writing, Services are provided on an "AS IS" basis and the warranty 54*53ee8cc1Swenshuai.xi // disclaimer set forth in Section 4 above shall apply. 55*53ee8cc1Swenshuai.xi // 56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels 57*53ee8cc1Swenshuai.xi // or otherwise: 58*53ee8cc1Swenshuai.xi // (a) conferring any license or right to use MStar name, trademark, service 59*53ee8cc1Swenshuai.xi // mark, symbol or any other identification; 60*53ee8cc1Swenshuai.xi // (b) obligating MStar or any of its affiliates to furnish any person, 61*53ee8cc1Swenshuai.xi // including without limitation, you and your customers, any assistance 62*53ee8cc1Swenshuai.xi // of any kind whatsoever, or any information; or 63*53ee8cc1Swenshuai.xi // (c) conferring any license or right under any intellectual property right. 64*53ee8cc1Swenshuai.xi // 65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws 66*53ee8cc1Swenshuai.xi // of Taiwan, R.O.C., excluding its conflict of law rules. 67*53ee8cc1Swenshuai.xi // Any and all dispute arising out hereof or related hereto shall be finally 68*53ee8cc1Swenshuai.xi // settled by arbitration referred to the Chinese Arbitration Association, 69*53ee8cc1Swenshuai.xi // Taipei in accordance with the ROC Arbitration Law and the Arbitration 70*53ee8cc1Swenshuai.xi // Rules of the Association by three (3) arbitrators appointed in accordance 71*53ee8cc1Swenshuai.xi // with the said Rules. 72*53ee8cc1Swenshuai.xi // The place of arbitration shall be in Taipei, Taiwan and the language shall 73*53ee8cc1Swenshuai.xi // be English. 74*53ee8cc1Swenshuai.xi // The arbitration award shall be final and binding to both parties. 75*53ee8cc1Swenshuai.xi // 76*53ee8cc1Swenshuai.xi //****************************************************************************** 77*53ee8cc1Swenshuai.xi //<MStar Software> 78*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 79*53ee8cc1Swenshuai.xi // 80*53ee8cc1Swenshuai.xi // Copyright (c) 2008-2009 MStar Semiconductor, Inc. 81*53ee8cc1Swenshuai.xi // All rights reserved. 82*53ee8cc1Swenshuai.xi // 83*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained 84*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of 85*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence 86*53ee8cc1Swenshuai.xi // ("MStar Confidential Information") by the recipient. 87*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure, 88*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling, 89*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential 90*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the 91*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom. 92*53ee8cc1Swenshuai.xi // 93*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 94*53ee8cc1Swenshuai.xi 95*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////////////////////////// 96*53ee8cc1Swenshuai.xi /// 97*53ee8cc1Swenshuai.xi /// @file apiCEC.h 98*53ee8cc1Swenshuai.xi /// @brief CEC Interface 99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc. 100*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////////////////////////// 101*53ee8cc1Swenshuai.xi 102*53ee8cc1Swenshuai.xi /*! \defgroup MISC HDMI modules 103*53ee8cc1Swenshuai.xi 104*53ee8cc1Swenshuai.xi <b> CEC (Consumer Electronics Control) </b>\n 105*53ee8cc1Swenshuai.xi - In Europe, there was an analog predecessor to HDMI known as the SCART interface. Like HDMI, SCART carried audio and video signals through one cable. The SCART cable had a one-wire bus for controlling a home theater system. This was branded as AV.link by Philips, among others. This bus supported one touch play, standby, etc.\n 106*53ee8cc1Swenshuai.xi For more information,see \link APICEC apiCEC interface (apiCEC.h) \endlink \n 107*53ee8cc1Swenshuai.xi 108*53ee8cc1Swenshuai.xi <b> DAC(digital-to-analog converter,DAC)</b>\n 109*53ee8cc1Swenshuai.xi - Convert digital signal to analog signal.\n 110*53ee8cc1Swenshuai.xi For more information,see \link DAC DAC interface (apiDAC.h) \endlink \n 111*53ee8cc1Swenshuai.xi 112*53ee8cc1Swenshuai.xi <b> MHL interface </b> 113*53ee8cc1Swenshuai.xi - Check whether MHL cable is plugged or not in Rx side 114*53ee8cc1Swenshuai.xi - Disable R-term and output Vbus 115*53ee8cc1Swenshuai.xi - Check whether Cbus is connected(discovery pulse completed) 116*53ee8cc1Swenshuai.xi - Sink -> Source: "SET_HPD" 117*53ee8cc1Swenshuai.xi - Sink -> Source: Write_Stat - "DCAP_RDY" and Write_INT - "DCAP_CHG" 118*53ee8cc1Swenshuai.xi - Sink -> Source: Write_Stat - "PATH_EN"\n 119*53ee8cc1Swenshuai.xi For more information,see \link MHL MHL interface (apiMHL.h) \endlink \n 120*53ee8cc1Swenshuai.xi 121*53ee8cc1Swenshuai.xi <b> HDMI interface </b> 122*53ee8cc1Swenshuai.xi - HDMI Ethernet Channel 123*53ee8cc1Swenshuai.xi Support Ethernet communication through HDMI 124*53ee8cc1Swenshuai.xi - Audio Return Channel 125*53ee8cc1Swenshuai.xi - 3D support 126*53ee8cc1Swenshuai.xi - Frame packing, Side-by-Side half, Top-Buttom and etc. 127*53ee8cc1Swenshuai.xi - 4Kx2K support 128*53ee8cc1Swenshuai.xi 3840x2160@24/25/30Hz, 4096x2160@24Hz 129*53ee8cc1Swenshuai.xi - Additional Color Spaces 130*53ee8cc1Swenshuai.xi sYCC601, AdobeRGB, AdobeYCC601 131*53ee8cc1Swenshuai.xi - HDMI Micro Connector 132*53ee8cc1Swenshuai.xi 19-pin/1080p\n 133*53ee8cc1Swenshuai.xi For more information,see \link APICEC apiCEC interface (apiCEC.h) \endlink \n 134*53ee8cc1Swenshuai.xi 135*53ee8cc1Swenshuai.xi * \defgroup APICEC apiCEC interface (apiCEC.h) 136*53ee8cc1Swenshuai.xi * \ingroup MISC 137*53ee8cc1Swenshuai.xi 138*53ee8cc1Swenshuai.xi <b> CEC (Consumer Electronics Control) </b> 139*53ee8cc1Swenshuai.xi In Europe, there was an analog predecessor to HDMI known as the SCART interface. Like HDMI, SCART carried audio and video signals through one cable. The SCART cable had a one-wire bus for controlling a home theater system. This was branded as AV.link by Philips, among others. This bus supported one touch play, standby, etc. 140*53ee8cc1Swenshuai.xi 141*53ee8cc1Swenshuai.xi 142*53ee8cc1Swenshuai.xi <b> CEC layout </b> 143*53ee8cc1Swenshuai.xi \image html apiCEC_pic1.png 144*53ee8cc1Swenshuai.xi \image html apiCEC_pic2.png 145*53ee8cc1Swenshuai.xi 146*53ee8cc1Swenshuai.xi <b>Feature </b> 147*53ee8cc1Swenshuai.xi - Device OSD Name Transfer - Enables devices to upload their preferred OSD name to the TV. The TV can then use this name in any menus associated with that device. 148*53ee8cc1Swenshuai.xi - Device Power Status ?Allows the current power status of a device to be discovered. 149*53ee8cc1Swenshuai.xi - OSD Display - Enables a device to use the on-screen display of the TV to display text strings. 150*53ee8cc1Swenshuai.xi - Routing Control - Allows the control of CEC Switches for streaming of a new source device. 151*53ee8cc1Swenshuai.xi - System Information - Queries the system to determine device addresses and language. 152*53ee8cc1Swenshuai.xi - Vendor Specific Commands - Allows a set of vendor-defined commands to be used between devices of that vendor. 153*53ee8cc1Swenshuai.xi - Audio Rate Control ?Allows an Amplifier to fractionally increase or decrease the playback rate of an audio source. 154*53ee8cc1Swenshuai.xi 155*53ee8cc1Swenshuai.xi \image html apiCEC_pic3.png 156*53ee8cc1Swenshuai.xi \image html apiCEC_pic4.png 157*53ee8cc1Swenshuai.xi 158*53ee8cc1Swenshuai.xi 159*53ee8cc1Swenshuai.xi * \defgroup apiCEC_BASIC apiCEC Module basic 160*53ee8cc1Swenshuai.xi * \ingroup APICEC 161*53ee8cc1Swenshuai.xi 162*53ee8cc1Swenshuai.xi * \dergroup apiCEC_Message send messge 163*53ee8cc1Swenshuai.xi * \ingroup APICEC 164*53ee8cc1Swenshuai.xi 165*53ee8cc1Swenshuai.xi *! \dergroup apiCEC_STATUS CEC status 166*53ee8cc1Swenshuai.xi * \ingroup APICEC 167*53ee8cc1Swenshuai.xi 168*53ee8cc1Swenshuai.xi *! \dergroup apiCEC_SECOND support second LA 169*53ee8cc1Swenshuai.xi * \ingroup APICEC 170*53ee8cc1Swenshuai.xi 171*53ee8cc1Swenshuai.xi *! \dergroup apiCEC_ToBeRemove apiCEC api to be removed 172*53ee8cc1Swenshuai.xi * \ingroup APICEC 173*53ee8cc1Swenshuai.xi 174*53ee8cc1Swenshuai.xi *! \dergroup apiCEC_ToBeAdd apiCEC api to be added 175*53ee8cc1Swenshuai.xi * \ingroup APICEC 176*53ee8cc1Swenshuai.xi 177*53ee8cc1Swenshuai.xi */ 178*53ee8cc1Swenshuai.xi 179*53ee8cc1Swenshuai.xi #ifndef _APICEC_H_ 180*53ee8cc1Swenshuai.xi #define _APICEC_H_ 181*53ee8cc1Swenshuai.xi 182*53ee8cc1Swenshuai.xi #ifdef __cplusplus 183*53ee8cc1Swenshuai.xi extern "C" 184*53ee8cc1Swenshuai.xi { 185*53ee8cc1Swenshuai.xi #endif 186*53ee8cc1Swenshuai.xi 187*53ee8cc1Swenshuai.xi #include "MsTypes.h" 188*53ee8cc1Swenshuai.xi #include "MsDevice.h" 189*53ee8cc1Swenshuai.xi #include "MsCommon.h" 190*53ee8cc1Swenshuai.xi 191*53ee8cc1Swenshuai.xi 192*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 193*53ee8cc1Swenshuai.xi // Macro and Define 194*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 195*53ee8cc1Swenshuai.xi #define MSIF_CEC_LIB_CODE {'C','E','C','_'} 196*53ee8cc1Swenshuai.xi #define MSIF_CEC_LIBVER {'0','0'} /* 0.0 ~ Z.Z */ 197*53ee8cc1Swenshuai.xi #define MSIF_CEC_BUILDNUM {'0','8'} /* 00 ~ 99 */ 198*53ee8cc1Swenshuai.xi #define MSIF_CEC_CHANGELIST {'0','0','4','4','9','9','9','1'} /* CL# */ 199*53ee8cc1Swenshuai.xi #define CEC_API_VERSION /* Character String for DRV/API version */ \ 200*53ee8cc1Swenshuai.xi MSIF_TAG, /* 'MSIF' */ \ 201*53ee8cc1Swenshuai.xi MSIF_CLASS, /* '00' */ \ 202*53ee8cc1Swenshuai.xi MSIF_CUS, /* 0x0000 */ \ 203*53ee8cc1Swenshuai.xi MSIF_MOD, /* 0x0000 */ \ 204*53ee8cc1Swenshuai.xi MSIF_CHIP, \ 205*53ee8cc1Swenshuai.xi MSIF_CPU, \ 206*53ee8cc1Swenshuai.xi MSIF_CEC_LIB_CODE, /* IP__ */ \ 207*53ee8cc1Swenshuai.xi MSIF_CEC_LIBVER, /* 0.0 ~ Z.Z */ \ 208*53ee8cc1Swenshuai.xi MSIF_CEC_BUILDNUM, /* 00 ~ 99 */ \ 209*53ee8cc1Swenshuai.xi MSIF_CEC_CHANGELIST, /* CL# */ \ 210*53ee8cc1Swenshuai.xi MSIF_OS 211*53ee8cc1Swenshuai.xi 212*53ee8cc1Swenshuai.xi #define CEC_VERSION_11 0UL //CEC1.1 213*53ee8cc1Swenshuai.xi #define CEC_VERSION_12 1UL //CEC1.2 214*53ee8cc1Swenshuai.xi #define CEC_VERSION_12a 2UL //CEC1.2a 215*53ee8cc1Swenshuai.xi #define CEC_VERSION_13 3UL //CEC1.3 216*53ee8cc1Swenshuai.xi #define CEC_VERSION_13a 4UL //CEC1.3a 217*53ee8cc1Swenshuai.xi #define CEC_VERSION_14 5UL //CEC1.4 218*53ee8cc1Swenshuai.xi 219*53ee8cc1Swenshuai.xi #define HDMI_CEC_VERSION CEC_VERSION_14 220*53ee8cc1Swenshuai.xi 221*53ee8cc1Swenshuai.xi #define CEC_FIFO_CNT 4UL 222*53ee8cc1Swenshuai.xi #define RETRY_CNT 1UL 223*53ee8cc1Swenshuai.xi #define FrameInterval 7UL 224*53ee8cc1Swenshuai.xi #define BusFreeTime 6UL//5 // Free bit time by IC design has a little difference than spec, set to 6 instead of 5 225*53ee8cc1Swenshuai.xi #define ReTxInterval 3UL 226*53ee8cc1Swenshuai.xi 227*53ee8cc1Swenshuai.xi #define ENABLE_CEC_INT ENABLE 228*53ee8cc1Swenshuai.xi #define ENABLE_CUST01_CEC ENABLE 229*53ee8cc1Swenshuai.xi #define ENABLE_SW_CEC_WAKEUP ENABLE 230*53ee8cc1Swenshuai.xi #define ENABLE_CEC_MULTIPLE DISABLE 231*53ee8cc1Swenshuai.xi 232*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 233*53ee8cc1Swenshuai.xi // Type and Structure 234*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 235*53ee8cc1Swenshuai.xi 236*53ee8cc1Swenshuai.xi typedef enum _MsCEC_INPUT_PORT 237*53ee8cc1Swenshuai.xi { 238*53ee8cc1Swenshuai.xi INPUT_PORT0 = 0x00, 239*53ee8cc1Swenshuai.xi INPUT_PORT1 = 0x01, 240*53ee8cc1Swenshuai.xi INPUT_PORT2 = 0x02, 241*53ee8cc1Swenshuai.xi INPUT_PORT3 = 0x03, 242*53ee8cc1Swenshuai.xi }MsCEC_INPUT_PORT; 243*53ee8cc1Swenshuai.xi 244*53ee8cc1Swenshuai.xi typedef enum _CEC_ERROR_CODE 245*53ee8cc1Swenshuai.xi { 246*53ee8cc1Swenshuai.xi E_CEC_FEATURE_ABORT = 0x00, 247*53ee8cc1Swenshuai.xi E_CEC_RX_SUCCESS = 0x01, 248*53ee8cc1Swenshuai.xi E_CEC_TX_SUCCESS = 0x02, 249*53ee8cc1Swenshuai.xi E_CEC_RF = 0x04, 250*53ee8cc1Swenshuai.xi E_CEC_LOST_ABT = 0x08, 251*53ee8cc1Swenshuai.xi E_CEC_BIT_SHORT = 0x10, 252*53ee8cc1Swenshuai.xi E_CEC_BIT_LONG = 0x20, 253*53ee8cc1Swenshuai.xi E_CEC_NACK = 0x40, 254*53ee8cc1Swenshuai.xi E_CEC_SYSTEM_BUSY = 0x80, 255*53ee8cc1Swenshuai.xi } CEC_ERROR_CODE; 256*53ee8cc1Swenshuai.xi 257*53ee8cc1Swenshuai.xi //Logical Address 258*53ee8cc1Swenshuai.xi typedef enum _MsCEC_DEVICELA 259*53ee8cc1Swenshuai.xi { 260*53ee8cc1Swenshuai.xi E_LA_TV =0, 261*53ee8cc1Swenshuai.xi E_LA_RECORDER1 =1, 262*53ee8cc1Swenshuai.xi E_LA_RECORDER2 =2, 263*53ee8cc1Swenshuai.xi E_LA_TUNER1 =3, 264*53ee8cc1Swenshuai.xi E_LA_PLAYBACK1 =4, 265*53ee8cc1Swenshuai.xi E_LA_AUDIO_SYS =5, 266*53ee8cc1Swenshuai.xi E_LA_TUNER2 =6, 267*53ee8cc1Swenshuai.xi E_LA_TUNER3 =7, 268*53ee8cc1Swenshuai.xi E_LA_PLAYBACK2 =8, 269*53ee8cc1Swenshuai.xi E_LA_RECORER3 =9, 270*53ee8cc1Swenshuai.xi #if(HDMI_CEC_VERSION >= CEC_VERSION_13a) 271*53ee8cc1Swenshuai.xi E_LA_TUNER4 =10, 272*53ee8cc1Swenshuai.xi E_LA_PLYBACK3 =11, 273*53ee8cc1Swenshuai.xi #endif 274*53ee8cc1Swenshuai.xi RESERVED_1 =12, 275*53ee8cc1Swenshuai.xi RESERVED_2 =13, 276*53ee8cc1Swenshuai.xi E_LA_FREE_USE =14, 277*53ee8cc1Swenshuai.xi E_LA_UNREGISTERED =15, 278*53ee8cc1Swenshuai.xi E_LA_BROADCAST =15, 279*53ee8cc1Swenshuai.xi E_LA_MAX =15, 280*53ee8cc1Swenshuai.xi } MsCEC_DEVICELA; 281*53ee8cc1Swenshuai.xi 282*53ee8cc1Swenshuai.xi //the opcode is referenced from CEC1.3a table 7 ~ 27 283*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSGLIST 284*53ee8cc1Swenshuai.xi { 285*53ee8cc1Swenshuai.xi //----- One Touch Play ---------------------------- 286*53ee8cc1Swenshuai.xi E_MSG_ACTIVE_SOURCE = 0x82, 287*53ee8cc1Swenshuai.xi E_MSG_OTP_IMAGE_VIEW_ON = 0x04, 288*53ee8cc1Swenshuai.xi E_MSG_OTP_TEXT_VIEW_ON = 0x0D, 289*53ee8cc1Swenshuai.xi 290*53ee8cc1Swenshuai.xi 291*53ee8cc1Swenshuai.xi //----- Routing Control --------------------------- 292*53ee8cc1Swenshuai.xi //E_MSG_RC_ACTIVE_SOURCE = 0x82, 293*53ee8cc1Swenshuai.xi E_MSG_RC_INACTIVE_SOURCE = 0x9D, 294*53ee8cc1Swenshuai.xi 295*53ee8cc1Swenshuai.xi E_MSG_RC_REQ_ACTIVE_SOURCE = 0x85, // should be removed 296*53ee8cc1Swenshuai.xi E_MSG_RC_REQUEST_ACTIVE_SOURCE = 0x85, 297*53ee8cc1Swenshuai.xi 298*53ee8cc1Swenshuai.xi E_MSG_RC_ROUTING_CHANGE = 0x80, 299*53ee8cc1Swenshuai.xi 300*53ee8cc1Swenshuai.xi E_MSG_RC_ROUTING_INFO = 0x81, // should be removed 301*53ee8cc1Swenshuai.xi E_MSG_RC_ROUTING_INFORMATION = 0x81, 302*53ee8cc1Swenshuai.xi 303*53ee8cc1Swenshuai.xi E_MSG_RC_SET_STREM_PATH = 0x86, 304*53ee8cc1Swenshuai.xi 305*53ee8cc1Swenshuai.xi 306*53ee8cc1Swenshuai.xi //----- Standby Command --------------------------- 307*53ee8cc1Swenshuai.xi E_MSG_STANDBY = 0x36, 308*53ee8cc1Swenshuai.xi 309*53ee8cc1Swenshuai.xi 310*53ee8cc1Swenshuai.xi //----- One Touch Record--------------------------- 311*53ee8cc1Swenshuai.xi E_MSG_OTR_RECORD_OFF = 0x0B, 312*53ee8cc1Swenshuai.xi E_MSG_OTR_RECORD_ON = 0x09, 313*53ee8cc1Swenshuai.xi E_MSG_OTR_RECORD_STATUS = 0x0A, 314*53ee8cc1Swenshuai.xi E_MSG_OTR_RECORD_TV_SCREEN = 0x0F, 315*53ee8cc1Swenshuai.xi 316*53ee8cc1Swenshuai.xi 317*53ee8cc1Swenshuai.xi //----- Timer programmer -------------------------- CEC1.3a 318*53ee8cc1Swenshuai.xi E_MSG_TP_CLEAR_ANALOG_TIMER = 0x33, // should be removed 319*53ee8cc1Swenshuai.xi E_MSG_TP_CLEAR_ANALOGUE_TIMER = 0x33, 320*53ee8cc1Swenshuai.xi 321*53ee8cc1Swenshuai.xi E_MSG_TP_CLEAR_DIGITAL_TIMER = 0x99, 322*53ee8cc1Swenshuai.xi 323*53ee8cc1Swenshuai.xi E_MSG_TP_CLEAR_EXT_TIMER = 0xA1, // should be removed 324*53ee8cc1Swenshuai.xi E_MSG_TP_CLEAR_EXTERNAL_TIMER = 0xA1, 325*53ee8cc1Swenshuai.xi 326*53ee8cc1Swenshuai.xi E_MSG_TP_SET_ANALOG_TIMER = 0x34, // should be removed 327*53ee8cc1Swenshuai.xi E_MSG_TP_SET_ANALOGUE_TIMER = 0x34, 328*53ee8cc1Swenshuai.xi 329*53ee8cc1Swenshuai.xi E_MSG_TP_SET_DIGITAL_TIMER = 0x97, 330*53ee8cc1Swenshuai.xi 331*53ee8cc1Swenshuai.xi E_MSG_TP_SET_EXT_TIMER = 0xA2, // should be removed 332*53ee8cc1Swenshuai.xi E_MSG_TP_SET_EXTERNAL_TIMER = 0xA2, 333*53ee8cc1Swenshuai.xi 334*53ee8cc1Swenshuai.xi E_MSG_TP_SET_TIMER_PROGRAM_TITLE = 0x67, 335*53ee8cc1Swenshuai.xi E_MSG_TP_TIMER_CLEARD_STATUS = 0x43, 336*53ee8cc1Swenshuai.xi E_MSG_TP_TIMER_STATUS = 0x35, 337*53ee8cc1Swenshuai.xi 338*53ee8cc1Swenshuai.xi 339*53ee8cc1Swenshuai.xi //----- System Information ------------------------ 340*53ee8cc1Swenshuai.xi E_MSG_SI_CEC_VERSION = 0x9E, //1.3a 341*53ee8cc1Swenshuai.xi E_MSG_SI_GET_CEC_VERSION = 0x9F, //1.3a 342*53ee8cc1Swenshuai.xi 343*53ee8cc1Swenshuai.xi E_MSG_SI_REQUEST_PHY_ADDR = 0x83, // should be removed 344*53ee8cc1Swenshuai.xi E_MSG_SI_GIVE_PHYSICAL_ADDRESS = 0x83, 345*53ee8cc1Swenshuai.xi 346*53ee8cc1Swenshuai.xi E_MSG_SI_GET_MENU_LANGUAGE = 0x91, 347*53ee8cc1Swenshuai.xi //E_MSG_SI_POLLING_MESSAGE = ?, 348*53ee8cc1Swenshuai.xi 349*53ee8cc1Swenshuai.xi E_MSG_SI_REPORT_PHY_ADDR = 0x84, // should be removed 350*53ee8cc1Swenshuai.xi E_MSG_SI_REPORT_PHYSICAL_ADDRESS = 0x84, 351*53ee8cc1Swenshuai.xi 352*53ee8cc1Swenshuai.xi E_MSG_SI_SET_MENU_LANGUAGE = 0x32, 353*53ee8cc1Swenshuai.xi 354*53ee8cc1Swenshuai.xi //E_MSG_SI_REC_TYPE_PRESET = 0x00, //parameter ? 355*53ee8cc1Swenshuai.xi //E_MSG_SI_REC_TYPE_OWNSRC = 0x01, //parameter ? 356*53ee8cc1Swenshuai.xi 357*53ee8cc1Swenshuai.xi 358*53ee8cc1Swenshuai.xi //----- Deck Control Feature----------------------- 359*53ee8cc1Swenshuai.xi E_MSG_DC_DECK_CTRL = 0x42, // should be removed 360*53ee8cc1Swenshuai.xi E_MSG_DC_DECK_CONTROL = 0x42, 361*53ee8cc1Swenshuai.xi 362*53ee8cc1Swenshuai.xi E_MSG_DC_DECK_STATUS = 0x1B, 363*53ee8cc1Swenshuai.xi E_MSG_DC_GIVE_DECK_STATUS = 0x1A, 364*53ee8cc1Swenshuai.xi E_MSG_DC_PLAY = 0x41, 365*53ee8cc1Swenshuai.xi 366*53ee8cc1Swenshuai.xi 367*53ee8cc1Swenshuai.xi //----- Tuner Control ------------------------------ 368*53ee8cc1Swenshuai.xi E_MSG_TC_GIVE_TUNER_STATUS = 0x08, // should be removed 369*53ee8cc1Swenshuai.xi E_MSG_TC_GIVE_TUNER_DEVICE_STATUS = 0x08, 370*53ee8cc1Swenshuai.xi 371*53ee8cc1Swenshuai.xi E_MSG_TC_SEL_ANALOG_SERVICE = 0x92, // should be removed 372*53ee8cc1Swenshuai.xi E_MSG_TC_SEL_ANALOGUE_SERVICE = 0x92, 373*53ee8cc1Swenshuai.xi 374*53ee8cc1Swenshuai.xi E_MSG_TC_SEL_DIGITAL_SERVICE = 0x93, // should be removed 375*53ee8cc1Swenshuai.xi E_MSG_TC_SELECT_DIGITAL_SERVICE = 0x93, 376*53ee8cc1Swenshuai.xi 377*53ee8cc1Swenshuai.xi E_MSG_TC_TUNER_DEVICE_STATUS = 0x07, 378*53ee8cc1Swenshuai.xi 379*53ee8cc1Swenshuai.xi E_MSG_TC_TUNER_STEP_DEC = 0x06, // should be removed 380*53ee8cc1Swenshuai.xi E_MSG_TC_TUNER_STEP_DECREMENT = 0x06, 381*53ee8cc1Swenshuai.xi 382*53ee8cc1Swenshuai.xi E_MSG_TC_TUNER_STEP_INC = 0x05, // should be removed 383*53ee8cc1Swenshuai.xi E_MSG_TC_TUNER_STEP_INCREMENT = 0x05, 384*53ee8cc1Swenshuai.xi 385*53ee8cc1Swenshuai.xi 386*53ee8cc1Swenshuai.xi //---------Vendor Specific ------------------------- 387*53ee8cc1Swenshuai.xi //E_MSG_VS_CEC_VERSION = 0x9E, //1.3a 388*53ee8cc1Swenshuai.xi E_MSG_VS_DEVICE_VENDOR_ID = 0x87, 389*53ee8cc1Swenshuai.xi //E_MSG_VS_GET_CEC_VERSION = 0x9F, //1.3a 390*53ee8cc1Swenshuai.xi 391*53ee8cc1Swenshuai.xi E_MSG_VS_GIVE_VENDOR_ID = 0x8C, // should be removed 392*53ee8cc1Swenshuai.xi E_MSG_VS_GIVE_DEVICE_VENDOR_ID = 0x8C, 393*53ee8cc1Swenshuai.xi 394*53ee8cc1Swenshuai.xi E_MSG_VS_VENDOR_COMMAND = 0x89, 395*53ee8cc1Swenshuai.xi E_MSG_VS_VENDOR_COMMAND_WITH_ID = 0xA0, //1.3a 396*53ee8cc1Swenshuai.xi 397*53ee8cc1Swenshuai.xi E_MSG_VS_VENDOR_RC_BUT_DOWN = 0x8A, // should be removed 398*53ee8cc1Swenshuai.xi E_MSG_VS_VENDOR_REMOTE_BUTTON_DOWN = 0x8A, 399*53ee8cc1Swenshuai.xi 400*53ee8cc1Swenshuai.xi E_MSG_VS_VENDOR_RC_BUT_UP = 0x8B, // should be removed 401*53ee8cc1Swenshuai.xi E_MSG_VS_VENDOR_REMOTE_BUTTON_UP = 0x8B, 402*53ee8cc1Swenshuai.xi 403*53ee8cc1Swenshuai.xi 404*53ee8cc1Swenshuai.xi //----- OSD Display -------------------------------- 405*53ee8cc1Swenshuai.xi E_MSG_SET_OSD_STRING = 0x64, 406*53ee8cc1Swenshuai.xi 407*53ee8cc1Swenshuai.xi 408*53ee8cc1Swenshuai.xi //----- Device OSD Name Transfer ------------------------- 409*53ee8cc1Swenshuai.xi E_MSG_OSDNT_GIVE_OSD_NAME = 0x46, 410*53ee8cc1Swenshuai.xi E_MSG_OSDNT_SET_OSD_NAME = 0x47, 411*53ee8cc1Swenshuai.xi 412*53ee8cc1Swenshuai.xi 413*53ee8cc1Swenshuai.xi //----- Device Menu Control ------------------------ 414*53ee8cc1Swenshuai.xi E_MSG_DMC_MENU_REQUEST = 0x8D, 415*53ee8cc1Swenshuai.xi E_MSG_DMC_MENU_STATUS = 0x8E, 416*53ee8cc1Swenshuai.xi //E_MSG_DMC_MENU_ACTIVATED = 0x00, //parameter 417*53ee8cc1Swenshuai.xi //E_MSG_DMC_MENU_DEACTIVATED = 0x01, //parameter 418*53ee8cc1Swenshuai.xi 419*53ee8cc1Swenshuai.xi E_MSG_UI_PRESS = 0x44, // should be removed 420*53ee8cc1Swenshuai.xi E_MSG_DMC_USER_CONTROL_PRESSED = 0x44, 421*53ee8cc1Swenshuai.xi 422*53ee8cc1Swenshuai.xi E_MSG_UI_RELEASE = 0x45, // should be removed 423*53ee8cc1Swenshuai.xi E_MSG_DMC_USER_CONTROL_RELEASED = 0x45, 424*53ee8cc1Swenshuai.xi 425*53ee8cc1Swenshuai.xi 426*53ee8cc1Swenshuai.xi //----- Remote Control Passthrough ---------------- 427*53ee8cc1Swenshuai.xi //----- UI Message -------------------------------- 428*53ee8cc1Swenshuai.xi // E_MSG_RCP_USER_CONTROL_PRESSED = 0x44, 429*53ee8cc1Swenshuai.xi // E_MSG_RCP_USER_CONTROL_RELEASED = 0x45, 430*53ee8cc1Swenshuai.xi 431*53ee8cc1Swenshuai.xi 432*53ee8cc1Swenshuai.xi //----- Power Status ------------------------------ 433*53ee8cc1Swenshuai.xi E_MSG_PS_GIVE_POWER_STATUS = 0x8F, // should be removed 434*53ee8cc1Swenshuai.xi E_MSG_PS_GIVE_DEVICE_POWER_STATUS = 0x8F, 435*53ee8cc1Swenshuai.xi 436*53ee8cc1Swenshuai.xi E_MSG_PS_REPORT_POWER_STATUS = 0x90, 437*53ee8cc1Swenshuai.xi 438*53ee8cc1Swenshuai.xi 439*53ee8cc1Swenshuai.xi //----- General Protocal Message ------------------ 440*53ee8cc1Swenshuai.xi 441*53ee8cc1Swenshuai.xi //----- Feature Abort ----------------------------- 442*53ee8cc1Swenshuai.xi E_MSG_FEATURE_ABORT = 0x00, 443*53ee8cc1Swenshuai.xi 444*53ee8cc1Swenshuai.xi //----- Abort Message ----------------------------- 445*53ee8cc1Swenshuai.xi E_MSG_ABORT_MESSAGE = 0xFF, 446*53ee8cc1Swenshuai.xi 447*53ee8cc1Swenshuai.xi 448*53ee8cc1Swenshuai.xi //----- System Audio Control ------------------ 449*53ee8cc1Swenshuai.xi E_MSG_SAC_GIVE_AUDIO_STATUS = 0x71, 450*53ee8cc1Swenshuai.xi E_MSG_SAC_GIVE_SYSTEM_AUDIO_MODE_STATUS = 0x7D, 451*53ee8cc1Swenshuai.xi E_MSG_SAC_REPORT_AUDIO_STATUS = 0x7A, 452*53ee8cc1Swenshuai.xi 453*53ee8cc1Swenshuai.xi E_MSG_SAC_REPORT_SHORT_AUDIO_DESCRIPTOR = 0xA3, 454*53ee8cc1Swenshuai.xi E_MSG_SAC_REQUEST_SHORT_AUDIO_DESCRIPTOR = 0xA4, 455*53ee8cc1Swenshuai.xi 456*53ee8cc1Swenshuai.xi E_MSG_SAC_SET_SYSTEM_AUDIO_MODE = 0x72, 457*53ee8cc1Swenshuai.xi E_MSG_SAC_SYSTEM_AUDIO_MODE_REQUEST = 0x70, 458*53ee8cc1Swenshuai.xi E_MSG_SAC_SYSTEM_AUDIO_MODE_STATUS = 0x7E, 459*53ee8cc1Swenshuai.xi 460*53ee8cc1Swenshuai.xi 461*53ee8cc1Swenshuai.xi //----- System Audio Control ------------------ 462*53ee8cc1Swenshuai.xi E_MSG_SAC_SET_AUDIO_RATE = 0x9A, 463*53ee8cc1Swenshuai.xi 464*53ee8cc1Swenshuai.xi 465*53ee8cc1Swenshuai.xi //----- Audio Return Channel Control ------------------ 466*53ee8cc1Swenshuai.xi E_MSG_ARC_INITIATE_ARC = 0xC0, 467*53ee8cc1Swenshuai.xi E_MSG_ARC_REPORT_ARC_INITIATED = 0xC1, 468*53ee8cc1Swenshuai.xi E_MSG_ARC_REPORT_ARC_TERMINATED = 0xC2, 469*53ee8cc1Swenshuai.xi 470*53ee8cc1Swenshuai.xi E_MSG_ARC_REQUEST_ARC_INITATION = 0xC3, // should be removed 471*53ee8cc1Swenshuai.xi E_MSG_ARC_REQUEST_ARC_INITIATION = 0xC3, 472*53ee8cc1Swenshuai.xi 473*53ee8cc1Swenshuai.xi E_MSG_ARC_REQUEST_ARC_TERMINATION = 0xC4, 474*53ee8cc1Swenshuai.xi 475*53ee8cc1Swenshuai.xi E_MSG_ARC_TERMINATED_ARC = 0xC5, // should be removed 476*53ee8cc1Swenshuai.xi E_MSG_ARC_TERMINATE_ARC = 0xC5, 477*53ee8cc1Swenshuai.xi 478*53ee8cc1Swenshuai.xi 479*53ee8cc1Swenshuai.xi //----- Capability Discovery and Control ------------------ 480*53ee8cc1Swenshuai.xi E_MSG_CDC_CDC_MESSAGE = 0xF8, 481*53ee8cc1Swenshuai.xi 482*53ee8cc1Swenshuai.xi } MsCEC_MSGLIST; 483*53ee8cc1Swenshuai.xi 484*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_TRANS_TYPE 485*53ee8cc1Swenshuai.xi { 486*53ee8cc1Swenshuai.xi E_TRANS_BROADCAST_MSG = 0, 487*53ee8cc1Swenshuai.xi E_TRANS_DIRECT_MSG = 1, 488*53ee8cc1Swenshuai.xi E_TRANS_BOTHTYPE_MSG = 2, 489*53ee8cc1Swenshuai.xi } MsCEC_MSG_TRANS_TYPE; 490*53ee8cc1Swenshuai.xi 491*53ee8cc1Swenshuai.xi 492*53ee8cc1Swenshuai.xi //Device Type, 1byte 493*53ee8cc1Swenshuai.xi typedef enum _MsCEC_DEVICE_TYPE 494*53ee8cc1Swenshuai.xi { 495*53ee8cc1Swenshuai.xi E_DEVICE_TYPE_TV =0, 496*53ee8cc1Swenshuai.xi E_DEVICE_TYPE_RECORDING_DEVICE =1, 497*53ee8cc1Swenshuai.xi E_DEVICE_TYPE_RESERVED =2, 498*53ee8cc1Swenshuai.xi E_DEVICE_TYPE_TUNER =3, 499*53ee8cc1Swenshuai.xi E_DEVICE_TYPE_PLAYBACK_DEVICE =4, 500*53ee8cc1Swenshuai.xi E_DEVICE_TYPE_AUDIO_SYSTEM =5, 501*53ee8cc1Swenshuai.xi } MsCEC_DEVICE_TYPE; 502*53ee8cc1Swenshuai.xi 503*53ee8cc1Swenshuai.xi 504*53ee8cc1Swenshuai.xi //Deck Control, Deck Control Mode 1 byte 505*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_DC_DECK_CTRL_PARM 506*53ee8cc1Swenshuai.xi { 507*53ee8cc1Swenshuai.xi E_MSG_DCM_CMD_SKIP_FORWARD = 1, //parameter 508*53ee8cc1Swenshuai.xi E_MSG_DCM_CMD_SKIP_REVERSE = 2, //parameter 509*53ee8cc1Swenshuai.xi E_MSG_DCM_CMD_STOP = 3, //parameter 510*53ee8cc1Swenshuai.xi E_MSG_DCM_CMD_EJECT = 4, //parameter 511*53ee8cc1Swenshuai.xi } MsCEC_MSG_DC_DECK_CTRL_PARM; 512*53ee8cc1Swenshuai.xi 513*53ee8cc1Swenshuai.xi //Deck status, Deck info 1 byte 514*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_DC_DECK_STATUS_PARM 515*53ee8cc1Swenshuai.xi { 516*53ee8cc1Swenshuai.xi E_MSG_DI_CMD_PLAY = 0x11, //parameter 517*53ee8cc1Swenshuai.xi E_MSG_DI_CMD_RECORD = 0x12, //parameter 518*53ee8cc1Swenshuai.xi E_MSG_DI_CMD_PLAY_REVERSE = 0x13, //parameter 519*53ee8cc1Swenshuai.xi E_MSG_DI_CMD_STILL = 0x14, //parameter 520*53ee8cc1Swenshuai.xi E_MSG_DI_CMD_SLOW = 0x15, //parameter 521*53ee8cc1Swenshuai.xi E_MSG_DI_CMD_SLOW_REVERSE = 0x16, //parameter 522*53ee8cc1Swenshuai.xi E_MSG_DI_CMD_FAST_FORWARD = 0x17, //parameter 523*53ee8cc1Swenshuai.xi E_MSG_DI_CMD_FAST_REVERSE = 0x18, //parameter 524*53ee8cc1Swenshuai.xi E_MSG_DI_CMD_NO_MEDIA = 0x19, //parameter 525*53ee8cc1Swenshuai.xi E_MSG_DI_CMD_STOP = 0x1A, //parameter 526*53ee8cc1Swenshuai.xi E_MSG_DI_CMD_SKIP_FORWARD = 0x1B, //parameter 527*53ee8cc1Swenshuai.xi E_MSG_DI_CMD_SKIP_REVERSE = 0x1C, //parameter 528*53ee8cc1Swenshuai.xi E_MSG_DI_CMD_INDEX_SEARCH_FORWARD = 0x1D, //parameter 529*53ee8cc1Swenshuai.xi E_MSG_DI_CMD_INDEX_SEARCH_REVERSE = 0x1E, //parameter 530*53ee8cc1Swenshuai.xi E_MSG_DI_CMD_OTHER_STATUS = 0x1F, //parameter 531*53ee8cc1Swenshuai.xi } MsCEC_MSG_DC_DECK_STATUS_PARM; 532*53ee8cc1Swenshuai.xi 533*53ee8cc1Swenshuai.xi 534*53ee8cc1Swenshuai.xi //Give deck status, Status request 1 byte 535*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_STATUS_REQUEST_PARM 536*53ee8cc1Swenshuai.xi { 537*53ee8cc1Swenshuai.xi E_MSG_SR_CMD_ON = 1, //parameter 538*53ee8cc1Swenshuai.xi E_MSG_SR_CMD_OFF = 2, //parameter 539*53ee8cc1Swenshuai.xi E_MSG_SR_CMD_ONCE = 3, //parameter 540*53ee8cc1Swenshuai.xi } MsCEC_MSG_STATUS_REQUEST_PARM; 541*53ee8cc1Swenshuai.xi 542*53ee8cc1Swenshuai.xi 543*53ee8cc1Swenshuai.xi //Play, [Play Mode] 1 byte 544*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_DC_PLAY_PARM 545*53ee8cc1Swenshuai.xi { 546*53ee8cc1Swenshuai.xi E_MSG_PM_CMD_PLAY_FORWARD = 0x24, //parameter 547*53ee8cc1Swenshuai.xi E_MSG_PM_CMD_PLAY_REVERSE = 0x20, //parameter 548*53ee8cc1Swenshuai.xi E_MSG_PM_CMD_PLAY_STILL = 0x25, //parameter 549*53ee8cc1Swenshuai.xi E_MSG_PM_CMD_FAST_FORWARD_MINI_SPEED = 0x05, //parameter 550*53ee8cc1Swenshuai.xi E_MSG_PM_CMD_FAST_FORWARD_MEDIUM_SPEED = 0x06, //parameter 551*53ee8cc1Swenshuai.xi E_MSG_PM_CMD_FAST_FORWARD_MAXI_SPEED = 0x07, //parameter 552*53ee8cc1Swenshuai.xi E_MSG_PM_CMD_FAST_REVERSE_MINI_SPEED = 0x09, //parameter 553*53ee8cc1Swenshuai.xi E_MSG_PM_CMD_FAST_REVERSE_MEDIUM_SPEED = 0x0A, //parameter 554*53ee8cc1Swenshuai.xi E_MSG_PM_CMD_FAST_REVERSE_MAXI_SPEED = 0x0B, //parameter 555*53ee8cc1Swenshuai.xi E_MSG_PM_CMD_SLOW_FORWARD_MINI_SPEED = 0x15, //parameter 556*53ee8cc1Swenshuai.xi E_MSG_PM_CMD_SLOW_FORWARD_MEDIUM_SPEED = 0x16, //parameter 557*53ee8cc1Swenshuai.xi E_MSG_PM_CMD_SLOW_FORWARD_MAXI_SPEED = 0x17, //parameter 558*53ee8cc1Swenshuai.xi E_MSG_PM_CMD_SLOW_REVERSE_MINI_SPEED = 0x19, //parameter 559*53ee8cc1Swenshuai.xi E_MSG_PM_CMD_SLOW_REVERSE_MEDIUM_SPEED = 0x1A, //parameter 560*53ee8cc1Swenshuai.xi E_MSG_PM_CMD_SLOW_REVERSE_MAXI_SPEED = 0x1B, //parameter 561*53ee8cc1Swenshuai.xi } MsCEC_MSG_DC_PLAY_PARM; 562*53ee8cc1Swenshuai.xi 563*53ee8cc1Swenshuai.xi 564*53ee8cc1Swenshuai.xi //Power status 1 byte 565*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_POWER_STATUS_PARM 566*53ee8cc1Swenshuai.xi { 567*53ee8cc1Swenshuai.xi E_MSG_PWRSTA_ON = 0x00, 568*53ee8cc1Swenshuai.xi E_MSG_PWRSTA_STANDBY = 0x01, 569*53ee8cc1Swenshuai.xi E_MSG_PWRSTA_STANDBY2ON = 0x02, 570*53ee8cc1Swenshuai.xi E_MSG_PWRSTA_ON2STANDBY = 0x03, 571*53ee8cc1Swenshuai.xi E_MSG_PWRSTA_UNKNOW = 0x04, 572*53ee8cc1Swenshuai.xi } MsCEC_MSG_POWER_STATUS_PARM; 573*53ee8cc1Swenshuai.xi 574*53ee8cc1Swenshuai.xi 575*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_ABORT_REASON 576*53ee8cc1Swenshuai.xi { 577*53ee8cc1Swenshuai.xi E_MSG_AR_UNRECOGNIZE_OPCDE = 0x00, // abort reason 578*53ee8cc1Swenshuai.xi E_MSG_AR_CANNOTRESPOND = 0x01, // abort reason 579*53ee8cc1Swenshuai.xi E_MSG_AR_CANNOTPROVIDESCR = 0x02, // abort reason 580*53ee8cc1Swenshuai.xi E_MSG_AR_INVALID_OPCODE = 0x03, // abort reason 581*53ee8cc1Swenshuai.xi E_MSG_AR_REFUSED = 0x04, // abort reason 582*53ee8cc1Swenshuai.xi E_MSG_AR_IGNORED = 0x05, 583*53ee8cc1Swenshuai.xi E_MSG_AR_SUCCESSED = 0x06, 584*53ee8cc1Swenshuai.xi } MsCEC_MSG_ABORT_REASON; 585*53ee8cc1Swenshuai.xi 586*53ee8cc1Swenshuai.xi 587*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_MENU_REQ_TYPE 588*53ee8cc1Swenshuai.xi { 589*53ee8cc1Swenshuai.xi E_MSG_MENU_REQ_ACTIVATED = 0, // menu request activated status 590*53ee8cc1Swenshuai.xi E_MSG_MENU_REQ_DEACTIVATED = 1, // menu request deactivated status 591*53ee8cc1Swenshuai.xi E_MSG_MENU_REQ_QUERY = 2, // menu request query status 592*53ee8cc1Swenshuai.xi } MsCEC_MSG_MENU_REQ_TYPE; 593*53ee8cc1Swenshuai.xi 594*53ee8cc1Swenshuai.xi 595*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_MENU_STATE 596*53ee8cc1Swenshuai.xi { 597*53ee8cc1Swenshuai.xi E_MSG_MENU_ACTIVATED = 0, // menu activated 598*53ee8cc1Swenshuai.xi E_MSG_MENU_DEACTIVATED = 1, // menu deactivated 599*53ee8cc1Swenshuai.xi } MsCEC_MSG_MENU_STATE; 600*53ee8cc1Swenshuai.xi 601*53ee8cc1Swenshuai.xi 602*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_RECORD_SOURCE_TYPE 603*53ee8cc1Swenshuai.xi { 604*53ee8cc1Swenshuai.xi E_MSG_RECORD_TYPE_OWN_SOURCE = 1, // own source 605*53ee8cc1Swenshuai.xi E_MSG_RECORD_TYPE_DIGITAL_SERVICE = 2, // digital service 606*53ee8cc1Swenshuai.xi #if(HDMI_CEC_VERSION >= CEC_VERSION_13a) 607*53ee8cc1Swenshuai.xi E_MSG_RECORD_TYPE_ANALOGUE_SERVICE = 3, // Analogue Service 608*53ee8cc1Swenshuai.xi E_MSG_RECORD_TYPE_EXTERNAL_PLUG = 4, // External Plug 609*53ee8cc1Swenshuai.xi E_MSG_RECORD_TYPE_EXTERNAL_PHYSICAL_ADDRESS = 5, // External Physical Address 610*53ee8cc1Swenshuai.xi #endif 611*53ee8cc1Swenshuai.xi } MsCEC_MSG_RECORD_SOURCE_TYPE; 612*53ee8cc1Swenshuai.xi 613*53ee8cc1Swenshuai.xi 614*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_RECORD_STATUS_INFO 615*53ee8cc1Swenshuai.xi { 616*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_RECORDING_OWN_SOURCE = 0x01, // Recording currently selected source 617*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_RECORDING_DIGITAL_SERVICE = 0x02, // Recording Digital Service 618*53ee8cc1Swenshuai.xi #if(HDMI_CEC_VERSION >= CEC_VERSION_13a) 619*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_RECORDING_ANALOGUE_SERVICE = 0x03, // Recording Analogue Service 620*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_RECORDING_EXTERNAL_INPUT = 0x04, // Recording External input 621*53ee8cc1Swenshuai.xi #endif 622*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_NO_RECORDING_DIGITAL_SERVICE = 0x05, // unable to record Digital Service, no suitable tuner. 623*53ee8cc1Swenshuai.xi #if(HDMI_CEC_VERSION >= CEC_VERSION_13a) 624*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_NO_RECORDING_ANALOGUE_SERVICE = 0x06, // unable to record Analogue Service, no suitable tuner. 625*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_NO_RECORDING_REQ_SERVICE = 0x07, // unable to select required service, Has suitable tuner, but the requested parameters are invalid or out of range for that tuner. 626*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_NO_RECORDING_INVALID_EXTERNAL_PLUG_NUMBER = 0x09, // invalid External plug number 627*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_NO_RECORDING_INVALID_EXTERNAL_PHYSICAL_ADDRESS = 0x0A, // invalid External Physical Address 628*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_NO_RECORDING_CA_NOT_SUPPORT = 0x0B, // CA system not supported 629*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_NO_RECORDING_CA_NO = 0x0C, // No or Insufficient CA Entitlements 630*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_NO_RECORDING_COPY_NEVER = 0x0D, // Not allowed to copy source, source is ��copy never��. 631*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_NO_RECORDING_NO_FURTHER_COPY = 0x0E, // No further copies allowed 632*53ee8cc1Swenshuai.xi #endif 633*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_NO_RECORDING_NO_MEDIA = 0x10, // no media 634*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_NO_RECORDING_PLAYING = 0x11, // Playing 635*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_NO_RECORDING_ALREADY_RECORDING = 0x12, // already recording 636*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_NO_RECORDING_MEDIA_PROTECTED = 0x13, // media protected 637*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_NO_RECORDING_NO_SOURCE = 0x14, // no source signal 638*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_NO_RECORDING_MEDIA_PROBLEM = 0x15, // media problem 639*53ee8cc1Swenshuai.xi #if(HDMI_CEC_VERSION >= CEC_VERSION_13a) 640*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_NO_RECORDING_NOT_ENOUGH_SPACE = 0x16, // not enough space available 641*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_NO_RECORDING_PARENTAL_LOCK = 0x17, // Parental Lock On 642*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_RECORDING_TERMINATED_NORMALLY = 0x1A, // Recording terminated normally, can optionally be sent in response to a <Record Off> message. 643*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_RECORDING_ALREADY_TERMINATED = 0x1B, // Recording has already terminated, can optionally be sent in response to a <Record Off> message. 644*53ee8cc1Swenshuai.xi #endif 645*53ee8cc1Swenshuai.xi E_MSG_RECORD_INFO_NO_RECORDING_OTHER_REASON = 0x1F, // No recording �V other reason 646*53ee8cc1Swenshuai.xi } MsCEC_MSG_RECORD_STATUS_INFO; 647*53ee8cc1Swenshuai.xi 648*53ee8cc1Swenshuai.xi 649*53ee8cc1Swenshuai.xi //UI command parameter: Table 27 User Control Codes 650*53ee8cc1Swenshuai.xi typedef enum _MsCEC_MSG_USER_CTRL_PARM 651*53ee8cc1Swenshuai.xi { 652*53ee8cc1Swenshuai.xi E_MSG_UI_SELECT = 0x00, 653*53ee8cc1Swenshuai.xi E_MSG_UI_UP = 0x01, 654*53ee8cc1Swenshuai.xi E_MSG_UI_DOWN = 0x02, 655*53ee8cc1Swenshuai.xi E_MSG_UI_LEFT = 0x03, 656*53ee8cc1Swenshuai.xi E_MSG_UI_RIGHT = 0x04, 657*53ee8cc1Swenshuai.xi E_MSG_UI_RIGHT_UP = 0x05, 658*53ee8cc1Swenshuai.xi E_MSG_UI_RIGHT_DOWN = 0x06, 659*53ee8cc1Swenshuai.xi E_MSG_UI_LEFT_UP = 0x07, 660*53ee8cc1Swenshuai.xi E_MSG_UI_LEFT_DOWN = 0x08, 661*53ee8cc1Swenshuai.xi E_MSG_UI_ROOTMENU = 0x09, 662*53ee8cc1Swenshuai.xi E_MSG_UI_SETUP_MENU = 0x0A, 663*53ee8cc1Swenshuai.xi E_MSG_UI_CONTENTS_MENU = 0x0B, 664*53ee8cc1Swenshuai.xi E_MSG_UI_FAVORITE_MENU = 0x0C, 665*53ee8cc1Swenshuai.xi E_MSG_UI_EXIT = 0x0D, 666*53ee8cc1Swenshuai.xi 667*53ee8cc1Swenshuai.xi // 0x0E ~ 0x1F reserved 668*53ee8cc1Swenshuai.xi 669*53ee8cc1Swenshuai.xi E_MSG_UI_NUMBER_0 = 0x20, 670*53ee8cc1Swenshuai.xi E_MSG_UI_NUMBER_1 = 0x21, 671*53ee8cc1Swenshuai.xi E_MSG_UI_NUMBER_2 = 0x22, 672*53ee8cc1Swenshuai.xi E_MSG_UI_NUMBER_3 = 0x23, 673*53ee8cc1Swenshuai.xi E_MSG_UI_NUMBER_4 = 0x24, 674*53ee8cc1Swenshuai.xi E_MSG_UI_NUMBER_5 = 0x25, 675*53ee8cc1Swenshuai.xi E_MSG_UI_NUMBER_6 = 0x26, 676*53ee8cc1Swenshuai.xi E_MSG_UI_NUMBER_7 = 0x27, 677*53ee8cc1Swenshuai.xi E_MSG_UI_NUMBER_8 = 0x28, 678*53ee8cc1Swenshuai.xi E_MSG_UI_NUMBER_9 = 0x29, 679*53ee8cc1Swenshuai.xi 680*53ee8cc1Swenshuai.xi E_MSG_UI_DOT = 0x2A, 681*53ee8cc1Swenshuai.xi E_MSG_UI_ENTER = 0x2B, 682*53ee8cc1Swenshuai.xi E_MSG_UI_CLEAR = 0x2C, 683*53ee8cc1Swenshuai.xi 684*53ee8cc1Swenshuai.xi // 0x2D ~ 0x2E reserved 685*53ee8cc1Swenshuai.xi E_MSG_UI_NEXT_FAVORITE = 0x2F, 686*53ee8cc1Swenshuai.xi 687*53ee8cc1Swenshuai.xi E_MSG_UI_CHANNEL_UP = 0x30, 688*53ee8cc1Swenshuai.xi E_MSG_UI_CHANNEL_DOWN = 0x31, 689*53ee8cc1Swenshuai.xi E_MSG_UI_PREVIOUS_CHANNEL = 0x32, 690*53ee8cc1Swenshuai.xi E_MSG_UI_SOUND_SELECT = 0x33, 691*53ee8cc1Swenshuai.xi E_MSG_UI_INPUT_SELECT = 0x34, 692*53ee8cc1Swenshuai.xi E_MSG_UI_DISPLAY_INFO = 0x35, 693*53ee8cc1Swenshuai.xi E_MSG_UI_HELP = 0x36, 694*53ee8cc1Swenshuai.xi E_MSG_UI_PAGE_UP = 0x37, 695*53ee8cc1Swenshuai.xi E_MSG_UI_PAGE_DOWN = 0x38, 696*53ee8cc1Swenshuai.xi 697*53ee8cc1Swenshuai.xi // 0x39 ~ 0x3F reserved 698*53ee8cc1Swenshuai.xi 699*53ee8cc1Swenshuai.xi E_MSG_UI_POWER = 0x40, 700*53ee8cc1Swenshuai.xi E_MSG_UI_VOLUME_UP = 0x41, 701*53ee8cc1Swenshuai.xi E_MSG_UI_VOLUME_DOWN = 0x42, 702*53ee8cc1Swenshuai.xi E_MSG_UI_MUTE = 0x43, 703*53ee8cc1Swenshuai.xi E_MSG_UI_PLAY = 0x44, 704*53ee8cc1Swenshuai.xi E_MSG_UI_STOP = 0x45, 705*53ee8cc1Swenshuai.xi E_MSG_UI_PAUSE = 0x46, 706*53ee8cc1Swenshuai.xi E_MSG_UI_RECORD = 0x47, 707*53ee8cc1Swenshuai.xi E_MSG_UI_REWIND = 0x48, 708*53ee8cc1Swenshuai.xi E_MSG_UI_FAST_FORWARD = 0x49, 709*53ee8cc1Swenshuai.xi E_MSG_UI_EJECT = 0x4A, 710*53ee8cc1Swenshuai.xi E_MSG_UI_FORWARD = 0x4B, 711*53ee8cc1Swenshuai.xi E_MSG_UI_BACKWARD = 0x4C, 712*53ee8cc1Swenshuai.xi E_MSG_UI_STOP_RECORD = 0x4D, 713*53ee8cc1Swenshuai.xi E_MSG_UI_PAUSE_RECORD = 0x4E, 714*53ee8cc1Swenshuai.xi 715*53ee8cc1Swenshuai.xi // 0x4F reserved 716*53ee8cc1Swenshuai.xi 717*53ee8cc1Swenshuai.xi E_MSG_UI_ANGLE = 0x50, 718*53ee8cc1Swenshuai.xi E_MSG_UI_SUB_PICTURE = 0x51, 719*53ee8cc1Swenshuai.xi E_MSG_UI_VIDEO_ON_DEMAND = 0x52, 720*53ee8cc1Swenshuai.xi E_MSG_UI_ELECTRONIC_PROGRAM_GUIDE = 0x53, 721*53ee8cc1Swenshuai.xi E_MSG_UI_TIMER_PROGRAMMING = 0x54, 722*53ee8cc1Swenshuai.xi E_MSG_UI_INITIAL_CONFIGURATION = 0x55, 723*53ee8cc1Swenshuai.xi 724*53ee8cc1Swenshuai.xi // 0x56 ~ 0x5F reserved 725*53ee8cc1Swenshuai.xi 726*53ee8cc1Swenshuai.xi //0x60 ~ 0x6D, identified as function 727*53ee8cc1Swenshuai.xi E_MSG_UI_PLAY_FUN = 0x60, 728*53ee8cc1Swenshuai.xi E_MSG_UI_PSUSE_PLAY_FUN = 0x61, 729*53ee8cc1Swenshuai.xi E_MSG_UI_RECORD_FUN = 0x62, 730*53ee8cc1Swenshuai.xi E_MSG_UI_PAUSE_RECORD_FUN = 0x63, 731*53ee8cc1Swenshuai.xi E_MSG_UI_STOP_FUN = 0x64, 732*53ee8cc1Swenshuai.xi E_MSG_UI_MUTE_FUN = 0x65, 733*53ee8cc1Swenshuai.xi E_MSG_UI_RESTORE_VOLUME_FUN = 0x66, 734*53ee8cc1Swenshuai.xi E_MSG_UI_TUNE_FUN = 0x67, 735*53ee8cc1Swenshuai.xi E_MSG_UI_SELECT_MEDIA_FUN = 0x68, 736*53ee8cc1Swenshuai.xi E_MSG_UI_SELECT_AV_INPUT_FUN = 0x69, 737*53ee8cc1Swenshuai.xi E_MSG_UI_SELECT_AUDIO_INPUT_FUN = 0x6A, 738*53ee8cc1Swenshuai.xi E_MSG_UI_POWER_TOGGLE_FUN = 0x6B, 739*53ee8cc1Swenshuai.xi E_MSG_UI_POWER_OFF_FUN = 0x6C, 740*53ee8cc1Swenshuai.xi E_MSG_UI_POWER_ON_FUN = 0x6D, 741*53ee8cc1Swenshuai.xi 742*53ee8cc1Swenshuai.xi // 0x6E ~ 0x70 reserved 743*53ee8cc1Swenshuai.xi 744*53ee8cc1Swenshuai.xi E_MSG_UI_F1_BLUE = 0x71, 745*53ee8cc1Swenshuai.xi E_MSG_UI_F2_RED = 0x72, 746*53ee8cc1Swenshuai.xi E_MSG_UI_F3_GREEN = 0x73, 747*53ee8cc1Swenshuai.xi E_MSG_UI_F4_YELLOW = 0x74, 748*53ee8cc1Swenshuai.xi E_MSG_UI_F5 = 0x75, 749*53ee8cc1Swenshuai.xi E_MSG_UI_DATA = 0x76, 750*53ee8cc1Swenshuai.xi 751*53ee8cc1Swenshuai.xi // 0x77 ~ 0xFF reserved 752*53ee8cc1Swenshuai.xi } MsCEC_MSG_USER_CTRL_PARM; 753*53ee8cc1Swenshuai.xi 754*53ee8cc1Swenshuai.xi //query the power on mode through mailbox 755*53ee8cc1Swenshuai.xi #define CP_READ_POWERON_MODE 0x9A 756*53ee8cc1Swenshuai.xi 757*53ee8cc1Swenshuai.xi //mailbox report CEC wake up system 758*53ee8cc1Swenshuai.xi #define M_POWER_ON_BY_HDMI_CEC 0x2F 759*53ee8cc1Swenshuai.xi 760*53ee8cc1Swenshuai.xi 761*53ee8cc1Swenshuai.xi typedef struct _MDrv_Cec_RxData_Info 762*53ee8cc1Swenshuai.xi { 763*53ee8cc1Swenshuai.xi MS_U8 ucLength; 764*53ee8cc1Swenshuai.xi MS_U8 tRxData[16]; 765*53ee8cc1Swenshuai.xi } MS_CEC_RxData_Info; 766*53ee8cc1Swenshuai.xi 767*53ee8cc1Swenshuai.xi typedef struct _MDrv_CEC_INFO_LIST 768*53ee8cc1Swenshuai.xi { 769*53ee8cc1Swenshuai.xi MS_U8 CecFifoIdxS; 770*53ee8cc1Swenshuai.xi MS_U8 CecFifoIdxE; 771*53ee8cc1Swenshuai.xi MS_U8 bCecMsgCnt; 772*53ee8cc1Swenshuai.xi MS_BOOL fCecInitFinish; 773*53ee8cc1Swenshuai.xi MS_CEC_RxData_Info CecRxBuf[CEC_FIFO_CNT]; //TV CEC H/W part 774*53ee8cc1Swenshuai.xi MsCEC_DEVICELA MyLogicalAddress; //TV related 775*53ee8cc1Swenshuai.xi MS_U8 MyPhysicalAddress[2]; 776*53ee8cc1Swenshuai.xi MsCEC_DEVICE_TYPE MyDeviceType; 777*53ee8cc1Swenshuai.xi MsCEC_MSG_POWER_STATUS_PARM MyPowerStatus; 778*53ee8cc1Swenshuai.xi MS_BOOL CecDevicesExisted[15]; 779*53ee8cc1Swenshuai.xi 780*53ee8cc1Swenshuai.xi MS_U8 ActiveDeviceCECVersion; 781*53ee8cc1Swenshuai.xi MsCEC_DEVICE_TYPE ActiveDeviceType; 782*53ee8cc1Swenshuai.xi MsCEC_DEVICELA ActiveLogicalAddress; //the remoter controller's active device 783*53ee8cc1Swenshuai.xi MS_U8 ActivePhysicalAddress[2]; 784*53ee8cc1Swenshuai.xi MsCEC_MSG_POWER_STATUS_PARM ActivePowerStatus; 785*53ee8cc1Swenshuai.xi 786*53ee8cc1Swenshuai.xi #if ENABLE_CEC_MULTIPLE 787*53ee8cc1Swenshuai.xi MsCEC_DEVICELA MyLogicalAddress2; 788*53ee8cc1Swenshuai.xi MS_U8 MyPhysicalAddress2[2]; 789*53ee8cc1Swenshuai.xi MsCEC_DEVICE_TYPE MyDeviceType2; 790*53ee8cc1Swenshuai.xi MsCEC_DEVICE_TYPE IniLogicalAddress; 791*53ee8cc1Swenshuai.xi #endif 792*53ee8cc1Swenshuai.xi } MS_CEC_INFO_LIST; 793*53ee8cc1Swenshuai.xi 794*53ee8cc1Swenshuai.xi typedef struct 795*53ee8cc1Swenshuai.xi { 796*53ee8cc1Swenshuai.xi MS_U32 u32XTAL_CLK_Hz; 797*53ee8cc1Swenshuai.xi }MS_CEC_INIT_INFO; 798*53ee8cc1Swenshuai.xi 799*53ee8cc1Swenshuai.xi 800*53ee8cc1Swenshuai.xi 801*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 802*53ee8cc1Swenshuai.xi // Function and Variable 803*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 804*53ee8cc1Swenshuai.xi /** 805*53ee8cc1Swenshuai.xi * @brief HDMI Status 806*53ee8cc1Swenshuai.xi */ 807*53ee8cc1Swenshuai.xi typedef struct 808*53ee8cc1Swenshuai.xi { 809*53ee8cc1Swenshuai.xi MS_BOOL bIsInitialized; 810*53ee8cc1Swenshuai.xi MS_BOOL bIsRunning; 811*53ee8cc1Swenshuai.xi }MS_CEC_Status; 812*53ee8cc1Swenshuai.xi 813*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 814*53ee8cc1Swenshuai.xi /// Assign which HDMI port connect to CEC 815*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC 816*53ee8cc1Swenshuai.xi /// @param InputPort \b IN: CEC connect port 817*53ee8cc1Swenshuai.xi /// @return None 818*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 819*53ee8cc1Swenshuai.xi void SYMBOL_WEAK MApi_CEC_PortSelcet(MsCEC_INPUT_PORT InputPort); 820*53ee8cc1Swenshuai.xi 821*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 822*53ee8cc1Swenshuai.xi /// Get version (without Mutex protect) 823*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC 824*53ee8cc1Swenshuai.xi /// @param ppVersion \b IN: version 825*53ee8cc1Swenshuai.xi /// @return TRUE: have version 826*53ee8cc1Swenshuai.xi /// @return FALSE: no version 827*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 828*53ee8cc1Swenshuai.xi // MS_BOOL MApi_CEC_GetLibVer(const MSIF_Version **ppVersion); 829*53ee8cc1Swenshuai.xi 830*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 831*53ee8cc1Swenshuai.xi /// Get cec info 832*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC 833*53ee8cc1Swenshuai.xi /// @param pInfo \b IN: info list 834*53ee8cc1Swenshuai.xi /// @return TRUE: have info list 835*53ee8cc1Swenshuai.xi /// @return FALSE: no info list 836*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 837*53ee8cc1Swenshuai.xi // MS_BOOL MApi_DDC2BI_GetInfo(MS_CEC_INFO_LIST *pInfo); 838*53ee8cc1Swenshuai.xi 839*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 840*53ee8cc1Swenshuai.xi /// Get cec status 841*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC 842*53ee8cc1Swenshuai.xi /// @param pStatus \b IN: status 843*53ee8cc1Swenshuai.xi /// @return TRUE: have status 844*53ee8cc1Swenshuai.xi /// @return FALSE: no status 845*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 846*53ee8cc1Swenshuai.xi // MS_BOOL MApi_DDC2BI_GetStatus(MS_CEC_Status *pStatus); 847*53ee8cc1Swenshuai.xi 848*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 849*53ee8cc1Swenshuai.xi /// Set debug level 850*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC 851*53ee8cc1Swenshuai.xi /// @param u16DbgSwitch \b IN: switch or not 852*53ee8cc1Swenshuai.xi /// @return TRUE: do switch 853*53ee8cc1Swenshuai.xi /// @return FALSE: no switch 854*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 855*53ee8cc1Swenshuai.xi MS_BOOL MApi_DDC2BI_SetDbgLevel(MS_U16 u16DbgSwitch); 856*53ee8cc1Swenshuai.xi 857*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 858*53ee8cc1Swenshuai.xi /// CEC do not work 859*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC 860*53ee8cc1Swenshuai.xi /// @return None 861*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------ 862*53ee8cc1Swenshuai.xi void MApi_CEC_Exit(void); 863*53ee8cc1Swenshuai.xi 864*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 865*53ee8cc1Swenshuai.xi /// CEC initial sequence 866*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC 867*53ee8cc1Swenshuai.xi /// @param pCECInfo \b IN: CEC info 868*53ee8cc1Swenshuai.xi /// @return None 869*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 870*53ee8cc1Swenshuai.xi 871*53ee8cc1Swenshuai.xi void MApi_CEC_Init(MS_CEC_INIT_INFO *pCECInfo); 872*53ee8cc1Swenshuai.xi 873*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 874*53ee8cc1Swenshuai.xi /// CEC initial chip relatived part 875*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC 876*53ee8cc1Swenshuai.xi /// @param pCECInfo \b IN: CEC info 877*53ee8cc1Swenshuai.xi /// @return None 878*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 879*53ee8cc1Swenshuai.xi void MApi_CEC_InitChip(MS_CEC_INIT_INFO *pCECInfo); 880*53ee8cc1Swenshuai.xi 881*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 882*53ee8cc1Swenshuai.xi /// CEC set own logical address 883*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 884*53ee8cc1Swenshuai.xi /// @param myLA \b IN: logical address 885*53ee8cc1Swenshuai.xi /// @return None 886*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 887*53ee8cc1Swenshuai.xi void MApi_CEC_SetMyLogicalAddress(MsCEC_DEVICELA myLA); 888*53ee8cc1Swenshuai.xi 889*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 890*53ee8cc1Swenshuai.xi /// Use to store CEC received messages 891*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 892*53ee8cc1Swenshuai.xi /// @return None 893*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------ 894*53ee8cc1Swenshuai.xi void MApi_CEC_ChkRxBuf(void); 895*53ee8cc1Swenshuai.xi 896*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 897*53ee8cc1Swenshuai.xi /// Use to send any CEC message by user defined 898*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 899*53ee8cc1Swenshuai.xi /// @param header \b IN: destination logical address 900*53ee8cc1Swenshuai.xi /// @param opcode \b IN: opcode 901*53ee8cc1Swenshuai.xi /// @param operand_ptr \b IN: operand 902*53ee8cc1Swenshuai.xi /// @param len \b IN: length 903*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 904*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 905*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_TxSendMsg(MsCEC_DEVICELA header,MsCEC_MSGLIST opcode,MS_U8* operand_ptr,MS_U8 len); 906*53ee8cc1Swenshuai.xi 907*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 908*53ee8cc1Swenshuai.xi /// Use to send any CEC message by user defined 909*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_ToBeRemove 910*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 911*53ee8cc1Swenshuai.xi /// @param opcode \b IN: opcode 912*53ee8cc1Swenshuai.xi /// @param operand_ptr \b IN: operand 913*53ee8cc1Swenshuai.xi /// @param len \b IN: length 914*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 915*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 916*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_TxSendMsg2(MsCEC_DEVICELA dst_address, MsCEC_MSGLIST msg, MS_U8* operand_ptr, MS_U8 len); 917*53ee8cc1Swenshuai.xi 918*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 919*53ee8cc1Swenshuai.xi /// Use to send CEC polling msg 920*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC 921*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 922*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 923*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 924*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MsAPI_CecTxSendPollingMsg(MsCEC_DEVICELA dst_address); 925*53ee8cc1Swenshuai.xi 926*53ee8cc1Swenshuai.xi //*****************************// 927*53ee8cc1Swenshuai.xi // One Touch Play & 928*53ee8cc1Swenshuai.xi // Routing Control Feature 929*53ee8cc1Swenshuai.xi //*****************************// 930*53ee8cc1Swenshuai.xi 931*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 932*53ee8cc1Swenshuai.xi /// Used by a new source to indicate that it has started to transmit a stream or used in response to a <Request Active Source> 933*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 934*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 935*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 936*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_ActiveSource(void); 937*53ee8cc1Swenshuai.xi 938*53ee8cc1Swenshuai.xi 939*53ee8cc1Swenshuai.xi //*****************************// 940*53ee8cc1Swenshuai.xi // Routing Control Feature 941*53ee8cc1Swenshuai.xi //*****************************// 942*53ee8cc1Swenshuai.xi 943*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 944*53ee8cc1Swenshuai.xi /// Used by a CEC switch when it's manually switched to inform akk other devices 945*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 946*53ee8cc1Swenshuai.xi /// @param orig_address \b IN: the original physicall address 947*53ee8cc1Swenshuai.xi /// @param new_address \b IN: the new physical address 948*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 949*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 950*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_RoutingChange(MS_U8* orig_address, MS_U8* new_address); 951*53ee8cc1Swenshuai.xi 952*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 953*53ee8cc1Swenshuai.xi /// Used by a new device to discover the status of the system. 954*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 955*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 956*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 957*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_ReqActiveSource(void); 958*53ee8cc1Swenshuai.xi 959*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 960*53ee8cc1Swenshuai.xi /// Used by the TV to request a streaming path from the specified physical address. 961*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 962*53ee8cc1Swenshuai.xi /// @param new_address \b IN: the new physical address 963*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 964*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 965*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_SetStreamPath(MS_U8* new_address); 966*53ee8cc1Swenshuai.xi 967*53ee8cc1Swenshuai.xi 968*53ee8cc1Swenshuai.xi //*****************************// 969*53ee8cc1Swenshuai.xi // Standby Feature 970*53ee8cc1Swenshuai.xi //*****************************// 971*53ee8cc1Swenshuai.xi 972*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 973*53ee8cc1Swenshuai.xi /// Use to switch one or all devices into standby mode. 974*53ee8cc1Swenshuai.xi /// One device: it's specific logical address, like "E_LA_RECORDER1" 975*53ee8cc1Swenshuai.xi /// All device: Use broadcast logical address, "E_LA_BROADCAST" 976*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 977*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 978*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 979*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 980*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_Standby(MsCEC_DEVICELA dst_address); 981*53ee8cc1Swenshuai.xi 982*53ee8cc1Swenshuai.xi 983*53ee8cc1Swenshuai.xi //*****************************// 984*53ee8cc1Swenshuai.xi // On Touch Record 985*53ee8cc1Swenshuai.xi //*****************************// 986*53ee8cc1Swenshuai.xi 987*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 988*53ee8cc1Swenshuai.xi /// Requests a device to stop a recording. 989*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 990*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 991*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 992*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 993*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_RecordOff(MsCEC_DEVICELA dst_address); 994*53ee8cc1Swenshuai.xi 995*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 996*53ee8cc1Swenshuai.xi /// Attempt to record the specified source. 997*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 998*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 999*53ee8cc1Swenshuai.xi /// @param cmd \b IN: record source command 1000*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1001*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1002*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MsAPI_CEC_Msg_RecordOn(MsCEC_DEVICELA dst_address, MsCEC_MSG_RECORD_SOURCE_TYPE cmd); 1003*53ee8cc1Swenshuai.xi 1004*53ee8cc1Swenshuai.xi 1005*53ee8cc1Swenshuai.xi //*****************************// 1006*53ee8cc1Swenshuai.xi // System Information Feature 1007*53ee8cc1Swenshuai.xi //*****************************// 1008*53ee8cc1Swenshuai.xi 1009*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1010*53ee8cc1Swenshuai.xi /// Used to indicate the supported CEC version, in response to a <Get CEC Version> 1011*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1012*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 1013*53ee8cc1Swenshuai.xi /// @param version \b IN: cec version 1014*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1015*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1016*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_ReportCECVersion(MsCEC_DEVICELA dst_address, MS_U8 version); 1017*53ee8cc1Swenshuai.xi 1018*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1019*53ee8cc1Swenshuai.xi /// Used by a device to enquire which version of CEC the target supports 1020*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1021*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 1022*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1023*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1024*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_ReqCECVersion(MsCEC_DEVICELA dst_address); 1025*53ee8cc1Swenshuai.xi 1026*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1027*53ee8cc1Swenshuai.xi /// Use to inform all other devices of the mapping between physical and logical address of the initiator 1028*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1029*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1030*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1031*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_ReportPhycalAddress(void); 1032*53ee8cc1Swenshuai.xi 1033*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1034*53ee8cc1Swenshuai.xi /// A request to a device to return its physical address 1035*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1036*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 1037*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1038*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1039*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_ReqPhycalAddress(MsCEC_DEVICELA dst_address); 1040*53ee8cc1Swenshuai.xi 1041*53ee8cc1Swenshuai.xi 1042*53ee8cc1Swenshuai.xi //*****************************// 1043*53ee8cc1Swenshuai.xi // Deck Control Feature 1044*53ee8cc1Swenshuai.xi //*****************************// 1045*53ee8cc1Swenshuai.xi 1046*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1047*53ee8cc1Swenshuai.xi /// Use to control a device's media functions 1048*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1049*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 1050*53ee8cc1Swenshuai.xi /// @param cmd \b IN: deck control mode command 1051*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1052*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1053*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_DeckControl(MsCEC_DEVICELA dst_address, MsCEC_MSG_DC_DECK_CTRL_PARM cmd); 1054*53ee8cc1Swenshuai.xi 1055*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1056*53ee8cc1Swenshuai.xi /// Use to provide a device's status when received "Give Deck Status" 1057*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1058*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 1059*53ee8cc1Swenshuai.xi /// @param cmd \b IN: deck info command 1060*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1061*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1062*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_DecStatus(MsCEC_DEVICELA dst_address, MsCEC_MSG_DC_DECK_STATUS_PARM cmd); 1063*53ee8cc1Swenshuai.xi 1064*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1065*53ee8cc1Swenshuai.xi /// Use to request device's status 1066*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1067*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 1068*53ee8cc1Swenshuai.xi /// @param cmd \b IN: status request command 1069*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1070*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1071*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_MSg_GiveDeckStatus(MsCEC_DEVICELA dst_address, MsCEC_MSG_STATUS_REQUEST_PARM cmd); 1072*53ee8cc1Swenshuai.xi 1073*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1074*53ee8cc1Swenshuai.xi /// Use to control the playback behaviour of a source device 1075*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1076*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 1077*53ee8cc1Swenshuai.xi /// @param cmd \b IN: play mode command 1078*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1079*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1080*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_MSg_DCPlay(MsCEC_DEVICELA dst_address, MsCEC_MSG_DC_PLAY_PARM cmd); 1081*53ee8cc1Swenshuai.xi 1082*53ee8cc1Swenshuai.xi 1083*53ee8cc1Swenshuai.xi //*****************************// 1084*53ee8cc1Swenshuai.xi // Device Menu Control & 1085*53ee8cc1Swenshuai.xi // Remote Control Passthrough Feature 1086*53ee8cc1Swenshuai.xi //*****************************// 1087*53ee8cc1Swenshuai.xi 1088*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1089*53ee8cc1Swenshuai.xi /// Request from TV for a device to show/remove a menu or to query status 1090*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1091*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 1092*53ee8cc1Swenshuai.xi /// @param cmd \b IN: menu request type command 1093*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1094*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1095*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_ReqMenuStatus(MsCEC_DEVICELA dst_address, MsCEC_MSG_MENU_REQ_TYPE cmd); 1096*53ee8cc1Swenshuai.xi 1097*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1098*53ee8cc1Swenshuai.xi /// Use to indicated that user pressed which control button 1099*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1100*53ee8cc1Swenshuai.xi /// @param bUserCtrlEn \b IN: menu status is activated or not 1101*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 1102*53ee8cc1Swenshuai.xi /// @param cmd \b IN: UI command 1103*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1104*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1105*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_UserCtrlPressed(MS_BOOL bUserCtrlEn, MsCEC_DEVICELA dst_address, MsCEC_MSG_USER_CTRL_PARM cmd); 1106*53ee8cc1Swenshuai.xi 1107*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1108*53ee8cc1Swenshuai.xi /// Use to indicated that user released which control button 1109*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1110*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 1111*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1112*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1113*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_UserCtrlReleased(MsCEC_DEVICELA dst_address); 1114*53ee8cc1Swenshuai.xi 1115*53ee8cc1Swenshuai.xi 1116*53ee8cc1Swenshuai.xi //*****************************// 1117*53ee8cc1Swenshuai.xi // Power Status Feature 1118*53ee8cc1Swenshuai.xi //*****************************// 1119*53ee8cc1Swenshuai.xi 1120*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1121*53ee8cc1Swenshuai.xi /// Use to inform a requesting device of the current power status 1122*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1123*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 1124*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1125*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1126*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_ReportPowerStatus(MsCEC_DEVICELA dst_address); 1127*53ee8cc1Swenshuai.xi 1128*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1129*53ee8cc1Swenshuai.xi /// Use to determine the current power status of a target device 1130*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1131*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 1132*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1133*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1134*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_ReqPowerStatus(MsCEC_DEVICELA dst_address); 1135*53ee8cc1Swenshuai.xi 1136*53ee8cc1Swenshuai.xi 1137*53ee8cc1Swenshuai.xi //*****************************// 1138*53ee8cc1Swenshuai.xi // General Protocol Feature 1139*53ee8cc1Swenshuai.xi //*****************************// 1140*53ee8cc1Swenshuai.xi 1141*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1142*53ee8cc1Swenshuai.xi /// Use to indicate that device doesn't support message type 1143*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1144*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 1145*53ee8cc1Swenshuai.xi /// @param msg \b IN: feature opcode 1146*53ee8cc1Swenshuai.xi /// @param cmd \b IN: abort reason 1147*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1148*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1149*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_FeatureAbort(MsCEC_DEVICELA dst_address, MsCEC_MSGLIST msg, MsCEC_MSG_ABORT_REASON cmd); 1150*53ee8cc1Swenshuai.xi 1151*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1152*53ee8cc1Swenshuai.xi /// This message is reserved for testing purposes. 1153*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1154*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 1155*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1156*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1157*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_Abort(MsCEC_DEVICELA dst_address); 1158*53ee8cc1Swenshuai.xi 1159*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1160*53ee8cc1Swenshuai.xi /// Used by a TV to indicate its currently selected menu language 1161*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1162*53ee8cc1Swenshuai.xi /// @param pu8MenuLanguageCode \b IN: menu language code 1163*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1164*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1165*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_SendMenuLanguage(MS_U8* pu8MenuLanguageCode); 1166*53ee8cc1Swenshuai.xi 1167*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1168*53ee8cc1Swenshuai.xi /// Used by an ARC TX device to request an ARC RX device to activate the ARC functionility in ARC TX device 1169*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1170*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 1171*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1172*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1173*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MsAPI_CecMsg_ReqARCInitiation(MsCEC_DEVICELA dst_address); 1174*53ee8cc1Swenshuai.xi 1175*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1176*53ee8cc1Swenshuai.xi /// Used by an ARC TX device to request an ARC RX device to deactivate the ARC functionility in ARC TX device 1177*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1178*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 1179*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1180*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1181*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MsAPI_CecMsg_ReqARCTermination(MsCEC_DEVICELA dst_address); 1182*53ee8cc1Swenshuai.xi 1183*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1184*53ee8cc1Swenshuai.xi /// A device implementing System Audio Control and which has volume control RC buttons request to use System Audio Mode to the Amplifier 1185*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1186*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 1187*53ee8cc1Swenshuai.xi /// @param amp_switch \b IN: 1: unmute amplifier. 0: mute amplifier 1188*53ee8cc1Swenshuai.xi /// @param my_address \b IN: source to be used is the device specified at this address 1189*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1190*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1191*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MsAPI_CecMsg_AudioModeReq(MsCEC_DEVICELA dst_address, MS_BOOL amp_switch, MS_U8* my_address ); 1192*53ee8cc1Swenshuai.xi 1193*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1194*53ee8cc1Swenshuai.xi /// Use to request an Amplifier to send its volume and mute status 1195*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_Message 1196*53ee8cc1Swenshuai.xi /// @param dst_address \b IN: destination logical address 1197*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1198*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1199*53ee8cc1Swenshuai.xi // CEC_ERROR_CODE MApi_CEC_Msg_GiveAudioStatus(MsCEC_DEVICELA dst_address); 1200*53ee8cc1Swenshuai.xi 1201*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1202*53ee8cc1Swenshuai.xi /// Get RX header 1203*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 1204*53ee8cc1Swenshuai.xi /// @return header 1205*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1206*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_Get_Header(void); 1207*53ee8cc1Swenshuai.xi 1208*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1209*53ee8cc1Swenshuai.xi /// Get RX opcode 1210*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 1211*53ee8cc1Swenshuai.xi /// @return opcode 1212*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1213*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_Get_OpCode(void); 1214*53ee8cc1Swenshuai.xi 1215*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1216*53ee8cc1Swenshuai.xi /// Get RX parameter 1217*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 1218*53ee8cc1Swenshuai.xi /// @param u8Idx \b IN: parameter index 1219*53ee8cc1Swenshuai.xi /// @return parameter 1220*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1221*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_Get_Para(MS_U8 u8Idx); 1222*53ee8cc1Swenshuai.xi 1223*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1224*53ee8cc1Swenshuai.xi /// Get RX command length 1225*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 1226*53ee8cc1Swenshuai.xi /// @return comand length 1227*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1228*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_GetCmdLen(void); 1229*53ee8cc1Swenshuai.xi 1230*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1231*53ee8cc1Swenshuai.xi /// Set active logical address 1232*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 1233*53ee8cc1Swenshuai.xi /// @param Addr \b IN: logical address 1234*53ee8cc1Swenshuai.xi /// @return None 1235*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1236*53ee8cc1Swenshuai.xi // void MApi_CEC_SetActiveLogicalAddress(MsCEC_DEVICELA Addr); 1237*53ee8cc1Swenshuai.xi 1238*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1239*53ee8cc1Swenshuai.xi /// Get active logical address 1240*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 1241*53ee8cc1Swenshuai.xi /// @return logical address 1242*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1243*53ee8cc1Swenshuai.xi // MsCEC_DEVICELA MApi_CEC_GetActiveLogicalAddress(void); 1244*53ee8cc1Swenshuai.xi 1245*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1246*53ee8cc1Swenshuai.xi /// Get power status 1247*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 1248*53ee8cc1Swenshuai.xi /// @return power status 1249*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1250*53ee8cc1Swenshuai.xi // MsCEC_MSG_POWER_STATUS_PARM MApi_CEC_GetPowerStatus(void); 1251*53ee8cc1Swenshuai.xi 1252*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1253*53ee8cc1Swenshuai.xi /// Get fifo index 1254*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC 1255*53ee8cc1Swenshuai.xi /// @return fifo index 1256*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1257*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_GetFifoIdx(void); 1258*53ee8cc1Swenshuai.xi 1259*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1260*53ee8cc1Swenshuai.xi /// Set fifo index 1261*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC 1262*53ee8cc1Swenshuai.xi /// @param u8Idx \b IN: fifo index 1263*53ee8cc1Swenshuai.xi /// @return None 1264*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1265*53ee8cc1Swenshuai.xi void MApi_CEC_SetFifoIdx(MS_U8 u8Idx); 1266*53ee8cc1Swenshuai.xi 1267*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1268*53ee8cc1Swenshuai.xi /// Set active power status 1269*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 1270*53ee8cc1Swenshuai.xi /// @param Status \b IN: active power status 1271*53ee8cc1Swenshuai.xi /// @return None 1272*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1273*53ee8cc1Swenshuai.xi // void MApi_CEC_SetActivePowerStatus(MsCEC_MSG_POWER_STATUS_PARM Status); 1274*53ee8cc1Swenshuai.xi 1275*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1276*53ee8cc1Swenshuai.xi /// Get active power status 1277*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 1278*53ee8cc1Swenshuai.xi /// @return power status 1279*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1280*53ee8cc1Swenshuai.xi // MsCEC_MSG_POWER_STATUS_PARM MApi_CEC_GetActivePowerStatus(void); 1281*53ee8cc1Swenshuai.xi 1282*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1283*53ee8cc1Swenshuai.xi /// Set active physical address 1284*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 1285*53ee8cc1Swenshuai.xi /// @param u8Para1 \b IN: physical address lower byte 1286*53ee8cc1Swenshuai.xi /// @param u8Para2 \b IN: physical address higer byte 1287*53ee8cc1Swenshuai.xi /// @return None 1288*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1289*53ee8cc1Swenshuai.xi // void MApi_CEC_SetActivePhysicalAddress(MS_U8 u8Para1, MS_U8 u8Para2); 1290*53ee8cc1Swenshuai.xi 1291*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1292*53ee8cc1Swenshuai.xi /// Set active device CEC version 1293*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 1294*53ee8cc1Swenshuai.xi /// @param u8Ver \b IN: active cec version 1295*53ee8cc1Swenshuai.xi /// @return None 1296*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1297*53ee8cc1Swenshuai.xi // void MApi_CEC_SetActiveDeviceCECVersion(MS_U8 u8Ver); 1298*53ee8cc1Swenshuai.xi 1299*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1300*53ee8cc1Swenshuai.xi /// Set active device type 1301*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 1302*53ee8cc1Swenshuai.xi /// @param Type \b IN: active device type 1303*53ee8cc1Swenshuai.xi /// @return None 1304*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1305*53ee8cc1Swenshuai.xi void MApi_CEC_SetActiveDeviceType(MsCEC_DEVICE_TYPE Type); 1306*53ee8cc1Swenshuai.xi 1307*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1308*53ee8cc1Swenshuai.xi /// Get message count 1309*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 1310*53ee8cc1Swenshuai.xi /// @return message count 1311*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1312*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_GetMsgCnt(void); 1313*53ee8cc1Swenshuai.xi 1314*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1315*53ee8cc1Swenshuai.xi /// Set message count 1316*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 1317*53ee8cc1Swenshuai.xi /// @param u8Cnt \b IN: message count 1318*53ee8cc1Swenshuai.xi /// @return None 1319*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1320*53ee8cc1Swenshuai.xi void MApi_CEC_SetMsgCnt(MS_U8 u8Cnt); 1321*53ee8cc1Swenshuai.xi 1322*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1323*53ee8cc1Swenshuai.xi /// Get Rx data 1324*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 1325*53ee8cc1Swenshuai.xi /// @param u8Fifoidx \b IN: fifo index 1326*53ee8cc1Swenshuai.xi /// @param u8Idx \b IN: data index 1327*53ee8cc1Swenshuai.xi /// @return data 1328*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1329*53ee8cc1Swenshuai.xi MS_U8 MApi_CEC_GetRxData(MS_U8 u8Fifoidx, MS_U8 u8Idx); 1330*53ee8cc1Swenshuai.xi 1331*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1332*53ee8cc1Swenshuai.xi /// Use to check CEC frame is valid or not 1333*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC 1334*53ee8cc1Swenshuai.xi /// @param msg_type \b IN: CEC message type 1335*53ee8cc1Swenshuai.xi /// @param ucLen \b IN: message length, include header and opcode 1336*53ee8cc1Swenshuai.xi /// @return TRUE: CEC frame is valid 1337*53ee8cc1Swenshuai.xi /// @return FALSE: CEC frame is not valid 1338*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1339*53ee8cc1Swenshuai.xi MS_BOOL MApi_CEC_CheckFrame(MsCEC_MSG_TRANS_TYPE msg_type, MS_U8 ucLen); 1340*53ee8cc1Swenshuai.xi 1341*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1342*53ee8cc1Swenshuai.xi /// Use to check exist devices 1343*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC 1344*53ee8cc1Swenshuai.xi /// @return None 1345*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1346*53ee8cc1Swenshuai.xi void MApi_CEC_CheckExistDevices(void); 1347*53ee8cc1Swenshuai.xi 1348*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1349*53ee8cc1Swenshuai.xi /// Use to config wake up 1350*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC 1351*53ee8cc1Swenshuai.xi /// @return None 1352*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1353*53ee8cc1Swenshuai.xi void MApi_CEC_ConfigWakeUp(void); 1354*53ee8cc1Swenshuai.xi 1355*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1356*53ee8cc1Swenshuai.xi /// Enable CEC 1357*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_BASIC 1358*53ee8cc1Swenshuai.xi /// @param bEnableFlag \b IN: enable CEC or not 1359*53ee8cc1Swenshuai.xi /// @return None 1360*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1361*53ee8cc1Swenshuai.xi void MApi_CEC_Enabled(MS_BOOL bEnableFlag); 1362*53ee8cc1Swenshuai.xi 1363*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1364*53ee8cc1Swenshuai.xi /// Set physical address 1365*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 1366*53ee8cc1Swenshuai.xi /// @param pdata \b IN: physical address 1367*53ee8cc1Swenshuai.xi /// @return None 1368*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1369*53ee8cc1Swenshuai.xi void MApi_CEC_SetMyPhysicalAddress(MS_U8 *pdata); 1370*53ee8cc1Swenshuai.xi 1371*53ee8cc1Swenshuai.xi #if ENABLE_CEC_MULTIPLE 1372*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1373*53ee8cc1Swenshuai.xi /// Set second logical address 1374*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_SECOND 1375*53ee8cc1Swenshuai.xi /// @param myLA \b IN: second logical address 1376*53ee8cc1Swenshuai.xi /// @return None 1377*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1378*53ee8cc1Swenshuai.xi void MApi_CEC_SetMyLogicalAddress2(MsCEC_DEVICELA myLA); 1379*53ee8cc1Swenshuai.xi 1380*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1381*53ee8cc1Swenshuai.xi /// Report second physical address 1382*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_SECOND 1383*53ee8cc1Swenshuai.xi /// @return CEC_ERROR_CODE 1384*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1385*53ee8cc1Swenshuai.xi CEC_ERROR_CODE MApi_CEC_Msg_ReportPhycalAddress2(void); 1386*53ee8cc1Swenshuai.xi 1387*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1388*53ee8cc1Swenshuai.xi /// Set second physical address 1389*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_SECOND 1390*53ee8cc1Swenshuai.xi /// @param pdata \b IN: second physical address 1391*53ee8cc1Swenshuai.xi /// @return None 1392*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1393*53ee8cc1Swenshuai.xi void MApi_CEC_SetMyPhysicalAddress2(MS_U8 *pdata); 1394*53ee8cc1Swenshuai.xi 1395*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1396*53ee8cc1Swenshuai.xi /// Set initiator logical address 1397*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_SECOND 1398*53ee8cc1Swenshuai.xi /// @param IniLA \b IN: initiator logical address 1399*53ee8cc1Swenshuai.xi /// @return None 1400*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1401*53ee8cc1Swenshuai.xi void MApi_CEC_SetInitiator(MsCEC_DEVICELA IniLA); 1402*53ee8cc1Swenshuai.xi #endif 1403*53ee8cc1Swenshuai.xi 1404*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1405*53ee8cc1Swenshuai.xi /// Get Tx status 1406*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 1407*53ee8cc1Swenshuai.xi /// @return status 1408*53ee8cc1Swenshuai.xi ///[Bit0]: CEC receives a new message. 1409*53ee8cc1Swenshuai.xi ///[Bit1]: CEC transmits a message successfully. 1410*53ee8cc1Swenshuai.xi ///[Bit2]: CEC retry fail for TX. 1411*53ee8cc1Swenshuai.xi ///[Bit3]: CEC lost arbitration to the second initiator. 1412*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1413*53ee8cc1Swenshuai.xi // MS_U8 MApi_CEC_GetTxStatus(void); 1414*53ee8cc1Swenshuai.xi 1415*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1416*53ee8cc1Swenshuai.xi /// Set power state 1417*53ee8cc1Swenshuai.xi /// @ingroup apiCEC_STATUS 1418*53ee8cc1Swenshuai.xi /// @param u16PowerState \b IN: power state 1419*53ee8cc1Swenshuai.xi /// @return 0: success 1420*53ee8cc1Swenshuai.xi /// @return 1: fail 1421*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1422*53ee8cc1Swenshuai.xi MS_U32 MApi_CEC_SetPowerState(EN_POWER_MODE u16PowerState); 1423*53ee8cc1Swenshuai.xi 1424*53ee8cc1Swenshuai.xi #ifdef __cplusplus 1425*53ee8cc1Swenshuai.xi } 1426*53ee8cc1Swenshuai.xi #endif 1427*53ee8cc1Swenshuai.xi 1428*53ee8cc1Swenshuai.xi #endif //_API_CEC_H_ 1429*53ee8cc1Swenshuai.xi 1430