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 drvIR.h 98*53ee8cc1Swenshuai.xi /// @brief IR Driver Interface 99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc. 100*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////////////////////////// 101*53ee8cc1Swenshuai.xi 102*53ee8cc1Swenshuai.xi /*! \defgroup G_IR IR interface 103*53ee8cc1Swenshuai.xi \ingroup G_PERIPHERAL 104*53ee8cc1Swenshuai.xi 105*53ee8cc1Swenshuai.xi \brief 106*53ee8cc1Swenshuai.xi 107*53ee8cc1Swenshuai.xi Commonly, remote controls are Consumer IR devices which send digitally-coded pulses of infrared radiation to control functions such as 108*53ee8cc1Swenshuai.xi power, volume, tuning, temperature set point, fan speed, or other features. Remote controls for these devices are usually small wireless 109*53ee8cc1Swenshuai.xi handheld objects with an array of buttons for adjusting various settings such as television channel, track number, and volume. 110*53ee8cc1Swenshuai.xi For many devices, the remote control contains all the function controls while the controlled device itself has only a handful of essential primary controls. 111*53ee8cc1Swenshuai.xi 112*53ee8cc1Swenshuai.xi <b>Features</b> 113*53ee8cc1Swenshuai.xi 114*53ee8cc1Swenshuai.xi - Consumer electronics infrared protocols 115*53ee8cc1Swenshuai.xi - Infrared, line of sight and operating angle 116*53ee8cc1Swenshuai.xi - Remote control systems 117*53ee8cc1Swenshuai.xi - The opto components, and circuits 118*53ee8cc1Swenshuai.xi 119*53ee8cc1Swenshuai.xi <b> IR Block Diagram: </b> \n 120*53ee8cc1Swenshuai.xi \image html drvIR_pic1.png 121*53ee8cc1Swenshuai.xi 122*53ee8cc1Swenshuai.xi <b> Operation Code Flow: </b> \n 123*53ee8cc1Swenshuai.xi -# Prepare IR setting for each operation 124*53ee8cc1Swenshuai.xi -# Set and start IR in command handle 125*53ee8cc1Swenshuai.xi -# Trigger IR 126*53ee8cc1Swenshuai.xi 127*53ee8cc1Swenshuai.xi \defgroup G_IR_INIT Initialization Task relative 128*53ee8cc1Swenshuai.xi \ingroup G_IR 129*53ee8cc1Swenshuai.xi \defgroup G_IR_COMMON Common Task relative 130*53ee8cc1Swenshuai.xi \ingroup G_IR 131*53ee8cc1Swenshuai.xi \defgroup G_IR_CONTROL Control relative 132*53ee8cc1Swenshuai.xi \ingroup G_IR 133*53ee8cc1Swenshuai.xi */ 134*53ee8cc1Swenshuai.xi 135*53ee8cc1Swenshuai.xi #ifndef _DRV_IR_H_ 136*53ee8cc1Swenshuai.xi #define _DRV_IR_H_ 137*53ee8cc1Swenshuai.xi 138*53ee8cc1Swenshuai.xi 139*53ee8cc1Swenshuai.xi #ifdef __cplusplus 140*53ee8cc1Swenshuai.xi extern "C" 141*53ee8cc1Swenshuai.xi { 142*53ee8cc1Swenshuai.xi #endif 143*53ee8cc1Swenshuai.xi 144*53ee8cc1Swenshuai.xi #include "MsTypes.h" 145*53ee8cc1Swenshuai.xi #include "MsDevice.h" 146*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 147*53ee8cc1Swenshuai.xi // Driver Capability 148*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 149*53ee8cc1Swenshuai.xi 150*53ee8cc1Swenshuai.xi 151*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 152*53ee8cc1Swenshuai.xi // Macro and Define 153*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 154*53ee8cc1Swenshuai.xi /// define IR library version 155*53ee8cc1Swenshuai.xi #define MSIF_IR_LIB_CODE {'I','R','_','_'} 156*53ee8cc1Swenshuai.xi #define MSIF_IR_LIBVER {'0','5'} 157*53ee8cc1Swenshuai.xi #define MSIF_IR_BUILDNUM {'0','0' } 158*53ee8cc1Swenshuai.xi #define MSIF_IR_CHANGELIST {'0','0','4','4','3','0','8','6'} 159*53ee8cc1Swenshuai.xi 160*53ee8cc1Swenshuai.xi #define IR_DRV_VERSION /* Character String for DRV/API version */ \ 161*53ee8cc1Swenshuai.xi MSIF_TAG, /* 'MSIF' */ \ 162*53ee8cc1Swenshuai.xi MSIF_CLASS, /* '00' */ \ 163*53ee8cc1Swenshuai.xi MSIF_CUS, /* 0x0000 */ \ 164*53ee8cc1Swenshuai.xi MSIF_MOD, /* 0x0000 */ \ 165*53ee8cc1Swenshuai.xi MSIF_CHIP, \ 166*53ee8cc1Swenshuai.xi MSIF_CPU, \ 167*53ee8cc1Swenshuai.xi MSIF_IR_LIB_CODE, /* IP__ */ \ 168*53ee8cc1Swenshuai.xi MSIF_IR_LIBVER, /* 0.0 ~ Z.Z */ \ 169*53ee8cc1Swenshuai.xi MSIF_IR_BUILDNUM, /* 00 ~ 99 */ \ 170*53ee8cc1Swenshuai.xi MSIF_IR_CHANGELIST, /* CL# */ \ 171*53ee8cc1Swenshuai.xi MSIF_OS 172*53ee8cc1Swenshuai.xi 173*53ee8cc1Swenshuai.xi /// IR driver 174*53ee8cc1Swenshuai.xi #define IR_VERSION_STRING_MAX 33 175*53ee8cc1Swenshuai.xi #define IR_DUMMY_KEY 0xFF 176*53ee8cc1Swenshuai.xi #define IR_DUMMY_STATUS 0x00 177*53ee8cc1Swenshuai.xi 178*53ee8cc1Swenshuai.xi //IR Decode mode list 179*53ee8cc1Swenshuai.xi #define IR_DEC_RC_RC5 0 180*53ee8cc1Swenshuai.xi #define IR_DEC_RC_RC5X 1 181*53ee8cc1Swenshuai.xi #define IR_DEC_RC_RC6 2 182*53ee8cc1Swenshuai.xi #define IR_DEC_FULL 3 183*53ee8cc1Swenshuai.xi #define IR_DEC_RAW 4 184*53ee8cc1Swenshuai.xi #define IR_DEC_SW 5 185*53ee8cc1Swenshuai.xi #define IR_DEC_FMT 6 186*53ee8cc1Swenshuai.xi 187*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 188*53ee8cc1Swenshuai.xi // Type and Structure 189*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 190*53ee8cc1Swenshuai.xi /// define IR driver info 191*53ee8cc1Swenshuai.xi typedef struct __attribute__((aligned (4096))) 192*53ee8cc1Swenshuai.xi { 193*53ee8cc1Swenshuai.xi MS_U8 u8IsDecodeEn : 1; /// check decode enable (Full/Raw) 194*53ee8cc1Swenshuai.xi MS_U8 u8IsIntMsked : 1; /// check int mask (Full/Raw) 195*53ee8cc1Swenshuai.xi MS_U8 u8IsPolarInv : 1; /// check signal polarity inverted (Full/Raw) 196*53ee8cc1Swenshuai.xi MS_U8 u8IsFifoFullEn : 1; /// Fifo full check enable (Full/Raw) 197*53ee8cc1Swenshuai.xi MS_U8 u8IsFifoFull : 1; /// Check Fifo full (Full/Raw) 198*53ee8cc1Swenshuai.xi MS_U8 u8IsKeyMsbFst : 1; /// Check Key MSB first (Full/Raw) 199*53ee8cc1Swenshuai.xi MS_U8 u8IsBitInvEn : 1; /// Check decode logic bit inverse (Full/Raw) 200*53ee8cc1Swenshuai.xi MS_U8 u8IsGlhrmEn : 1; /// glitch removal enable 201*53ee8cc1Swenshuai.xi MS_U8 u8DecodeMode : 4; /// decode mode. 0: RC5, 1: RC5X, 2: RC6, 3: Full, 4: Raw, 5: SW, 6:FMT 202*53ee8cc1Swenshuai.xi MS_U8 u8CCodeBytes : 2; /// customer code bytes: 1 or 2 bytes (Full only) 203*53ee8cc1Swenshuai.xi MS_U8 u8Reserved : 2; /// RFU 204*53ee8cc1Swenshuai.xi MS_U8 u8CodeBits; /// Code bits: 0x00~0x7F 205*53ee8cc1Swenshuai.xi MS_U8 u8FifoDepth; /// Fifo depth (Full/Raw) 206*53ee8cc1Swenshuai.xi //for RC 207*53ee8cc1Swenshuai.xi MS_U8 u8IsRCDecodeEn : 1; /// check RC decode enable (RC) 208*53ee8cc1Swenshuai.xi MS_U8 u8IsRCPolarInv : 1; /// check RC signal polarity inverted (RC) 209*53ee8cc1Swenshuai.xi MS_U8 u8RCReserved : 6; /// RFU (RC) 210*53ee8cc1Swenshuai.xi }IR_DrvInfo; 211*53ee8cc1Swenshuai.xi 212*53ee8cc1Swenshuai.xi /// define IR key code time & bounds 213*53ee8cc1Swenshuai.xi typedef struct 214*53ee8cc1Swenshuai.xi { 215*53ee8cc1Swenshuai.xi MS_S16 s16Time; ///key code time 216*53ee8cc1Swenshuai.xi MS_S8 s8UpBnd; ///upper bound 217*53ee8cc1Swenshuai.xi MS_S8 s8LoBnd; ///low bound 218*53ee8cc1Swenshuai.xi } IR_TimeCfg; 219*53ee8cc1Swenshuai.xi 220*53ee8cc1Swenshuai.xi /// define IR time parameters 221*53ee8cc1Swenshuai.xi typedef struct __attribute__((aligned (4096))) 222*53ee8cc1Swenshuai.xi { 223*53ee8cc1Swenshuai.xi IR_TimeCfg tHdr; /// header code time 224*53ee8cc1Swenshuai.xi IR_TimeCfg tOff; /// off code time 225*53ee8cc1Swenshuai.xi IR_TimeCfg tOffRpt; /// off code repeat time 226*53ee8cc1Swenshuai.xi IR_TimeCfg tLg01Hg; /// logical 0/1 high time 227*53ee8cc1Swenshuai.xi IR_TimeCfg tLg0; /// logical 0 time 228*53ee8cc1Swenshuai.xi IR_TimeCfg tLg1; /// logical 1 time 229*53ee8cc1Swenshuai.xi 230*53ee8cc1Swenshuai.xi } IR_TimeBnd; 231*53ee8cc1Swenshuai.xi 232*53ee8cc1Swenshuai.xi /// define IR configuration parameters 233*53ee8cc1Swenshuai.xi typedef struct __attribute__((aligned (4096))) 234*53ee8cc1Swenshuai.xi { 235*53ee8cc1Swenshuai.xi //MS_U8 u8ModeSel; /// IR mode selection 236*53ee8cc1Swenshuai.xi MS_U8 u8Ctrl0; /// IR enable control 0 237*53ee8cc1Swenshuai.xi MS_U8 u8Ctrl1; /// IR enable control 1 238*53ee8cc1Swenshuai.xi MS_U8 u8Clk_mhz; /// IR required clock 239*53ee8cc1Swenshuai.xi MS_U8 u8HdrCode0; /// IR Header code 0 240*53ee8cc1Swenshuai.xi MS_U8 u8HdrCode1; /// IR Header code 1 241*53ee8cc1Swenshuai.xi MS_U8 u8CCodeBytes; /// Customer codes: 1 or 2 bytes 242*53ee8cc1Swenshuai.xi MS_U8 u8CodeBits; /// Code bits: 0x00~0x7F 243*53ee8cc1Swenshuai.xi MS_U8 u8HdrCode20; /// 2nd IR Header code 0 244*53ee8cc1Swenshuai.xi MS_U8 u8HdrCode21; /// 2nd IR Header code 1 245*53ee8cc1Swenshuai.xi 246*53ee8cc1Swenshuai.xi } IR_RegCfg; 247*53ee8cc1Swenshuai.xi 248*53ee8cc1Swenshuai.xi /// emurate IR fucntion return result 249*53ee8cc1Swenshuai.xi typedef enum 250*53ee8cc1Swenshuai.xi { 251*53ee8cc1Swenshuai.xi /// IR result for failure 252*53ee8cc1Swenshuai.xi E_IR_FAIL =0, 253*53ee8cc1Swenshuai.xi /// IR result for OK 254*53ee8cc1Swenshuai.xi E_IR_OK = 1, 255*53ee8cc1Swenshuai.xi 256*53ee8cc1Swenshuai.xi } IR_Result; 257*53ee8cc1Swenshuai.xi 258*53ee8cc1Swenshuai.xi /// emurate IR status 259*53ee8cc1Swenshuai.xi typedef enum 260*53ee8cc1Swenshuai.xi { 261*53ee8cc1Swenshuai.xi /// IR Driver Status: Initialization OK 262*53ee8cc1Swenshuai.xi E_IR_INIT_OK = (1<<0), 263*53ee8cc1Swenshuai.xi /// IR Driver Status: Callback installed 264*53ee8cc1Swenshuai.xi E_IR_INST_CLBK = (1<<1), 265*53ee8cc1Swenshuai.xi /// IR Driver Status: FIFO empty 266*53ee8cc1Swenshuai.xi E_IR_FIFO_EMPTY = (1<<2), 267*53ee8cc1Swenshuai.xi /// IR Driver Status: FIFO full 268*53ee8cc1Swenshuai.xi E_IR_FIFO_FULL = (1<<3), 269*53ee8cc1Swenshuai.xi /// IR Driver Status: Get key code 270*53ee8cc1Swenshuai.xi E_IR_KEY_CODE = (1<<4), 271*53ee8cc1Swenshuai.xi /// IR Driver Status: Key timeout 272*53ee8cc1Swenshuai.xi E_IR_KEY_TIMEOUT = (1<<5), 273*53ee8cc1Swenshuai.xi /// IR Driver Status: Key decoded error 274*53ee8cc1Swenshuai.xi E_IR_KEY_DECERR = (1<<6), 275*53ee8cc1Swenshuai.xi /// IR Driver Status: IR is enabled 276*53ee8cc1Swenshuai.xi E_IR_ENABLE = (1<<7), 277*53ee8cc1Swenshuai.xi /// IR Driver Status: Maximum status 278*53ee8cc1Swenshuai.xi E_IR_MAX_STATUS = 255 279*53ee8cc1Swenshuai.xi } IR_Status; 280*53ee8cc1Swenshuai.xi 281*53ee8cc1Swenshuai.xi //------------------------------- 282*53ee8cc1Swenshuai.xi // Mailbox Class : IR 283*53ee8cc1Swenshuai.xi //------------------------------- 284*53ee8cc1Swenshuai.xi /// emurate IR mailbox commands from cpu to mcu51 285*53ee8cc1Swenshuai.xi typedef enum 286*53ee8cc1Swenshuai.xi { 287*53ee8cc1Swenshuai.xi /// mbx command for initialization 288*53ee8cc1Swenshuai.xi E_IR_CPUTo51_CMD_INIT=0x00, 289*53ee8cc1Swenshuai.xi /// mbx command for configuration 290*53ee8cc1Swenshuai.xi E_IR_CPUTo51_CMD_CONFIG, 291*53ee8cc1Swenshuai.xi /// mbx command for key code 292*53ee8cc1Swenshuai.xi E_IR_CPUTo51_CMD_KEYCODE, 293*53ee8cc1Swenshuai.xi /// mbx command for set callback 294*53ee8cc1Swenshuai.xi E_IR_CPUTo51_CMD_SETCLBK, 295*53ee8cc1Swenshuai.xi /// mbx command for library version 296*53ee8cc1Swenshuai.xi E_IR_CPUTo51_CMD_LIBVER, 297*53ee8cc1Swenshuai.xi /// mbx command for status 298*53ee8cc1Swenshuai.xi E_IR_CPUTo51_CMD_STATUS, 299*53ee8cc1Swenshuai.xi /// mbx command for enable 300*53ee8cc1Swenshuai.xi E_IR_CPUTo51_CMD_ENABLE, 301*53ee8cc1Swenshuai.xi /// mbx command for driver info 302*53ee8cc1Swenshuai.xi E_IR_CPUTo51_CMD_INFO, 303*53ee8cc1Swenshuai.xi } IR_CPUTo51CmdIdx; 304*53ee8cc1Swenshuai.xi 305*53ee8cc1Swenshuai.xi /// emurate IR mailbox commands ack from mcu51 to cpu 306*53ee8cc1Swenshuai.xi typedef enum 307*53ee8cc1Swenshuai.xi { 308*53ee8cc1Swenshuai.xi //(1) Acknowledge from MCU51 309*53ee8cc1Swenshuai.xi /// ack mbx command for initialization 310*53ee8cc1Swenshuai.xi E_IR_51ToCPU_CMD_ACK_INIT=0x00, 311*53ee8cc1Swenshuai.xi /// ack mbx command for configuration 312*53ee8cc1Swenshuai.xi E_IR_51ToCPU_CMD_ACK_CONFIG, 313*53ee8cc1Swenshuai.xi /// ack mbx command for key code 314*53ee8cc1Swenshuai.xi E_IR_51ToCPU_CMD_ACK_KEYCODE, 315*53ee8cc1Swenshuai.xi /// ack mbx command for set callback 316*53ee8cc1Swenshuai.xi E_IR_51ToCPU_CMD_ACK_SETCLBK, 317*53ee8cc1Swenshuai.xi /// ack mbx command for library version 318*53ee8cc1Swenshuai.xi E_IR_51ToCPU_CMD_ACK_LIBVER, 319*53ee8cc1Swenshuai.xi ///ack mbx command for status 320*53ee8cc1Swenshuai.xi E_IR_51ToCPU_CMD_ACK_STATUS, 321*53ee8cc1Swenshuai.xi ///ack mbx command for enable 322*53ee8cc1Swenshuai.xi E_IR_51ToCPU_CMD_ACK_ENABLE, 323*53ee8cc1Swenshuai.xi ///ack mbx command for driver info 324*53ee8cc1Swenshuai.xi E_IR_51ToCPU_CMD_ACK_INFO, 325*53ee8cc1Swenshuai.xi 326*53ee8cc1Swenshuai.xi //(2) Notification from MCU51 327*53ee8cc1Swenshuai.xi ///notification mbx command for key code 328*53ee8cc1Swenshuai.xi E_IR_51ToCPU_CMD_KEYCODE, 329*53ee8cc1Swenshuai.xi 330*53ee8cc1Swenshuai.xi } IR_51ToCPUCmdIdx; 331*53ee8cc1Swenshuai.xi 332*53ee8cc1Swenshuai.xi /// emurate ack flags 333*53ee8cc1Swenshuai.xi typedef enum 334*53ee8cc1Swenshuai.xi { 335*53ee8cc1Swenshuai.xi /// ack flag for null 336*53ee8cc1Swenshuai.xi E_IR_ACKFLG_NULL = 0, 337*53ee8cc1Swenshuai.xi /// ack flag for wait initialization 338*53ee8cc1Swenshuai.xi E_IR_ACKFLG_WAIT_INIT = (1<<0), 339*53ee8cc1Swenshuai.xi /// ack flag for wait configuration 340*53ee8cc1Swenshuai.xi E_IR_ACKFLG_WAIT_CONFIG = (1<<1), 341*53ee8cc1Swenshuai.xi /// ack flag for wait key code 342*53ee8cc1Swenshuai.xi E_IR_ACKFLG_WAIT_KEYCODE = (1<<2), 343*53ee8cc1Swenshuai.xi /// ack flag for wait set callback 344*53ee8cc1Swenshuai.xi E_IR_ACKFLG_WAIT_SETCLBK = (1<<3), 345*53ee8cc1Swenshuai.xi /// ack flag for wait library version 346*53ee8cc1Swenshuai.xi E_IR_ACKFLG_WAIT_LIBVER = (1<<4), 347*53ee8cc1Swenshuai.xi /// ack flag for wait status 348*53ee8cc1Swenshuai.xi E_IR_ACKFLG_WAIT_STATUS = (1<<5), 349*53ee8cc1Swenshuai.xi /// ack flag for wait enable 350*53ee8cc1Swenshuai.xi E_IR_ACKFLG_WAIT_ENABLE = (1<<6), 351*53ee8cc1Swenshuai.xi /// ack flag for wait driver info 352*53ee8cc1Swenshuai.xi E_IR_ACKFLG_WAIT_INFO = (1<<7), 353*53ee8cc1Swenshuai.xi } IR_AckFlags; 354*53ee8cc1Swenshuai.xi 355*53ee8cc1Swenshuai.xi /// Callback function which is called in IR ISR. 356*53ee8cc1Swenshuai.xi typedef void ( *IR_Callback ) (MS_U8 u8Key, MS_U8 u8RepeatFlag); 357*53ee8cc1Swenshuai.xi 358*53ee8cc1Swenshuai.xi ///Define IR debug level 359*53ee8cc1Swenshuai.xi typedef enum _IR_DbgLvl 360*53ee8cc1Swenshuai.xi { 361*53ee8cc1Swenshuai.xi E_IR_DBGLVL_NONE = 0, /// no debug message 362*53ee8cc1Swenshuai.xi E_IR_DBGLVL_WARNING, /// show warning only 363*53ee8cc1Swenshuai.xi E_IR_DBGLVL_ERROR, /// show error only 364*53ee8cc1Swenshuai.xi E_IR_DBGLVL_INFO, /// show error & informaiton 365*53ee8cc1Swenshuai.xi E_IR_DBGLVL_ALL, /// show error, information & funciton name 366*53ee8cc1Swenshuai.xi }IR_DbgLvl; 367*53ee8cc1Swenshuai.xi 368*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 369*53ee8cc1Swenshuai.xi // Function and Variable 370*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 371*53ee8cc1Swenshuai.xi 372*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 373*53ee8cc1Swenshuai.xi /// IR Iinitialized function before using IR to receive keys. 374*53ee8cc1Swenshuai.xi /// @ingroup G_IR_INIT 375*53ee8cc1Swenshuai.xi /// @param pIRRegCfg \b IN: pointer to IR configuration structure 376*53ee8cc1Swenshuai.xi /// @return E_IR_OK: Success 377*53ee8cc1Swenshuai.xi /// @return E_IR_FAIL or other values: Failure 378*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 379*53ee8cc1Swenshuai.xi IR_Result MDrv_IR_Init(IR_RegCfg *pIRRegCfg); 380*53ee8cc1Swenshuai.xi 381*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 382*53ee8cc1Swenshuai.xi /// IR configuration function for time bound 383*53ee8cc1Swenshuai.xi /// @ingroup G_IR_COMMON 384*53ee8cc1Swenshuai.xi /// @param pIRTimeBnd \b IN: pointer to IR time bound structure 385*53ee8cc1Swenshuai.xi /// @return E_IR_OK: Success 386*53ee8cc1Swenshuai.xi /// @return E_IR_FAIL or other values: Failure 387*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 388*53ee8cc1Swenshuai.xi IR_Result MDrv_IR_Config(IR_TimeBnd *pIRTimeBnd); 389*53ee8cc1Swenshuai.xi 390*53ee8cc1Swenshuai.xi 391*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 392*53ee8cc1Swenshuai.xi /// IR get key code function. 393*53ee8cc1Swenshuai.xi /// @ingroup G_IR_CONTROL 394*53ee8cc1Swenshuai.xi /// @param pu8Key \b OUT: Get IR key code 395*53ee8cc1Swenshuai.xi /// @param pu8Repeat \b OUT: Get IR key repeat status 396*53ee8cc1Swenshuai.xi /// @return E_IR_OK: Success 397*53ee8cc1Swenshuai.xi /// @return E_IR_FAIL or other values: Failure 398*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 399*53ee8cc1Swenshuai.xi IR_Result MDrv_IR_GetKeyCode(MS_U8 *pu8Key, MS_U8 *pu8Repeat); 400*53ee8cc1Swenshuai.xi 401*53ee8cc1Swenshuai.xi 402*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 403*53ee8cc1Swenshuai.xi /// Set IR callback function when receive IR key. Support only one callback. If call it twice, 404*53ee8cc1Swenshuai.xi /// the first callback does not be called. 405*53ee8cc1Swenshuai.xi /// Note: The callback runs at interrupt mode. 406*53ee8cc1Swenshuai.xi /// @ingroup G_IR_CONTROL 407*53ee8cc1Swenshuai.xi /// @param pCallback \b IN: Set the callback function when generate IR interrupt. 408*53ee8cc1Swenshuai.xi /// @return E_IR_OK: Success 409*53ee8cc1Swenshuai.xi /// @return E_IR_FAIL or other values: Failure 410*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 411*53ee8cc1Swenshuai.xi IR_Result MDrv_IR_SetCallback(IR_Callback pCallback); 412*53ee8cc1Swenshuai.xi 413*53ee8cc1Swenshuai.xi 414*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 415*53ee8cc1Swenshuai.xi /// Get IR callback function which receive IR key. 416*53ee8cc1Swenshuai.xi /// @ingroup G_IR_CONTROL 417*53ee8cc1Swenshuai.xi /// @return the callback function when generate IR interrupt 418*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 419*53ee8cc1Swenshuai.xi IR_Callback MDrv_IR_GetCallback(void); 420*53ee8cc1Swenshuai.xi 421*53ee8cc1Swenshuai.xi 422*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 423*53ee8cc1Swenshuai.xi /// Get IR library version function. 424*53ee8cc1Swenshuai.xi /// @ingroup G_IR_COMMON 425*53ee8cc1Swenshuai.xi /// @param ppVersion \b OUT: pointer to library structure 426*53ee8cc1Swenshuai.xi /// @return E_IR_OK: Success 427*53ee8cc1Swenshuai.xi /// @return E_IR_FAIL or other values: Failure 428*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 429*53ee8cc1Swenshuai.xi IR_Result MDrv_IR_GetLibVer(const MSIF_Version **ppVersion); 430*53ee8cc1Swenshuai.xi 431*53ee8cc1Swenshuai.xi 432*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 433*53ee8cc1Swenshuai.xi /// Get IR status function. 434*53ee8cc1Swenshuai.xi /// @ingroup G_IR_CONTROL 435*53ee8cc1Swenshuai.xi /// @param pu8IRStatus \b OUT: pointer to status structure 436*53ee8cc1Swenshuai.xi /// @return E_IR_OK: Success 437*53ee8cc1Swenshuai.xi /// @return E_IR_FAIL or other values: Failure 438*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 439*53ee8cc1Swenshuai.xi IR_Result MDrv_IR_GetStatus(MS_U8 *pu8IRStatus); 440*53ee8cc1Swenshuai.xi 441*53ee8cc1Swenshuai.xi 442*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 443*53ee8cc1Swenshuai.xi /// Set IR enable function. 444*53ee8cc1Swenshuai.xi /// @ingroup G_IR_CONTROL 445*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable IR, FALSE: disable IR 446*53ee8cc1Swenshuai.xi /// @return E_IR_OK: Success 447*53ee8cc1Swenshuai.xi /// @return E_IR_FAIL or other values: Failure 448*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 449*53ee8cc1Swenshuai.xi IR_Result MDrv_IR_Enable(MS_BOOL bEnable); 450*53ee8cc1Swenshuai.xi 451*53ee8cc1Swenshuai.xi 452*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 453*53ee8cc1Swenshuai.xi /// Get IR driver information function. 454*53ee8cc1Swenshuai.xi /// @ingroup G_IR_COMMON 455*53ee8cc1Swenshuai.xi /// @return @ref IR_DrvInfo structure 456*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 457*53ee8cc1Swenshuai.xi const IR_DrvInfo* MDrv_IR_GetInfo(void); 458*53ee8cc1Swenshuai.xi 459*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 460*53ee8cc1Swenshuai.xi /// Set IR debug function. 461*53ee8cc1Swenshuai.xi /// @ingroup G_IR_COMMON 462*53ee8cc1Swenshuai.xi /// @param eLevel \b IN: E_IR_DBGLVL_NONE/E_IR_DBGLVL_WARNING/E_IR_DBGLVL_ERROR/E_IR_DBGLVL_INFO/E_IR_DBGLVL_ALL 463*53ee8cc1Swenshuai.xi /// @return E_IR_OK: Success 464*53ee8cc1Swenshuai.xi /// @return E_IR_FAIL or other values: Failure 465*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 466*53ee8cc1Swenshuai.xi IR_Result MDrv_IR_SetDbgLevel(IR_DbgLvl eLevel); 467*53ee8cc1Swenshuai.xi 468*53ee8cc1Swenshuai.xi #define IR_VERSION 0x00000001 469*53ee8cc1Swenshuai.xi 470*53ee8cc1Swenshuai.xi //#ifdef MSOS_TYPE_LINUX 471*53ee8cc1Swenshuai.xi #if 1 472*53ee8cc1Swenshuai.xi #define IR_MAX_BUF_DPH 2 473*53ee8cc1Swenshuai.xi #define IR_MAX_BUF_LEN 256 474*53ee8cc1Swenshuai.xi typedef enum 475*53ee8cc1Swenshuai.xi { 476*53ee8cc1Swenshuai.xi E_IR_DECMODE_HWFULL = 0, 477*53ee8cc1Swenshuai.xi E_IR_DECMODE_HWRAW, 478*53ee8cc1Swenshuai.xi E_IR_DECMODE_HWRC5, 479*53ee8cc1Swenshuai.xi E_IR_DECMODE_HWRC5X, 480*53ee8cc1Swenshuai.xi E_IR_DECMODE_HWRC6, 481*53ee8cc1Swenshuai.xi E_IR_DECMODE_SW, 482*53ee8cc1Swenshuai.xi E_IR_DECMODE_SHOT, 483*53ee8cc1Swenshuai.xi E_IR_DECMODE_NONE 484*53ee8cc1Swenshuai.xi } IR_DecodeMode; 485*53ee8cc1Swenshuai.xi 486*53ee8cc1Swenshuai.xi ///IR data sequence format select for NEC-like (PPM modulation) formats. 487*53ee8cc1Swenshuai.xi ///Note: 488*53ee8cc1Swenshuai.xi ///S = System Code. 489*53ee8cc1Swenshuai.xi ///C = Customer Code Bits, (ex: C8= customer code 8bits). 490*53ee8cc1Swenshuai.xi ///D = Data (Key) Code Bits, (ex: D8= data code 8bits). 491*53ee8cc1Swenshuai.xi ///P = Format with Parity Check (ex: 3th byte and 4th byte of NEC format). 492*53ee8cc1Swenshuai.xi typedef enum 493*53ee8cc1Swenshuai.xi { 494*53ee8cc1Swenshuai.xi E_IR_XFM_NOTDEF = 0, ///Format not define 495*53ee8cc1Swenshuai.xi E_IR_XFM_C16D8D8P=1, ///ex: NEC, Toshiba format 496*53ee8cc1Swenshuai.xi E_IR_XFM_C8D8=2, ///ex: Mitsubushi, Konka format 497*53ee8cc1Swenshuai.xi E_IR_XFM_C4D8C4D8P=3, ///ex: RCA format 498*53ee8cc1Swenshuai.xi E_IR_XFM_C26D8D8P=4, ///ex: C26D8D8P 499*53ee8cc1Swenshuai.xi E_IR_XFM_C32D8D8P=5, ///ex: C32D8D8P 500*53ee8cc1Swenshuai.xi E_IR_XFM_C5D6C5D6P=6, ///ex: C5D6C5D6P 501*53ee8cc1Swenshuai.xi E_IR_XFM_C6D6C6D6P=7, ///ex: C6D6C6D6P 502*53ee8cc1Swenshuai.xi E_IR_XFM_D7C6=8, ///ex: Sony-D7C6 503*53ee8cc1Swenshuai.xi E_IR_XFM_D7C8=9, ///ex: Sony-D7C8 504*53ee8cc1Swenshuai.xi E_IR_XFM_D8C6=10, ///ex: Sony-D8C6 505*53ee8cc1Swenshuai.xi E_IR_XFM_D5_only=11, ///ex: MV500 506*53ee8cc1Swenshuai.xi E_IR_XFM_S1C4D6=12, ///ex: IRT1250 507*53ee8cc1Swenshuai.xi E_IR_XFM_C5D6D4=13, ///ex: LR3715M 508*53ee8cc1Swenshuai.xi E_IR_XFM_R1T1C3D6=14, ///ex: M3004 LAB1-Carrier 509*53ee8cc1Swenshuai.xi E_IR_XFM_RESERVED=15, ///Reserved 510*53ee8cc1Swenshuai.xi 511*53ee8cc1Swenshuai.xi } IR_ExtFormat; 512*53ee8cc1Swenshuai.xi 513*53ee8cc1Swenshuai.xi typedef enum 514*53ee8cc1Swenshuai.xi { 515*53ee8cc1Swenshuai.xi EN_IR_SHOT_P = 0x01, /// 2'b01: only pshot edge detect for counter 516*53ee8cc1Swenshuai.xi EN_IR_SHOT_N = 0x02, /// 2'b10: only nshot edge detect for counter 517*53ee8cc1Swenshuai.xi EN_IR_SHOT_PN = 0x03, /// 2'b11/2'b00: both pshot/nshot edge detect for counter 518*53ee8cc1Swenshuai.xi EN_IR_SHOT_INVLD, /// Invalid for value greater than 2'b11 519*53ee8cc1Swenshuai.xi 520*53ee8cc1Swenshuai.xi } IR_ShotSel; 521*53ee8cc1Swenshuai.xi 522*53ee8cc1Swenshuai.xi /// define IR key code time & bounds 523*53ee8cc1Swenshuai.xi typedef struct 524*53ee8cc1Swenshuai.xi { 525*53ee8cc1Swenshuai.xi MS_S16 s16Time; ///key code time 526*53ee8cc1Swenshuai.xi MS_S8 s8UpBnd; ///upper bound 527*53ee8cc1Swenshuai.xi MS_S8 s8LoBnd; ///low bound 528*53ee8cc1Swenshuai.xi } IR_TimeBndParam; 529*53ee8cc1Swenshuai.xi 530*53ee8cc1Swenshuai.xi /// define IR key code time tail 531*53ee8cc1Swenshuai.xi typedef struct 532*53ee8cc1Swenshuai.xi { 533*53ee8cc1Swenshuai.xi MS_U32 gu32KeyMin; /// Min Tail Time for key 534*53ee8cc1Swenshuai.xi MS_U32 gu32KeyMax; /// Max Tail Time for key 535*53ee8cc1Swenshuai.xi MS_U32 gu32RptMin; /// Min Tail Time for Rpt 536*53ee8cc1Swenshuai.xi MS_U32 gu32RptMax; /// Max Tail Time for Rpt 537*53ee8cc1Swenshuai.xi } IR_TimeTailParam; 538*53ee8cc1Swenshuai.xi 539*53ee8cc1Swenshuai.xi /// define IR time parameters 540*53ee8cc1Swenshuai.xi typedef struct 541*53ee8cc1Swenshuai.xi { 542*53ee8cc1Swenshuai.xi IR_TimeBndParam tHdr; /// header code time 543*53ee8cc1Swenshuai.xi IR_TimeBndParam tOff; /// off code time 544*53ee8cc1Swenshuai.xi IR_TimeBndParam tOffRpt; /// off code repeat time 545*53ee8cc1Swenshuai.xi IR_TimeBndParam tLg01Hg; /// logical 0/1 high time 546*53ee8cc1Swenshuai.xi IR_TimeBndParam tLg0; /// logical 0 time 547*53ee8cc1Swenshuai.xi IR_TimeBndParam tLg1; /// logical 1 time 548*53ee8cc1Swenshuai.xi IR_TimeBndParam tSepr; /// Separate time 549*53ee8cc1Swenshuai.xi MS_U32 u32TimeoutCyc; /// Timeout cycle count 550*53ee8cc1Swenshuai.xi MS_U16 u16RCBitTime; /// RC Bit Time 551*53ee8cc1Swenshuai.xi IR_TimeTailParam tTail; /// Tail Time for sw shot mode 552*53ee8cc1Swenshuai.xi } IR_TimeCfgParam; 553*53ee8cc1Swenshuai.xi 554*53ee8cc1Swenshuai.xi /// define IR configuration parameters 555*53ee8cc1Swenshuai.xi typedef struct 556*53ee8cc1Swenshuai.xi { 557*53ee8cc1Swenshuai.xi MS_U8 u8DecMode; /// IR mode selection 558*53ee8cc1Swenshuai.xi MS_U8 u8ExtFormat; /// IR extention format 559*53ee8cc1Swenshuai.xi MS_U8 u8Ctrl0; /// IR enable control 0 560*53ee8cc1Swenshuai.xi MS_U8 u8Ctrl1; /// IR enable control 1 561*53ee8cc1Swenshuai.xi MS_U8 u8Clk_mhz; /// IR required clock 562*53ee8cc1Swenshuai.xi MS_U8 u8HdrCode0; /// IR Header code 0 563*53ee8cc1Swenshuai.xi MS_U8 u8HdrCode1; /// IR Header code 1 564*53ee8cc1Swenshuai.xi MS_U8 u8CCodeBytes; /// Customer codes: 1 or 2 bytes 565*53ee8cc1Swenshuai.xi MS_U8 u8CodeBits; /// Code bits: 1~128 bits 566*53ee8cc1Swenshuai.xi MS_U8 u8KeySelect; /// IR select Nth key N(1~16) 567*53ee8cc1Swenshuai.xi MS_U16 u16GlhrmNum; /// Glitch Remove Number 568*53ee8cc1Swenshuai.xi IR_ShotSel enShotSel; /// Shot selection for SW decoder 569*53ee8cc1Swenshuai.xi MS_BOOL bInvertPolar; /// Invert the polarity for input IR signal 570*53ee8cc1Swenshuai.xi 571*53ee8cc1Swenshuai.xi } IR_InitCfgParam; 572*53ee8cc1Swenshuai.xi 573*53ee8cc1Swenshuai.xi /// define Ping-Pong Buffer structure for IR SW shot count 574*53ee8cc1Swenshuai.xi typedef struct 575*53ee8cc1Swenshuai.xi { 576*53ee8cc1Swenshuai.xi MS_U32 u32Buffer[IR_MAX_BUF_DPH][IR_MAX_BUF_LEN]; ///Ping-Pong Buffer 577*53ee8cc1Swenshuai.xi MS_U32 u32Length; ///Data Length for Read Index buffer 578*53ee8cc1Swenshuai.xi MS_U8 u8RdIdx; ///Read Index 579*53ee8cc1Swenshuai.xi MS_U8 u8WtIdx; ///Write Index 580*53ee8cc1Swenshuai.xi } IR_PulseShotInfo; 581*53ee8cc1Swenshuai.xi 582*53ee8cc1Swenshuai.xi /// define HeaderInfo for sw mode change headercode in apps 583*53ee8cc1Swenshuai.xi typedef struct 584*53ee8cc1Swenshuai.xi { 585*53ee8cc1Swenshuai.xi MS_U8 u8IRHeaderCode0; //IRHeaderCode0 586*53ee8cc1Swenshuai.xi MS_U8 u8IRHeaderCode1; //IRHeaderCode1 587*53ee8cc1Swenshuai.xi MS_U8 u8IR2HeaderCode0; //IR2HeaderCode0 588*53ee8cc1Swenshuai.xi MS_U8 u8IR2HeaderCode1; //IR2HeaderCode1 589*53ee8cc1Swenshuai.xi }MS_MultiIR_HeaderInfo; 590*53ee8cc1Swenshuai.xi 591*53ee8cc1Swenshuai.xi #define IR_IOC_MAGIC 'u' 592*53ee8cc1Swenshuai.xi #define MDRV_IR_INIT _IO(IR_IOC_MAGIC, 0) 593*53ee8cc1Swenshuai.xi #define MDRV_IR_SET_DELAYTIME _IOW(IR_IOC_MAGIC, 1, int) 594*53ee8cc1Swenshuai.xi #define MDRV_IR_GET_KEY _IOW(IR_IOC_MAGIC, 2, int) 595*53ee8cc1Swenshuai.xi #define MDRV_IR_GET_LASTKEYTIME _IOW(IR_IOC_MAGIC, 3, int) 596*53ee8cc1Swenshuai.xi #define MDRV_IR_PARSE_KEY _IOW(IR_IOC_MAGIC, 4, int) 597*53ee8cc1Swenshuai.xi #define MDRV_IR_TEST _IOW(IR_IOC_MAGIC, 5, int) 598*53ee8cc1Swenshuai.xi #define MDRV_IR_ENABLE_IR _IOW(IR_IOC_MAGIC, 6, int) 599*53ee8cc1Swenshuai.xi #define MDRV_IR_IS_FANTASY_PROTOCOL_SUPPORTED _IOR(IR_IOC_MAGIC, 7, int) 600*53ee8cc1Swenshuai.xi #define MDRV_IR_ENABLE_FANTASY_DATA_TRANSFER _IOW(IR_IOC_MAGIC, 8, int) 601*53ee8cc1Swenshuai.xi #define MDRV_IR_SET_MASTER_PID _IOW(IR_IOC_MAGIC, 9, int) 602*53ee8cc1Swenshuai.xi #define MDRV_IR_GET_MASTER_PID _IOW(IR_IOC_MAGIC, 10, int) 603*53ee8cc1Swenshuai.xi #define MDRV_IR_INITCFG _IOW(IR_IOC_MAGIC, 11, IR_InitCfgParam) 604*53ee8cc1Swenshuai.xi #define MDRV_IR_TIMECFG _IOW(IR_IOC_MAGIC, 12, IR_TimeCfgParam) 605*53ee8cc1Swenshuai.xi #define MDRV_IR_GET_SWSHOT_BUF _IOW(IR_IOC_MAGIC, 13, IR_PulseShotInfo) 606*53ee8cc1Swenshuai.xi #define MDRV_IR_SEND_KEY _IOW(IR_IOC_MAGIC, 14, int) 607*53ee8cc1Swenshuai.xi #define MDRV_IR_SET_HEADER _IOW(IR_IOC_MAGIC, 15, MS_MultiIR_HeaderInfo) 608*53ee8cc1Swenshuai.xi 609*53ee8cc1Swenshuai.xi #define IR_IOC_MAXNR 15 610*53ee8cc1Swenshuai.xi 611*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 612*53ee8cc1Swenshuai.xi /// Set IR enable function. 613*53ee8cc1Swenshuai.xi /// @ingroup G_IR_CONTROL 614*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable IR, FALSE: disable IR 615*53ee8cc1Swenshuai.xi /// @return E_IR_OK: Success 616*53ee8cc1Swenshuai.xi /// @return E_IR_FAIL or other values: Failure 617*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 618*53ee8cc1Swenshuai.xi void MDrv_IR_OpenDevice(void); 619*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 620*53ee8cc1Swenshuai.xi /// Set IR enable function. 621*53ee8cc1Swenshuai.xi /// @ingroup G_IR_CONTROL 622*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable IR, FALSE: disable IR 623*53ee8cc1Swenshuai.xi /// @return E_IR_OK: Success 624*53ee8cc1Swenshuai.xi /// @return E_IR_FAIL or other values: Failure 625*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 626*53ee8cc1Swenshuai.xi void MDrv_IR_InitCfg(IR_InitCfgParam* pInitCfg); 627*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 628*53ee8cc1Swenshuai.xi /// Set IR enable function. 629*53ee8cc1Swenshuai.xi /// @ingroup G_IR_CONTROL 630*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable IR, FALSE: disable IR 631*53ee8cc1Swenshuai.xi /// @return E_IR_OK: Success 632*53ee8cc1Swenshuai.xi /// @return E_IR_FAIL or other values: Failure 633*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 634*53ee8cc1Swenshuai.xi void MDrv_IR_TimeCfg(IR_TimeCfgParam* pTimeCfg); 635*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 636*53ee8cc1Swenshuai.xi /// Set IR enable function. 637*53ee8cc1Swenshuai.xi /// @ingroup G_IR_CONTROL 638*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable IR, FALSE: disable IR 639*53ee8cc1Swenshuai.xi /// @return E_IR_OK: Success 640*53ee8cc1Swenshuai.xi /// @return E_IR_FAIL or other values: Failure 641*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 642*53ee8cc1Swenshuai.xi void MDrv_IR_GetPulseShot(IR_PulseShotInfo* pPulseShotInfo); 643*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 644*53ee8cc1Swenshuai.xi /// Set IR enable function. 645*53ee8cc1Swenshuai.xi /// @ingroup G_IR_CONTROL 646*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable IR, FALSE: disable IR 647*53ee8cc1Swenshuai.xi /// @return E_IR_OK: Success 648*53ee8cc1Swenshuai.xi /// @return E_IR_FAIL or other values: Failure 649*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 650*53ee8cc1Swenshuai.xi void MDrv_IR_SetMultiHeaderCode(MS_MultiIR_HeaderInfo* pMultiHeaderCode); 651*53ee8cc1Swenshuai.xi 652*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------- 653*53ee8cc1Swenshuai.xi // Utopia2.0 will call this function to register IR module 654*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------- 655*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 656*53ee8cc1Swenshuai.xi /// Set IR debug function. 657*53ee8cc1Swenshuai.xi /// @ingroup G_IR_ToBeRemove 658*53ee8cc1Swenshuai.xi /// @param eLevel \b IN: E_IR_DBGLVL_NONE/E_IR_DBGLVL_WARNING/E_IR_DBGLVL_ERROR/E_IR_DBGLVL_INFO/E_IR_DBGLVL_ALL 659*53ee8cc1Swenshuai.xi /// @return E_IR_OK: Success 660*53ee8cc1Swenshuai.xi /// @return E_IR_FAIL or other values: Failure 661*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 662*53ee8cc1Swenshuai.xi void IRRegisterToUtopia(FUtopiaOpen ModuleType); 663*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 664*53ee8cc1Swenshuai.xi /// Set IR debug function. 665*53ee8cc1Swenshuai.xi /// @ingroup G_IR_ToBeRemove 666*53ee8cc1Swenshuai.xi /// @param eLevel \b IN: E_IR_DBGLVL_NONE/E_IR_DBGLVL_WARNING/E_IR_DBGLVL_ERROR/E_IR_DBGLVL_INFO/E_IR_DBGLVL_ALL 667*53ee8cc1Swenshuai.xi /// @return E_IR_OK: Success 668*53ee8cc1Swenshuai.xi /// @return E_IR_FAIL or other values: Failure 669*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 670*53ee8cc1Swenshuai.xi MS_U32 IROpen(void** pInstance, MS_U32 u32ModuleVersion, void* pAttribute); 671*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 672*53ee8cc1Swenshuai.xi /// Set IR debug function. 673*53ee8cc1Swenshuai.xi /// @ingroup G_IR_ToBeRemove 674*53ee8cc1Swenshuai.xi /// @param eLevel \b IN: E_IR_DBGLVL_NONE/E_IR_DBGLVL_WARNING/E_IR_DBGLVL_ERROR/E_IR_DBGLVL_INFO/E_IR_DBGLVL_ALL 675*53ee8cc1Swenshuai.xi /// @return E_IR_OK: Success 676*53ee8cc1Swenshuai.xi /// @return E_IR_FAIL or other values: Failure 677*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 678*53ee8cc1Swenshuai.xi MS_U32 IRClose(void* pInstance); 679*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 680*53ee8cc1Swenshuai.xi /// Set IR debug function. 681*53ee8cc1Swenshuai.xi /// @ingroup G_IR_ToBeRemove 682*53ee8cc1Swenshuai.xi /// @param eLevel \b IN: E_IR_DBGLVL_NONE/E_IR_DBGLVL_WARNING/E_IR_DBGLVL_ERROR/E_IR_DBGLVL_INFO/E_IR_DBGLVL_ALL 683*53ee8cc1Swenshuai.xi /// @return E_IR_OK: Success 684*53ee8cc1Swenshuai.xi /// @return E_IR_FAIL or other values: Failure 685*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 686*53ee8cc1Swenshuai.xi MS_U32 IRIoctl(void* pInstance, MS_U32 u32Cmd, void *pArgs); 687*53ee8cc1Swenshuai.xi 688*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 689*53ee8cc1Swenshuai.xi /// Set IR debug function. 690*53ee8cc1Swenshuai.xi /// @ingroup G_IR_ToBeRemove 691*53ee8cc1Swenshuai.xi /// @param eLevel \b IN: E_IR_DBGLVL_NONE/E_IR_DBGLVL_WARNING/E_IR_DBGLVL_ERROR/E_IR_DBGLVL_INFO/E_IR_DBGLVL_ALL 692*53ee8cc1Swenshuai.xi /// @return E_IR_OK: Success 693*53ee8cc1Swenshuai.xi /// @return E_IR_FAIL or other values: Failure 694*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 695*53ee8cc1Swenshuai.xi MS_U32 MDrv_IR_SetPowerState(EN_POWER_MODE u16PowerState); 696*53ee8cc1Swenshuai.xi 697*53ee8cc1Swenshuai.xi 698*53ee8cc1Swenshuai.xi //IR_Private 699*53ee8cc1Swenshuai.xi typedef struct _IR_RESOURCE_PRIVATE 700*53ee8cc1Swenshuai.xi { 701*53ee8cc1Swenshuai.xi MS_U32 Dummy; 702*53ee8cc1Swenshuai.xi }IR_RESOURCE_PRIVATE; 703*53ee8cc1Swenshuai.xi 704*53ee8cc1Swenshuai.xi typedef struct _IR_INSTANT_PRIVATE 705*53ee8cc1Swenshuai.xi { 706*53ee8cc1Swenshuai.xi 707*53ee8cc1Swenshuai.xi }IR_INSTANT_PRIVATE; 708*53ee8cc1Swenshuai.xi 709*53ee8cc1Swenshuai.xi 710*53ee8cc1Swenshuai.xi #endif 711*53ee8cc1Swenshuai.xi 712*53ee8cc1Swenshuai.xi #ifdef __cplusplus 713*53ee8cc1Swenshuai.xi } 714*53ee8cc1Swenshuai.xi #endif 715*53ee8cc1Swenshuai.xi 716*53ee8cc1Swenshuai.xi 717*53ee8cc1Swenshuai.xi #endif // _DRV_IR_H_ 718*53ee8cc1Swenshuai.xi 719