⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key_handler_svcd.c

📁 SAMSUNG 5009的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************** *   Filename    : Change_key_svcd.c *   Start       : 2002. 11. 6. *   By          : Taejin Kwon *   Contact     : tj1kwon@samsung.co.kr *   Description : Key to UI command for SVCD. ****************************************************************************** *//****************************************************** *       INCLUDES *****************************************************/#include "Basic_typedefs.h"#include "CUSTOM/Custom_option.h"#include "OS/OS_abstract.h"#include "API/SH_types.h"#include "API/SH_api.h"#include "COMMON/Common.h"#include "MAIN/Global_state.h"#include "MAIN/Appl_types.h"#include "MAIN/Uop_msg.h"#include "DRIVER/FS/Fs_api.h"#include "CUSTOM/Osd_types.h"#include "CUSTOM/Osd_if.h"#include "CUSTOM/Key_handler_setup.h"#include "CUSTOM/Key_receive.h"#include "CUSTOM/Key_defs.h"#include "CUSTOM/Key_2_uop.h"#include "MAIN/DVD/Dvd_predef.h"#include "MAIN/DVD/Dvd_common.h"#include "MAIN/SVCD/Svcd_types.h"#include "MAIN/SVCD/Svcd_ext.h"#include "MAIN/SVCD/Svcd_show.h"#include "MAIN/MMP/Mmp_common.h"#include "FP_handle.h"#include "I2c_api.h"/****************************************************** *       Global variables / functions *****************************************************//****************************************************** *       Extern variables  *****************************************************/extern SysQueue_t		gQ_gui;/*limeng	060422* control by custom option*/	//#if (_APP_CAP_NAV_SUPER_VIDEO_CD || _APP_CAP_NAV_VIDEO_CD )/****************************************************** *       functions *****************************************************/extern VOID OsdSelTimerSet( SysTimeTick_t time, SysEnable_t	set );extern INLINE BYTE1 GetDisplayDigestState( VOID );//BOOL IsXvcdSpecialKeyForbidden( UCHAR data );/****************************************************************************** *  Function name : IsXvcdPBCMenuDomainKeyForbidden *  Arguments     :  *  Return        : 	BOOL *  By            :  	Qian liping 050804 *  Description   : when in these states, some key is forbidden. 				Initial state: FF/FR/SLOW_FWD/STEP/RPT/RPT_AB/PBC/PAUSE/SKIP 				PBC Menu : FF/FR/SLOW_FWD/STEP/ZOOM/RPT/RPT_AB/ 				PBC_ON playing : RPT *  Revisions     : ****************************************************************************** */BOOL IsXvcdPBCMenuKeyForbidden( UCHAR data ){	BOOL	flag = FALSE;      if(IsThisItemEmpty())  //limeng 060403	{#if _APP_CAP_FUNC_VCD_DIGEST_PREVIEW //limeng 061026:forbid num & enter key at critical digest state 		if(IsVcdDigestMode())		{			if(IS_NUM_KEY(data)||(data == RC_KEY_ENTER))			flag = TRUE;		}#endif			if( IS_INVALID_KEY_IN_VCD_Empty(data) )		{				//OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);				flag = TRUE;		}			}	else if( GetSvcdMenuState() == TRUE ) //PBC_ON	{		if( IsThisItemSpi() )		{			if( IS_INVALID_KEY_IN_VCD_SPI(data) )			{				flag = TRUE;			}		}		else 		{			if( IS_INVALID_KEY_IN_VCD_PBCON(data) )			{				flag = TRUE;			}		}	}		if( flag ) // Qian liping 060428		OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);		return flag;}/****************************************************************************** *  Function name 	: GuiXvcdHandleSpecialOsd *  Arguments     	:  *  Return        	: BOOL *  By            		: QQ *  Description   	:  *  Revisions     	: ****************************************************************************** */ BOOL GuiXvcdHandleSpecialOsd(UCHAR data){	OSD_State_st *osd_state;	BOOL			return_val = FALSE;	osd_state = OSD_GetState();	switch( osd_state->etCur_dsp )	{#if _APP_CAP_FUNC_BOOKMARK		case DISPLAY_BOOKMARK:			return_val = ( GuiHandleKeysInBookmarkOsd( data ) );			break;#endif					case DISPLAY_REPEAT:			return_val = ( GuiHandleKeysInRepeatOsd( data ) );			break;#if _APP_CAP_OSD_3D		case DISPLAY_3D:			return_val = ( GuiHandleKeysIn3DOsd( data ) );			break;#endif	#if _APP_CAP_FUNC_RANDOM_PLAY		case DISPLAY_MODE_SEL:			return_val = ( GuiHandleKeysInModeSelOsd( data ) );			break;			#endif	/* _APP_CAP_FUNC_RANDOM_PLAY */		}	return return_val;	}VOID ChangeKeyToXvcdCommand( UCHAR data, UCHAR param ){	DiscType_t	disc;	//BOOL		invalid_key = FALSE;			 		disc = GetDiscState();#if 0#if _APP_CAP_FUNC_MIXED_VCD_CDDA	if( disc == CD_DA && GetMixedCdState() == FALSE && IS_INVALID_KEY_FOR_CD_DA(data))#else /* _APP_CAP_FUNC_MIXED_VCD_CDDA */			if( disc == CD_DA && IS_INVALID_KEY_FOR_CD_DA(data))#endif /* _APP_CAP_FUNC_MIXED_VCD_CDDA */					{		invalid_key = TRUE;	}	else if(IsDiscCDG() && IS_INVALID_KEY_FOR_CDG(data))	{		invalid_key = TRUE;	}	else if(IsXvcdPBCMenuKeyForbidden( data ))	{			invalid_key = IsXvcdPBCMenuKeyForbidden( data ); 	}	if(invalid_key)	{		OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);		return;	}			#endif	/* Pre-process of specila osd (yanglu, 051027) */				if( GuiXvcdHandleSpecialOsd(data) )		return;	switch(data)	{					case RC_KEY_STOP:			if(IsSvcdFullStopMode())			{				OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);				return;			}			GuiStop( param);			break;					case RC_KEY_NUM0:		case RC_KEY_NUM1:		case RC_KEY_NUM2:		case RC_KEY_NUM3:		case RC_KEY_NUM4:		case RC_KEY_NUM5:		case RC_KEY_NUM6:		case RC_KEY_NUM7:		case RC_KEY_NUM8:		case RC_KEY_NUM9:		case RC_KEY_NUM10:			NumberKeyControl( data );	/* (yanglu, 051025) */			break;		case RC_KEY_NEXT:		case RC_KEY_PREV:			GuiXvcdSkip(data);			break;		case RC_KEY_SLOW_FWD:			GuiXvcdSlowForward( param);			break;		case RC_KEY_FF:		case RC_KEY_FR:			GuiXvcdScan(data);			break;						case RC_KEY_UP:		case RC_KEY_DOWN:			GuiXvcdUpDown(data);			break;					case RC_KEY_LEFT:		case RC_KEY_RIGHT:			GuiXvcdLeftRight(data);			break;					case RC_KEY_DISPLAY:			GuiXvcdDisplay(param);			break;		case RC_KEY_SEARCH:			GuiInfoGoto(param);			break;					case RC_KEY_SETUP:			GuiSetUp( );			break;					case RC_KEY_ENTER:			GuiXvcdEnter( param);			break;					case RC_KEY_PLAY:			GuiXvcdPlayPause( param);			break;					case RC_KEY_PAUSE:			GuiXvcdPause( param);			break;					case RC_KEY_RETURN:			GuiXvcdReturn(param);			break;			#if _APP_CAP_KEY_USE_CLEAR		case RC_KEY_CLEAR:			GuiClear();			break;			#endif /* _APP_CAP_KEY_USE_CLEAR */				case RC_KEY_3D:#if _APP_CAP_OSD_3D			Gui3DId(param);#endif /* _APP_CAP_OSD_3D */					break;		case RC_KEY_DUALMONO:			GuiDualMonoOn();			break;			#if _APP_CAP_AUD_REVERBERATION		case RC_KEY_REVERBRATION:			GuiReverbration(param);			break;#endif/*_APP_CAP_AUD_REVERBERATION*/		case RC_KEY_PROGRAM:			GuiProgram();			break;			#if _APP_CAP_FUNC_BOOKMARK				case RC_KEY_BOOKMARK:			GuiBookMark();			break;#endif /* _APP_CAP_FUNC_BOOKMARK */				case RC_KEY_ZOOM:			GuiZoom();			break;					case RC_KEY_STEP:			GuiXvcdStep( param);			break;#if _APP_CAP_AUD_KARAOKE		case RC_KEY_KARAOKE:	/* Merge code (yanglu, 051024) */#if !_APP_CAP_AUD_KARAOKE_IN_DTS			if(GetCddaDiscLoaded() && GetDtsDiscLoaded())			{				ToggleKaraokeSetting();				OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);			}			else#endif /* !_APP_CAP_AUD_KARAOKE_IN_DTS */				GuiKaraoke();			break;#endif /* _APP_CAP_AUD_KARAOKE */		case RC_KEY_ROOT_MENU:			UiCmdGeneral( UOP_PBCMENU );			break;		case RC_KEY_PBC:			UiCmdGeneral( UOP_SVCD_MENU );			break;		case RC_KEY_ANGLE:			GuiXvcdLang(param);			break;#if 0	//(weilf)20060425#if _APP_CAP_FUNC_VCD_DIGEST_PREVIEW		case RC_KEY_DIGEST:			GuiXvcdDigest();			break;#endif#endif #if _APP_CAP_FUNC_VCD_INTRO_SCAN		case RC_KEY_INTRO:			UiCmdGeneral( UOP_SVCD_INTROSCAN );			break;			#endif	#if _APP_CAP_KEY_TIME_KEY				case RC_KEY_TIME:			if (IsSvcdFullStopMode())				OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);			else				OSD_SetMainDisplay(DISPLAY_TIME, SYS_NO_WAIT);			break;#endif /* _APP_CAP_KEY_TIME_KEY */					default:			OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);			break;	}}/****************************************************************************** *  Function name : GuiXvcdSkip *  Arguments     :  *  Return        : VOID *  By            : Liu renliang *  Description   :  ****************************************************************************** */VOID GuiXvcdSkip( UCHAR param ){	if(param==RC_KEY_PREV)		UiCmdGeneral( UOP_SVCD_PREV );	else		UiCmdGeneral(UOP_SVCD_NEXT);}/****************************************************************************** *  Function name : GuiXvcdSlowForward *  Arguments     :  *  Return        : VOID *  By            : kwon  *  Description   :  ****************************************************************************** */VOID GuiXvcdSlowForward( UCHAR param ){	ScanCtrl_t	scan;	UCHAR	speed;	UCHAR	direction;	GetScanControlState( &scan );	speed = scan.speed;	direction = scan.direction;	if( param == PM_SPEED_UNDEFINED )	{		switch( speed )		{			case PM_SPEED_X1_32:				speed = PM_SPEED_X1_16;				break;			case PM_SPEED_X1_16:				speed = PM_SPEED_X1_8;				break;			case PM_SPEED_X1_8:				speed = PM_SPEED_X1_4;				break;			case PM_SPEED_X1_4:				speed = PM_SPEED_X1_2;				break;			case PM_SPEED_X1_2:#if _APP_CAP_FUNC_CIRCULAR_SPEED_CONTROL//				speed = SCAN_SPEED_X1;//				break;#if _APP_CAP_KEY_SEPERATE_PLAY				UiCmdGeneral( UOP_PLAY);#else				UiCmdGeneral( UOP_PLAYPAUSE );#endif				return;#else								OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);				return;#endif			default:				speed = PM_SPEED_X1_32;				break;		}	} 		UiScanForward( UOP_SVCD_FORWARD_SCAN, speed );}/****************************************************************************** *  Function name : GuiXvcdDisplay *  Arguments     :  *  Return        : VOID *  By            : Taejin Kwon *  Description   :  *  Revisions     : ****************************************************************************** */VOID GuiXvcdDisplay( UCHAR param )  //limeng 060428 {	OSD_State_st *osd_state;	   	osd_state = OSD_GetState();		SysPrintf("\nxVCD Display/search key ");	if(osd_state->etInfo_sub== INFO_SUB_CTRACK || osd_state->etInfo_sub == INFO_SUB_CTIME)		GuiInfoGoto(param);	else		OSD_SetMainDisplay(DISPLAY_INFO, SYS_NO_WAIT);	 }/****************************************************************************** *  Function name : GuiXvcdScan *  Arguments     :  *  Return        : VOID *  By            : Liurenliang *  Description   :  ****************************************************************************** */VOID GuiXvcdScan(UCHAR param ){	ScanCtrl_t		scan;	UCHAR			speed;	UCHAR			direction;	//UCHAR			par;	//SetMainState_t 	main;	BOOL 	 		FastForwardFlag=0;	if(param==RC_KEY_FF)		FastForwardFlag=1;	/* Check previous main state */	/* In slow motion, use another routine by their direction.*/	/* Set new fast forward scan speed */	SysPrintf("\nxVCD Fast Forward Scan key.");	GetScanControlState( &scan );	speed = scan.speed;	direction = scan.direction;	/* Change direction */		if((FastForwardFlag==1)&&(direction==PM_DIR_BACKWARD))	{		speed = PM_SPEED_X1;		direction = PM_DIR_FORWARD;		}	if((FastForwardFlag==0)&&(direction==PM_DIR_FORWARD))	{		speed = PM_SPEED_X1;		direction = PM_DIR_BACKWARD;		}	/* 	 * This command comes from Fast Forward Button action 	 */	switch( speed )	{		case PM_SPEED_X2:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -