/*===========================================================
 * Copyright (c)      Realtek Semiconductor Corporation, 2005
 * All rights reserved.
 * ========================================================== */

/*==================== File Description ===================== */
/**
 * @file
 * 	This file is a osd message definition file.
 *
 * @author 	$Author: leo_liu $
 * @date 	$Date: 2006-05-23 18:20:08 +0800 (?Ÿæ?äº? 23 äº”æ? 2006) $
 * @version	$Revision: 817 $
 */

/**
 * @addtogroup osd
 * @{
 */

#ifndef _OSDMESSAGE_H
#define _OSDMESSAGE_H
/*===================== Module Dependency  ================== */
#include "Core\Header\Maindef.h"
#include "Core\Header\Global.h"

/*========================== Types ========================== */

/*======================== Definitions ====================== */
//--------------------------------------------------
// Macro of OsdMessage Scan Ready Flag
//--------------------------------------------------
#define GET_OSDMESSAGESCANREADY()  		((BIT)(ucOsdMessageControl & _BIT0))
#define SET_OSDMESSAGESCANREADY()  		(ucOsdMessageControl |= _BIT0)
#define CLR_OSDMESSAGESCANREADY()  		(ucOsdMessageControl &= ~_BIT0)

#define GET_POWERSTANDBYMODE()			((ucOsdMessageControl & _BIT1))
#define SET_POWERSTANDBYMODE()			(ucOsdMessageControl |= _BIT1)
#define CLR_POWERSTANDBYMODE()			(ucOsdMessageControl &= ~_BIT1)

#define GET_OSDMESSAGE_REMAINDER()		((ucOsdMessageControl & _BIT2))
#define SET_OSDMESSAGE_REMAINDER()		(ucOsdMessageControl |= _BIT2)
#define CLR_OSDMESSAGE_REMAINDER()		(ucOsdMessageControl &= ~_BIT2)

#define GET_DONT_ENABLE_OSD_WHEN_CHANGE_SRC()	((ucOsdMessageControl & _BIT3))
#define SET_DONT_ENABLE_OSD_WHEN_CHANGE_SRC()		(ucOsdMessageControl |= _BIT3)
#define CLR_DONT_ENABLE_OSD_WHEN_CHANGE_SRC()		(ucOsdMessageControl &= ~_BIT3)

#define GET_OSD_CHANGE_SOURCE()	((ucOsdMessageControl & _BIT4))
#define SET_OSD_CHANGE_SOURCE()		(ucOsdMessageControl |= _BIT4)
#define CLR_OSD_CHANGE_SOURCE()		(ucOsdMessageControl &= ~_BIT4)

//--------------------------------------------------
// Definitions of Key Message
//--------------------------------------------------
typedef enum
{
	_NONE_KEY_MESSAGE = 0,
	_CLOSE_OSD_MESSAGE,
	_POWER_STANDBY_ON_MESSAGE,		// For Two-State Power key
	_POWER_STANDBY_OFF_MESSAGE,	// For Two-State Power key
	_SHOW_BOOT_MESSAGE,
	_SHOW_NOSIGNAL_MESSAGE,
	_SHOW_NOCABLE_MESSAGE,
	_SHOW_NOSUPPORT_MESSAGE,
	_SHOW_SIGNALSOURCE_MESSAGE,
	_SHOW_TVCHANNEL_MESSAGE,
	
	_SHOW_VOLIME_MESSAGE,	// 10
	_SHOW_MAINMENU_MESSAGE,
	_SAVE_EE_MODEUSERDATA_MESSAGE,
	_SAVE_EE_SYSTEMDATA_MESSAGE,
	_SAVE_EE_OSDUSERDATA_MESSAGE,
	_SAVE_EE_ADCDATA_MESSAGE,
	_SAVE_EE_COLORPROC0_MESSAGE,
	_SAVE_EE_COLORPROC1_MESSAGE,
	_ENTER_FACTORY_MODE_MESSAGE,
	_CHANGE_SOURCE_MESSAGE,
	
	_SAVE_EE_TVDATA_MESSAGE,		// 20
	_DO_AUTO_CONFIG_MESSAGE,
	_REPEAT_KEY_MESSAGE,
	_POWER_KEY_MESSAGE,
	_MENU_KEY_MESSAGE,
	_RIGHT_KEY_MESSAGE,
	_LEFT_KEY_MESSAGE,
	_UP_KEY_MESSAGE,
	_DOWN_KEY_MESSAGE,
	_SOURCE_KEY_MESSAGE,
	
	_DISPLAY_KEY_MESSAGE,			// 30
	_CHANNEL_DEC_MESSAGE,
	_CHANNEL_INC_MESSAGE,
	_VOLUME_DEC_MESSAGE,
	_VOLUME_INC_MESSAGE,
	_MTS_KEY_MESSAGE,
	_SLEEP_KEY_MESSAGE,	
	_CHANNEL_EDIT_MESSAGE,
	_RETURN_KEY_MESSAGE,
	_MUTE_KEY_MESSAGE,
	
	_EXIT_KEY_MESSAGE,			// 40
	_0_KEY_MESSAGE,
	_1_KEY_MESSAGE,
	_2_KEY_MESSAGE,
	_3_KEY_MESSAGE,
	_4_KEY_MESSAGE,
	_5_KEY_MESSAGE,
	_6_KEY_MESSAGE,
	_7_KEY_MESSAGE,
	_8_KEY_MESSAGE,
	
	_9_KEY_MESSAGE,				//50
	_100_KEY_MESSAGE,
	_VERSION_KEY_MESSAGE,
	_TELETEXT_KEY_MESSAGE,
	_ENTER_RESET_MESSAGE,
	_VCHIP_SHOW_MESSAGE,
	_CC_KEY_MESSAGE,
	_YPBPR_AUTO_COLOR_MESSAGE,	
	_RTD2662_ISP_MESSAGE,
	
	_LCDONOFF_KEY_MESSAGE,		//add 20090914
	_AUTOSEARCH_KEY_MESSAGE,	//add 20091112
	_TV_AUDIO_SYSTEM_KEY_MESSAGE,			//add by lbh 20091016
	_INVALID_KEY_MESSAGE,			//add 20090916
	
#if (1)
	//,_OK_KEY_MESSAGE,
	_ENTER_KEY_MESSAGE,
	
	_RED_KEY_MESSAGE,				//60
	_GREEN_KEY_MESSAGE,
	_BLUE_KEY_MESSAGE,
	_YELLOW_KEY_MESSAGE,
	_EPG_KEY_MESSAGE,
	_FAV_CH_KEY_MESSAGE,
	_WIDE_KEY_MESSAGE,
	_FREEZE_KEY_MESSAGE,
	_CARD_KEY_MESSAGE,
	_MULTI_CH_KEY_MESSAGE,

#endif	
	_OK_KEY_MESSAGE,				//70		
	_DisplayRatio_KEY_MESSAGE,
#if 0//(_REMOTE_CONTROLLER==_TYPE_PREMIER)
	_PictureMode_KEY_MESSAGE,	         
	_SoundMode_KEY_MESSAGE,
#endif	
	_PICT_MODE_KEY_MESSAGE,
	//czl 071123
	#if _AUDIO_EFFECT_SUPPORT
	_SOUND_MODE_KEY_MESSAGE,
	#endif
	_SHOWINFO_MESSAGE,			//75
	_SHOW_MUTE_IDLE_MESSAGE,
	_SHOW_SLEEP_TIMEOVER_HINT_MESSAGE,
	_SHOW_SLEEP_TIMEOVER_HINT_REMINDTIME_MESSAGE,
	_SHOW_DEMO_MODE_HINT_MESSAGE,
	_SHOW_TIMESTOP_TIMEOVER_HINT_MESSAGE,
	_SHOW_TIMESTOP_TIMEOVER_HINT_REMINDTIME_MESSAGE,
	_SHOW_ICONMOVE_MESSAGE,	

#if _HPC_OTHER_IR_FUCTION_ENABLE
       _PC_KEY_MESSAGE,
       _TV_AV_KEY_MESSAGE,


#endif
	_SHOW_TIMEREMIND_MESSAGE,


	_BRIGHTNESS_KEY_MESSAGE,
	_CONTRAST_KEY_MESSAGE,
	_COLOR_KEY_MESSAGE,

	_PC_AUTO_COLOR,
	_PC_AUTO_IMAGE,

       _TV_KEY_MESSAGE,
       _AV_KEY_MESSAGE,
       _SV_KEY_MESSAGE,
       
	_SETUP_KEY_MESSAGE,	//add 20091028
	_PAUSE_KEY_MESSAGE,
	_STOP_KEY_MESSAGE,
	_SKIPUP_KEY_MESSAGE,
	_SKIPDOWN_KEY_MESSAGE,
} OsdMessageType;

#define _MESSAGE_QUEUE_SIZE 5
/*=====================  Extern Variables =================== */
#ifdef _OSDMESSAGE_C
    #define EXTERN
#else
    #define EXTERN   extern
#endif

EXTERN UINT8 xdata ucOsdMessage;
EXTERN UINT8 xdata ucOsdPreMessage;
EXTERN UINT8 xdata ucOsdMessageControl;
EXTERN UINT8 xdata ucOsdMsgQueue[_MESSAGE_QUEUE_SIZE];
EXTERN UINT8 xdata ucRepeatKeyCount;
EXTERN UINT8 xdata ucKeyPadMessage;		// for KEY Pad used.

EXTERN UINT16 idata usItemStart;

#undef EXTERN


/*======================= Extern Functions ================== */
void COsdMessageHandler(void);
void COsdMessageInitial(void);
//void COsdMessageSend(UINT8 message);
void COsdMessagePush(UINT8 message);
UINT8 COsdMessagePop(void);

#endif //#ifndef _OSDMESSAGE_H

