/*=============================================
  * Copyright (c)      Realtek Semiconductor Corporation, 2005
  * All rights reserved.
  * ============================================ */

/*================= File Description ================= */
/**
 * @file
 * 	This file is for global structure's declaration.
 *
 * @author 	$Author: leo_liu $
 * @date 	$Date: 2006-06-26 17:17:25 +0800 (星期一, 26 六月 2006) $
 * @version 	$Revision: 1055 $
 * @ingroup 	input
 */

/**
* @addtogroup input
* @{
*/

#ifndef  _IR_H
#define  _IR_H
/*================ Module dependency  =============== */

/*===================== Module Dependency  ================== */

/*========================== Types ========================== */

/*======================== Definitions ====================== */
//--------------------------------------------------
// Definitions of IR Key
//--------------------------------------------------
#if _REMOTE_CONTROL	==	_PANASONIC_TYPE
#define CUSTOM_CODE     	0x40040100//0x00FF

#define IR_MENU_KEY     	0xB0//0x0b
#define IR_RIGHT_KEY    	0xF2//0x13
#define IR_LEFT_KEY     	0x72//0x05
#define IR_UP_KEY       	0x52//0x01
#define IR_DOWN_KEY   		0xD2//0x02
#define IR_POWER_KEY    	0xBC//0x42
#define IR_FUNC_SLEEP 		0xF0//0x12
#define IR_FUNC_MTS			0xCC//0x40
#define IR_FUNC_SOURCE  	0xA0//0x41
#define IR_FUNC_DISP    	0x9C//0x37
#define IR_FUNC_JUMP    	0x00
#define IR_FUNC_CHDEC   	0xAC//0x87
#define IR_FUNC_CHINC   	0x2C//0xa7
#define IR_FUNC_VOLINC  	0x04//0x27
#define IR_FUNC_VOLDEC  	0x84//0x07
#define IR_FUNC_SELECT  	0x97
#define IR_FUNC_ENTER   	0x17
#define IR_FUNC_MUTE    	0x4C//0x08
#define IR_FUNC_EXIT   		0x26//0x0D
#define IR_FUNC_EDIT		0x1a
#define IR_FUNC_DISPLAY		0x0e
#define IR_FUNC_NUM0    	0x98//0x0f
#define IR_FUNC_NUM1    	0x08//0x1b
#define IR_FUNC_NUM2    	0x88//0x15
#define IR_FUNC_NUM3    	0x48//0x11
#define IR_FUNC_NUM4    	0xC8//0x16
#define IR_FUNC_NUM5    	0x28//0x19
#define IR_FUNC_NUM6    	0xA8//0x17
#define IR_FUNC_NUM7    	0x68//0x1f
#define IR_FUNC_NUM8    	0xE8//0x1e
#define IR_FUNC_NUM9    	0x18//0x1d
#define IR_FUNC_NUM100		0x39//0x09
#define IR_FUNC_VERSION		0x0c
#define IR_FUNC_TELETEXT	0x07

#define IR_HeaderLow    	0x01
#define IR_HeaderHigh     	0x02
#define IR_Command        	0x03
#define IR_Detect           0x04
#elif _REMOTE_CONTROL	==	_SONY_TYPE
#define IR_POWER_KEY    	0x15
#define IR_FUNC_MUTE    	0x14

#define IR_FUNC_NUM0    	0x09
#define IR_FUNC_NUM1    	0x00
#define IR_FUNC_NUM2    	0x01
#define IR_FUNC_NUM3    	0x02
#define IR_FUNC_NUM4    	0x03
#define IR_FUNC_NUM5    	0x04
#define IR_FUNC_NUM6    	0x05
#define IR_FUNC_NUM7    	0x06
#define IR_FUNC_NUM8    	0x07
#define IR_FUNC_NUM9    	0x08
#define IR_FUNC_NUM100		0x5c
#define IR_FUNC_RETURN		0x3b

#define IR_MENU_KEY     	0x60
#define IR_FUNC_CC			0x42

#define IR_RIGHT_KEY    	0x12
#define IR_LEFT_KEY     	0x13
#define IR_UP_KEY       	0x10
#define IR_DOWN_KEY   		0x11

#define IR_FUNC_MTS			0x17
#define IR_FUNC_PIC			0x64
#define IR_FUNC_SLEEP 		0x36
#define IR_FUNC_SOURCE  	0x25

#define IR_FUNC_ADD			0x41
#define IR_FUNC_DEL			0x40
#define IR_FUNC_FAVORITE	0x39
#define IR_FUNC_INFORMATION	0x3a

#define IR_FUNC_DISP    	0x67 	//	don't use in Sony mode
#define IR_FUNC_JUMP    	0x59	//	don't use in Sony mode
#define IR_FUNC_SELECT  	0x97	//	don't use in Sony mode
#define IR_FUNC_ENTER   	0x57	//	don't use in Sony mode
#define IR_FUNC_EXIT   		0x5D	//	don't use in Sony mode
#define IR_FUNC_EDIT		0x1a	//	don't use in Sony mode
#define IR_FUNC_DISPLAY		0x5e	//	don't use in Sony mode
#define IR_FUNC_VERSION		0x6c	//	don't use in Sony mode
#define IR_FUNC_TELETEXT	0x77	//	don't use in Sony mode

#define IR_HeaderLow    	0x01
#define IR_HeaderHigh     	0x02
#define IR_Command        	0x03
#define IR_Detect           0x04

#elif _REMOTE_CONTROL ==  _PHILIPS_RC5_TYPE
#define CUSTOM_CODE     	0x05

#define IR_MENU_KEY     	0x27
#define IR_RIGHT_KEY    	0x28
#define IR_LEFT_KEY     	0x26
#define IR_UP_KEY       	0x25
#define IR_DOWN_KEY   		0x29

#define IR_POWER_KEY    	0x02
#define IR_FUNC_SLEEP 		0x03
#define IR_FUNC_MTS			0x17
#define IR_FUNC_SOURCE  	0x1C
#define IR_FUNC_DISP    	0x16

#define IR_FUNC_NUM0    	0x11
#define IR_FUNC_NUM1    	0x07
#define IR_FUNC_NUM2    	0x08
#define IR_FUNC_NUM3    	0x09
#define IR_FUNC_NUM4    	0x0A
#define IR_FUNC_NUM5    	0x0B
#define IR_FUNC_NUM6    	0x0C
#define IR_FUNC_NUM7    	0x0D
#define IR_FUNC_NUM8    	0x0E
#define IR_FUNC_NUM9    	0x0F
#define IR_FUNC_NUM100		0x10
#define IR_FUNC_MUTE    	0x18
//
#define IR_FUNC_RETURN		0x12
#define IR_FUNC_CC			0x13
#define IR_FUNC_VC			0x14
#define IR_FUNC_PARENTAL	0x15
#define IR_FUNC_VMODE		0x19
#define IR_FUNC_SRC_AV		0x04
#define IR_FUNC_SRC_PC		0x05
#define IR_FUNC_SRC_TV		0x06
#define IR_FUNC_SRC_YPBPR	0x1A
#define IR_FUNC_SRC_SV		0x1B
//
#define IR_FUNC_JUMP    	0x80	//	don't use in RC-5 mode
#define IR_FUNC_CHDEC   	0x81	//	don't use in RC-5 mode
#define IR_FUNC_CHINC   	0x82	//	don't use in RC-5 mode
#define IR_FUNC_VOLINC  	0x83	//	don't use in RC-5 mode
#define IR_FUNC_VOLDEC  	0x84	//	don't use in RC-5 mode
#define IR_FUNC_SELECT  	0x85	//	don't use in RC-5 mode
#define IR_FUNC_ENTER   	0x86	//	don't use in RC-5 mode
#define IR_FUNC_EXIT   		0x87	//	don't use in RC-5 mode
#define IR_FUNC_EDIT		0x88	//	don't use in RC-5 mode
#define IR_FUNC_DISPLAY		0x89	//	don't use in RC-5 mode
#define IR_FUNC_VERSION		0x8A	//	don't use in RC-5 mode
#define IR_FUNC_TELETEXT	0x8B	//	don't use in RC-5 mode

#define IR_HeaderLow    	0x01
#define IR_HeaderHigh     	0x02
#define IR_Command        	0x03
#define IR_Detect           0x04
#define IR_Wait4Cmd         0x05
#else
#define CUSTOM_CODE     	0x00FF

#define IR_MENU_KEY     	0x0b
#define IR_RIGHT_KEY    	0x13
#define IR_LEFT_KEY     	0x05
#define IR_UP_KEY       	0x01
#define IR_DOWN_KEY   		0x02
#define IR_POWER_KEY    	0x42
#define IR_FUNC_SLEEP 		0x12
#define IR_FUNC_MTS			0x40
#define IR_FUNC_SOURCE  	0x41
#define IR_FUNC_DISP    	0x37
#define IR_FUNC_JUMP    	0x00
#define IR_FUNC_CHDEC   	0x87
#define IR_FUNC_CHINC   	0xa7
#define IR_FUNC_VOLINC  	0x27
#define IR_FUNC_VOLDEC  	0x07
#define IR_FUNC_SELECT  	0x97
#define IR_FUNC_ENTER   	0x17
#define IR_FUNC_MUTE    	0x08
#define IR_FUNC_EXIT   		0x0D
#define IR_FUNC_EDIT		0x1a
#define IR_FUNC_DISPLAY		0x0e
#define IR_FUNC_NUM0    	0x0f
#define IR_FUNC_NUM1    	0x1b
#define IR_FUNC_NUM2    	0x15
#define IR_FUNC_NUM3    	0x11
#define IR_FUNC_NUM4    	0x16
#define IR_FUNC_NUM5    	0x19
#define IR_FUNC_NUM6    	0x17
#define IR_FUNC_NUM7    	0x1f
#define IR_FUNC_NUM8    	0x1e
#define IR_FUNC_NUM9    	0x1d
#define IR_FUNC_NUM100		0x09
#define IR_FUNC_VERSION		0x0c
#define IR_FUNC_TELETEXT	0x07

//leo 20060626
#if(_SHOW_CC_MODE == _ENABLE)
#define IR_FUNC_CC			0x06
#endif

#define IR_FUNC_YPBPR_AUTO_COLOR 0x43

#define IR_HeaderLow    	0x01
#define IR_HeaderHigh     	0x02
#define IR_Command        	0x03
#define IR_Detect           0x04
#endif

/*=====================  Extern Variables =================== */

//--------------------------------------------------
// Global Variables
//--------------------------------------------------
#ifdef _IR_C
    #define EXTERN
#else
    #define EXTERN   extern
#endif


EXTERN BYTE xdata ucTimerCnt;

//EXTERN BYTE xdata tem[6];
//EXTERN BYTE xdata pre_tem[6];
//EXTERN BYTE xdata tem[4];
//EXTERN BYTE xdata pre_tem[4];
EXTERN BYTE idata lowCount,highCount,IrBit,IrByte,BitStart,ByteStart,IrHandlerEnable,repeatIntervalTooLong,repeatIntervalCount,repeatIntervalCountLow,repeatCounter,IrStatus,now_bIR_GPIO;
EXTERN BYTE xdata pre_bIR_GPIO;

#undef EXTERN

/*======================= Extern Functions ================== */
BYTE CIRKeyScan(void);
void CIrHandler(void);
void CIrHeaderLow(void);
void CIrHeaderHigh(void);
void CIrCommand(void);
void CIrDetect(void);
void CIrReset(void);
#endif // #ifndef _IR_H

/**
 *
 * @}
 */

