/*===========================================================
 * Copyright (c)      Realtek Semiconductor Corporation, 2005
 * All rights reserved.
 * ========================================================== */

/*==================== File Description ===================== */
/**
 * @file
 * 	This file is osd event handler implement file for osd related functions.
 *
 * @author 	$Author: hillwang $
 * @date 	$Date: 2006-08-03 21:05:57 +0800 (?Ÿæ??? 03 ?«æ? 2006) $
 * @version $Revision: 1150 $
 */

/**
 * @addtogroup osd
 * @{
 */

#define _OSDEVENT_C

/*===================== Module dependency  ================== */
#include "Core\Header\Include.h"

bit bExitEvent = 0;	//exit message by exit event cause osd closed immediately

/*======================= Private Types ===================== */

/*======================== Definitions ====================== */

/*========================== Variables ====================== */

/*=================== Local Functions Phototype ==============*/

/*=========================== Functions ===================== */

/**
	This function is for internal message to notify closing OSD.
*/
void COsdFxExitEvent(void)
{
	if(GET_FACTORYSTATUS() && (ucOsdisAutoMenu==0))
	{
		// keep osd
		//NOT auto function return, and factory status
		return; 
	}
	
	if (ucOsdState != _MUTE_STATE)
		COsdMessagePush(_EXIT_KEY_MESSAGE);

	//20070406
	bExitEvent = 1;
}

/**
	This function is for internal message to show no-signal OSD.
*/
void COsdNoSignalEvent(void)
{
	COsdMessagePush(_SHOW_NOSIGNAL_MESSAGE);
	
}

void COsdChannelEditExit(void)
{
	BYTE resualt=1;

	BYTE ucHyperlinkInput;

	//20080418, update start...
#if (_TV_SEL_CH_M3)
	ucHyperlinkInput = TempTvNumbers;//GET_TV_HYPERLINK_CHANNEL();
#else	//#if (_TV_SEL_CH_M3)
	ucHyperlinkInput = GET_TV_HYPERLINK_CHANNEL();
#endif	//#if (_TV_SEL_CH_M3)
	//czl 20080418, update end...

	if (ucHyperlinkInput<_FIRST_CHANNEL)
		 goto break1;
		//ucHyperlinkInput = _FIRST_CHANNEL;
	else if (ucHyperlinkInput>=GET_TV_MAX_CH())
		ucHyperlinkInput = GET_TV_MAX_CH()-1; 			

	if (1)//((GET_TV_HYPERLINK_CHANNEL()<= GET_TV_MAX_CH())&&(GET_TV_HYPERLINK_CHANNEL() >= _FIRST_CHANNEL))
	{
		COsdFxDisableOsd();

		if (ucHyperlinkInput != stTvInfo.CurChn)
		{
			SET_MUTE_PROCESS(_ENABLE);	//add 20091212
			CTimerDelayXms(1000);
			stTvInfo.PreChn=stTvInfo.CurChn;
			stTvInfo.CurChn = ucHyperlinkInput;
			CEepromSaveTvData();
#if 1//(_KEY_UPDOWN_TO_TV_SUPPORT)
			//if current input source is not tv, change to tv immediately while UP/DOWN key is pressed.
			if (GET_INPUTPORT_TYPE(stSystemData.InputSource)!=_VIDEO_TV_PORT)
			{
				CLR_TV_HYPERLINK_DATA();
				CLR_TV_HYPERLINK_INPUTBIT();
				CTimerCancelTimerEvent(COsdFxExitEvent);
				//!!! according to _INPUT_PORT_MAX !!!
				//COsdChangeSourceToSpecified(7);
				for (pData[0]=0; pData[0]<_INPUT_PORT_MAX; pData[0]++)
				{
					if (GET_INPUTPORT_TYPE(pData[0])==_VIDEO_TV_PORT)
					{
						COsdChangeSourceToSpecified(pData[0]);
						break;
					}						
				}
				
			}
#endif

			//resualt = CTvSetSpecifiedChannel( stTvInfo.CurChn);
			CTvTunerChangeChannel();
		}

			//if (resualt)
			//	COsdCoreShowTVChannel(stTvInfo.CurChn, 1);
		
		COsdFxShowSource();
	}
	else
	{
	}

  break1:
	CTimerActiveTimerEvent(SEC(2), COsdFxExitEvent);
	//COsdFxDisableOsd();
	
	CLR_TV_HYPERLINK_DATA();
	CLR_TV_HYPERLINK_INPUTBIT();
	//CLR_TV_HYPERLINK_LEN();
	//20071226, JPE add, review??
	COsdCoreSetState(_IDLE_STATE);

}


void COsdReckonTimeEvent(void)
{
/*
	static UINT8 xdata ucSleepTimeSec = 60;

	if(!(--ucSleepTimeSec)) {
		ucSleepTimeSec = 60;
		if(!(--ucSleepTimeMin)) {
			//ucSleepTimeMin = 60;
			//if(!(--ucSleepModeTimes)) {
			SET_POWERSWITCH();
			return;
			//}
		}
	}
	CTimerReactiveTimerEvent(SEC(1), COsdReckonTimeEvent);
*/	
#if 0//_TIMER_SLEEP_HINT_SUPPORT == 0
	if ( ucSleepCountDown==0 ){
		SET_POWERSWITCH();
		return;
	}
	CTimerReactiveTimerEvent(SEC(1), COsdReckonTimeEvent);
#else	//#if _TIMER_SLEEP_HINT_SUPPORT == 0

	if(!(--ucSleepTimeSecCnt)) {
		if (ucOsdState==_SHOW_SLEEP_TIMEOVER_HINT_STATE)
		{
			COsdMessagePush(_SHOW_SLEEP_TIMEOVER_HINT_REMINDTIME_MESSAGE);
		}
		
		ucSleepTimeSecCnt = 60;
		if(!(--ucSleepTimeMin)) {
			SET_POWERSWITCH();
			return;
		}
	}
	//start to show

	//compare with time stop
	if (ucSleepTimeMin>=usTimeStopAndSystemDiffer && bTimeoverHintRequest==1)
		return;
	//bTimeoverHintOsdState ==0 : 
	//	means not showing time stop hint
	//ucSleepTimeMin<=_TIMER_SLEEP_HINT_START: 
	//	means time to show sleep time hint
	//ucOsdState!=_SHOW_SLEEP_TIMEOVER_HINT_STATE:
	//	means start to show
	if (bTimeoverHintOsdState ==0&&ucSleepTimeMin<=_TIMER_SLEEP_HINT_START&&ucOsdState!=_SHOW_SLEEP_TIMEOVER_HINT_STATE)	//XX min to show time message
		if (ucVideoProcessState==_ACTIVE_STATE||ucSyncProcessState==_ACTIVE_STATE)
			COsdMessagePush(_SHOW_SLEEP_TIMEOVER_HINT_MESSAGE);
	//update time as XX:SS
	if (bTimeoverHintOsdState ==0&&ucOsdState==_SHOW_SLEEP_TIMEOVER_HINT_STATE)
		COsdMessagePush(_SHOW_SLEEP_TIMEOVER_HINT_REMINDTIME_MESSAGE);
	
	ucSleepTimeSec = ucSleepTimeSecCnt;
	CTimerReactiveTimerEvent(SEC(1), COsdReckonTimeEvent);
#endif	//#if _TIMER_SLEEP_HINT_SUPPORT == 0

}

#if _TIMER_PAGE_SUPPORT
void COsdReckonTimerPowerOnEvent(void)
{
#if _NEW_TIME_POWERON_TYPE	
	if ((stTimeData.ucTimeMinStart == ucMinSystem) && (stTimeData.ucTimeHourStart== ucHourSystem))
	{
		CTimerCancelTimerEvent(COsdReckonTimerPowerOnEvent);		
		if (!GET_POWERSTATUS())
		{
			SET_POWERSWITCH();
		}
		return;		
	}		
	CTimerReactiveTimerEvent(SEC(1), COsdReckonTimerPowerOnEvent);
#else
	if (++ucTimerPowerOnMinTickCnt>=60)
	{
		ucTimerPowerOnMinTickCnt = 0;
		if (stTimeData.ucTimeHourStart != 0 || stTimeData.ucTimeMinStart != 0)
		{
			if (stTimeData.ucTimeMinStart!=0)
			{
				stTimeData.ucTimeMinStart--;
				if (stTimeData.ucTimeMinStart == 0 && stTimeData.ucTimeHourStart == 0)
				{
					CTimerCancelTimerEvent(COsdReckonTimerPowerOnEvent);
					if (!GET_POWERSTATUS())
					{
						SET_POWERSWITCH();
					}
					return;
				}
				else if (stTimeData.ucTimeMinStart == 0)
				{
					stTimeData.ucTimeHourStart--;
					stTimeData.ucTimeMinStart = 59;
				}				
			}
			else
			{
				stTimeData.ucTimeHourStart--;
				stTimeData.ucTimeMinStart = 59;
			}
		}
	}
	CTimerReactiveTimerEvent(SEC(1), COsdReckonTimerPowerOnEvent);
#endif
}
void COsdReckonTimerPowerOffEvent(void)
{
#if _NEW_TIME_POWEROFF_TYPE			
	if (stTimeData.ucTimeMinStop == ucMinSystem && stTimeData.ucTimeHourStop == ucHourSystem)
	{
		CTimerCancelTimerEvent(COsdReckonTimerPowerOffEvent);
		if (GET_POWERSTATUS())
		{
			SET_POWERSWITCH();
			COsdFxDisableOsd();
			COsdCoreInitialze();
			COsdMessageInitial();
			ucSleepType = 0;  // set Sleep mode disable
			CTimerCancelTimerEvent(COsdReckonTimeEvent);
			CTimerCancelTimerEvent(COsdReckonTimerPowerOffEvent);
			return;
		}
	}
						
   	if ((stTimeData.ucTimeHourStop >ucHourSystem)||((stTimeData.ucTimeHourStop == ucHourSystem)&&(stTimeData.ucTimeMinStop >= ucMinSystem)))
	   	usTimeStopAndSystemDiffer = (stTimeData.ucTimeHourStop-ucHourSystem)*60+(stTimeData.ucTimeMinStop-ucMinSystem);
	
	if (GET_POWERSTATUS())
	{
		bTimeoverHintRequest = 0;
		if (bTimeStopDone == 0)	//time active is on 
		{
			if (usTimeStopAndSystemDiffer<=_TIMER_SLEEP_HINT_START)
			{
				if (ucCurrState!=_SLEEP_STATE)
				{
					//compare with sleep time
					if (ucSleepType ==0 || ucSleepTimeMin>=usTimeStopAndSystemDiffer)
						bTimeoverHintRequest = 1;
				}
			}
		}
	}	
	if ((bTimeoverHintRequest==1) && (bTimeoverHintOsdState ==0))
	{
		if (ucOsdState != _SHOW_TIMESTOP_TIMEOVER_HINT_STATE&& ucOsdState==_IDLE_STATE)
		{
			COsdMessagePush(_SHOW_TIMESTOP_TIMEOVER_HINT_MESSAGE);
		}
		if (ucOsdState==_SHOW_TIMESTOP_TIMEOVER_HINT_STATE)
		{
			COsdMessagePush(_SHOW_TIMESTOP_TIMEOVER_HINT_REMINDTIME_MESSAGE);
		}
	}
	CTimerReactiveTimerEvent(SEC(1), COsdReckonTimerPowerOffEvent);	
#else
	if (++ucTimerPowerOffMinTickCnt>=60)
	{
		ucTimerPowerOffMinTickCnt = 0;
		if (stTimeData.ucTimeHourStop != 0 || stTimeData.ucTimeMinStop != 0)
		{
			if (stTimeData.ucTimeMinStop !=0)
			{
				stTimeData.ucTimeMinStop--;
				if (stTimeData.ucTimeMinStop == 0 && stTimeData.ucTimeHourStop == 0)
				{
					CTimerCancelTimerEvent(COsdReckonTimerPowerOffEvent);
					if (GET_POWERSTATUS())
					{
						SET_POWERSWITCH();
						COsdFxDisableOsd();
						COsdCoreInitialze();
						COsdMessageInitial();

						ucSleepType = 0;  // set Sleep mode disable
						CTimerCancelTimerEvent(COsdReckonTimeEvent);
						CTimerCancelTimerEvent(COsdReckonTimerPowerOffEvent);
						return;
					}
				}
				else if (stTimeData.ucTimeMinStop == 0)
				{
					stTimeData.ucTimeHourStop--;
					stTimeData.ucTimeMinStop = 59;
				}				
			}
			else
			{
				stTimeData.ucTimeHourStop--;
				stTimeData.ucTimeMinStop = 59;
			}
		}
	}

	usTimeStopAndSystemDiffer = stTimeData.ucTimeHourStop*60+stTimeData.ucTimeMinStop;
	
	if (GET_POWERSTATUS())
	{
			bTimeoverHintRequest = 0;
			if (bTimeStopDone == 0)	//time active is on 
			{
				if (usTimeStopAndSystemDiffer<=_TIMER_SLEEP_HINT_START)
				{
					if (ucCurrState!=_SLEEP_STATE)
					{
						//compare with sleep time
						if (ucSleepType ==0 || ucSleepTimeMin>=usTimeStopAndSystemDiffer)
							bTimeoverHintRequest = 1;
					}
				}
			}
	}	

	if ((bTimeoverHintRequest==1) && (bTimeoverHintOsdState ==0))
	{
		if (ucOsdState != _SHOW_TIMESTOP_TIMEOVER_HINT_STATE&& ucOsdState==_IDLE_STATE)
		{
			COsdMessagePush(_SHOW_TIMESTOP_TIMEOVER_HINT_MESSAGE);
		}
		if (ucOsdState==_SHOW_TIMESTOP_TIMEOVER_HINT_STATE)
		{
			COsdMessagePush(_SHOW_TIMESTOP_TIMEOVER_HINT_REMINDTIME_MESSAGE);
		}
	}

	CTimerReactiveTimerEvent(SEC(1), COsdReckonTimerPowerOffEvent);
#endif
}
void COsdReckonTimerSwitchChEvent(void)
{

	CTimerReactiveTimerEvent(SEC(1), COsdReckonTimerSwitchChEvent);
}
#endif	//#if _TIMER_PAGE_SUPPORT

void COsdReckonSystemClockEvent(void)
{
#if _TIMER_SLEEP_HINT_SUPPORT==0
	ucSec++;
	if(ucSec == 60) {
		ucSec = 0;
		ucMin++;
		if(ucMin == 60) {
			ucMin = 0;
			ucHour++;
			if(ucHour == 24)
				ucHour = 0;
		}
	}
	//CTimerReactiveTimerEvent(SEC(1), COsdReckonSystemClockEvent);
#endif

#if _TIMER_SLEEP_HINT_SUPPORT
	WORD usSystem;
	WORD usStop;
#if 1	
	//usSystem = ucHourSystem*60+ucMinSystem;
	//usStop = stTimeData.ucTimeHourStop*60+stTimeData.ucTimeMinStop;
	
	usStop = stTimeData.ucTimeHourStop*60+stTimeData.ucTimeMinStop;
	usSystem = ucHourSystem*60+ucMinSystem;
	usTimeStopAndSystemDiffer=0xffff;
	if (usStop>=0 && usStop<_TIMER_SLEEP_HINT_START)//stop 00:00-00:05
	{
		if (usSystem>=23*60+(60-_TIMER_SLEEP_HINT_START) && usSystem<24*60)		//system 23:55-00:00
			usTimeStopAndSystemDiffer = (usStop+_TIMER_SLEEP_HINT_START)-(usSystem+_TIMER_SLEEP_HINT_START)%60;
		else if (usSystem>=0 && usSystem<_TIMER_SLEEP_HINT_START)		//system 00:00-00:05
		{
			if (usSystem<usStop)
				usTimeStopAndSystemDiffer = usStop-usSystem;
		}
	}
	else
	{
		if (usSystem<usStop)
			usTimeStopAndSystemDiffer = usStop-usSystem;
	}
#if (_DEBUG_TOOL==_RS232)	
	//DebugPrintf("message= %d\n", ucOsdMessage);
	//DebugPrintf("state= %d\n", ucOsdState);
	//DebugPrintf("\nHintOsdState:%d,     ", bTimeoverHintOsdState);
	//DebugPrintf("\nHintReq:%d:\n\n", bTimeoverHintRequest);
	//DebugPrintf("\nucSleepType:%d,     ", ucSleepType);
#endif
#endif

if (GET_POWERSTATUS()/* && (bTimeoverHintOsdState==0)*/)
{
	//if (ucOsdState==_IDLE_STATE||ucOsdState==_SHOW_TIMESTOP_TIMEOVER_HINT_STATE)
	//{
		bTimeoverHintRequest = 0;
#if _TIMER_PAGE_SUPPORT
#else	//#if _TIMER_PAGE_SUPPORT
		if (stTimeData.ucTimeActiveType && bTimeStopDone == 0)	//time active is on 
		{
			if (usTimeStopAndSystemDiffer<=_TIMER_SLEEP_HINT_START)
			{
				//if (ucVideoProcessState==_ACTIVE_STATE||ucSyncProcessState==_ACTIVE_STATE)
				if (ucCurrState!=_SLEEP_STATE)
				{
					//compare with sleep time
					if (ucSleepType ==0 || ucSleepTimeMin>=usTimeStopAndSystemDiffer)
						bTimeoverHintRequest = 1;
				}
			}
		}
#endif	//#if _TIMER_PAGE_SUPPORT
	//}
}	

if ((bTimeoverHintRequest==1) && (bTimeoverHintOsdState ==0))
{
						if (ucOsdState != _SHOW_TIMESTOP_TIMEOVER_HINT_STATE&& ucOsdState==_IDLE_STATE)
						{
							//disable music play status
							//if (GET_MUSIC_PLAYER_STATUS())
							//{
							//	SET_MUSIC_PLAYER_SWITCH();
							//	CMusicPlayerHandler();
							//}
							//ready to show timeover hint
							//else
							COsdMessagePush(_SHOW_TIMESTOP_TIMEOVER_HINT_MESSAGE);
						}
						if (ucOsdState==_SHOW_TIMESTOP_TIMEOVER_HINT_STATE)
						{
							//already show hint, refresh remind time
							COsdMessagePush(_SHOW_TIMESTOP_TIMEOVER_HINT_REMINDTIME_MESSAGE);
						}
}

#endif	//#if _TIMER_SLEEP_HINT_SUPPORT

#if _TIMER_PAGE_SUPPORT
#else	//#if _TIMER_PAGE_SUPPORT
	// stop time check
	if (stTimeData.ucTimeActiveType)	//time active is on 
	{
		if (GET_POWERSTATUS())
		{
			usSystem = (ucMinSystem)*60+ucSecSystem;
			usStop = (stTimeData.ucTimeMinStop)*60;
			if (	stTimeData.ucTimeHourStop==ucHourSystem &&
				usSystem==usStop)
			{
				//if (GET_POWERSTATUS()==1)
				//{
					SET_POWERSWITCH();
					COsdFxDisableOsd();
					COsdCoreInitialze();
					COsdMessageInitial();

					//20070409, disable sleep timer
					ucSleepType = 0;  // set Sleep mode disable
					CTimerCancelTimerEvent(COsdReckonTimeEvent);

				//}
				if (stTimeData.ucTimeActiveType==2)
				{
					stTimeData.ucTimeHourStop = 0;
					stTimeData.ucTimeMinStop = 0;
					//CEepromSaveTimeData();
					bTimeStopDone = 1;
				}
			}
		}
		//time start
		if (GET_POWERSTATUS()==0)
		{
			usSystem = (ucMinSystem)*60+ucSecSystem;
			usStop = (stTimeData.ucTimeMinStart)*60;
			if (	stTimeData.ucTimeHourStart==ucHourSystem &&
				(usSystem==usStop))
			{
				//if (GET_POWERSTATUS()==0)
				//{
#if 0//(_TV_POWERONCH_SUPPORT)
					//20070424, any src switch to tv specified channel
					CPowerUpDeviceAndInitI2C();
					stSystemData.InputSource = 0;	//according to _INPUT_PORT_MAX
					CEepromSaveSystemData();
					
					if (GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_TV_PORT)
					{
#if (_ColorStandard_TYPE==_NTSC)
						if (GET_CurChn()!= GET_TVPOWERONCHANNEL())
						{
							SET_PreChn(GET_CurChn());
							if (GET_NtscTableType()==_TV_NTSCTABLE_TYPE_AIR)
							{
								if (GET_TVPOWERONCHANNEL()<=1 || GET_TVPOWERONCHANNEL()>69)
								{
									SET_CurChn(2);
								}
								else
								{
									SET_CurChn(GET_TVPOWERONCHANNEL());
								}
							}
							else
							{
								SET_CurChn(GET_TVPOWERONCHANNEL());
							}
							
							CEepromSaveTvData();
							//20070406
							CEepromGetTvPdbData(GET_CurChn(), &stTvPdb.offset);
							SET_TV_FINETUNE_PRE_DONE();
#if (_TV_FINETUNE_SAVE_SUPPORT)
							//20070407, get finetune data
							CEepromGetTvFinetuneData(GET_CurChn(), &ucTvFinetuneData);
#endif
						}
#else	//#if (_ColorStandard_TYPE==_NTSC)

						if (stTvInfo.CurChn != GET_TVPOWERONCHANNEL())
						{
							stTvInfo.PreChn = stTvInfo.CurChn;
							stTvInfo.CurChn = GET_TVPOWERONCHANNEL();
							CEepromSaveTvData();
							//20070406
							CEepromGetTvPdbData(stTvInfo.CurChn, &stTvPdb.chinfo);
							SET_TV_FINETUNE_PRE_DONE();
#if (_TV_FINETUNE_SAVE_SUPPORT)
							//20070407, get finetune data
							CEepromGetTvFinetuneData(stTvInfo.CurChn, &ucTvFinetuneData);
#endif
						}
#endif	//NOT #if (_ColorStandard_TYPE==_NTSC)

					}
#endif
					SET_POWERSWITCH();
					COsdFxDisableOsd();
					COsdCoreInitialze();
					COsdMessageInitial();
				//}
				if (stTimeData.ucTimeActiveType==2)
				{
					stTimeData.ucTimeHourStart= 0;
					stTimeData.ucTimeMinStart= 0;
					//CEepromSaveTimeData();
					bTimeStartDone = 1;
				}
			}
		}
		
		if (bTimeStartDone && bTimeStopDone && (stTimeData.ucTimeActiveType==2))
		{
			stTimeData.ucTimeActiveType = 0;
			//CEepromSaveTimeData();
			bTimeStartDone = 0;
			bTimeStopDone = 0;
		}

	}

#endif	//#if _TIMER_PAGE_SUPPORT
}


#if _TIMER_SLEEP_HINT_SUPPORT
void COsdStopUserTimer(void)
{
	/////////////////////////////////////////////
	/*RESET WAKE UP TIMIER AND SLEEP TIMER */
	
	//ucSecWakeup = 0;
	//ucMinWakeup = 0;
	//ucHourWakeup = 0;
	//system clock and wakeup clock share event.
	//CTimerCancelTimerEvent(COsdReckonSystemClockEvent);

	ucSleepTimeMin = 0;
	ucSleepType = _TIMER_SLEEP_T_OFF;
	CTimerCancelTimerEvent(COsdReckonTimeEvent);
	
	////////////////////////////////////////////////

	//20070331
	ucHourSystem = 0;
	ucMinSystem = 0;
	ucSecSystem = 0;

}

#endif	//#if _TIMER_SLEEP_HINT_SUPPORT


#if(_Change_SOURCE_Type == Change_SOURCE_Type2 || _Change_SOURCE_Type == Change_SOURCE_Type3)
void COsdChangeSourceEvent(void)
{
	if(stSystemData.InputSource == ucSourceTemp){
		
		COsdFxExitEvent();
		return;
	}

	// If change source, cancel the no-signal event,
	// and if no signal message on screen, close it.
	CPowerLightPowerOff();
	CTimerCancelTimerEvent(COsdNoSignalEvent);
	COsdCoreCloseNoSignalOsd();

	CAdjustBackgroundColor(0x00, 0x00, 0x00); // enable background color to black
	CScalerSetBit(_VDISP_CTRL_28, 0xff, 0x20);

	COsdCtrlSetSingalSource(ucSourceTemp);
	//20080829c ccy add
	
	COsdMessagePush(_SHOWINFO_MESSAGE);
	COsdCoreInitialze();
	

}
#endif

#if(_MEMORY_LOCATION == _FLASH)
void COsdSaveFlashDataEvent(void)
{
	if((bVolumeFlag == _ENABLE)||(bBalanceFlag == _ENABLE)||(bTrebleFlag == _ENABLE)||(bBassFlag == _ENABLE))
	{
		CEepromSaveAudioData();
		bVolumeFlag = _DISABLE;
		bBalanceFlag = _DISABLE;
		bTrebleFlag = _DISABLE;
		bBassFlag = _DISABLE;
	}
	
	if((bContrastFlag == _ENABLE)||(bBrightnessFlag == _ENABLE))
	{
		CEepromSaveBriConData();
		bContrastFlag = _DISABLE;
		bBrightnessFlag = _DISABLE;
	}

	if(bOsdBlendingFlag == _ENABLE)
	{
		CEepromSaveOsdUserData();
		bOsdBlendingFlag = _DISABLE;
	}

	if(bSharpnessFlag == _ENABLE)
	{
		CEepromSaveSystemData();
		bSharpnessFlag = _DISABLE;
	}

	if((bHueFlag == _ENABLE)||(bSaturationFlag == _ENABLE))
	{
		CEepromSaveHueSatData();
		bHueFlag = _DISABLE;
		bSaturationFlag = _DISABLE;
	}

	if((bHPositionFlag == _ENABLE)||(bVPositionFlag == _ENABLE)||(bClockFlag == _DISABLE)||(bPhaseFlag == _DISABLE))
	{
		CEepromSaveModeData(stModeInfo.ModeCurr);
		bHPositionFlag = _DISABLE;
		bVPositionFlag = _DISABLE;
		bClockFlag = _DISABLE;
		bPhaseFlag = _DISABLE;
	}

}
#endif

#if _TUNER_TYPE!=_TUNER_NONE
void COsdFxManualScanOverEvent(void)
{
	ucManualScanOver = 1;
}
#endif	//#if _TUNER_TYPE!=_TUNER_NONE

// Mute icon is shown while idle state
void COsdActiveMuteIcon(void)
{
	COsdMessagePush(_SHOW_MUTE_IDLE_MESSAGE);
}


/**
 *
 * @}
 */

