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

📄 svcd_show.c

📁 SAMSUNG 5009的源代码
💻 C
字号:
/****************************************************************************
* File name																	*
*				Vcd_show.c                                                 *
*																			*
* Start date																*
*				2004.4.29													*
*																			*
* By																		*
*				Haekyu Park                                                   *
*																			*
* Contact																	*
*				haekyu.park@samsung.com                                           *
*																			*
* Description																*
*				             *
*																			*
* HISTORY																	*
*																			*
*         NAME            DATE                    REMARKS					*
*																			*
*																			*
*																			*
*****************************************************************************/

/***************************************************************************
 *       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/Appl_types.h"
#include "MAIN/Global_state.h"
#include "MAIN/Uop_msg.h"

#include "CUSTOM/Osd_types.h"
#include "CUSTOM/Osd_if.h"

#include "CUSTOM/Key_defs.h"
#include "CUSTOM/Key_handler_setup.h"

#include "CUSTOM/FP_handle.h"
#include "DRIVER/I2C/I2c_api.h"
#include "DRIVER/EEPROM/Eeprom_drv.h"

#include "MAIN/SVCD/Svcd_types.h"
#include "MAIN/SVCD/Svcd_ext.h"
#include "MAIN/SVCD/Svcd_show.h"
#include "MAIN/SVCD/Svcd_common.h"



/***************************************************************************
 *       Global variables 
 **************************************************************************/

/***************************************************************************/

#if _USE_5008
VOID GetSuitableShowTime(UCHAR *vhour, UCHAR *vmin, UCHAR *vsec)
{
	VOID (*GetSvcdTime)( BYTE1 *, BYTE1 *, BYTE1* );
	BYTE1 info_state,disp_main_state;
	OSD_State_st * osd_state;

	osd_state = OSD_GetState();
	info_state = osd_state->etInfo_dsp;

	GetSvcdTime = GetSvcdPbTime;//By QQ 051219 default value
	disp_main_state = osd_state->etCur_dsp;
	
	if(GetSvcdMenuState() == TRUE)
	{
		GetSvcdTime = GetSvcdPbTime;
	}
	else
	{
		GetSvcdTime = GetSvcdAllPbTime;
	}
	if (GetDiscState() == CD_DA && GetMixedCdState() == FALSE)//BY QQ 051215
	{
		GetSvcdTime = GetSvcdPbTime;
	}
#ifdef _APP_CAP_FUNC_REMAIN_TIME
#ifdef _APP_CAP_KEY_TIME_KEY
	if(disp_main_state == DISPLAY_TIME)
	{
		BYTE1 info_time_state = GetDisplayTimeInfoState() ;
		if(info_time_state == INFO_FIRST)
		{
			GetSvcdTime = GetSvcdAllPbTime;
		}else
		if(info_time_state == INFO_SECOND)
		{
			GetSvcdTime = GetSvcdPbTime;
		}
	}
#else	/*_SUPPORT_TIME_KEY*/	
	if(info_state == INFO_SECOND)
	{
		GetSvcdTime = GetSvcdAllPbTime;
	}else
	if(info_state == INFO_THIRD)
	{
		GetSvcdTime = GetSvcdPbTime;
	}
#endif	/*_SUPPORT_TIME_KEY*/		
#endif	/*_SUPPORT_REMAIN_TIME*/
	if(!IsThisItemSpi())	/*spi can't get the time. Jiangshanbin051221*/
		GetSvcdTime((BYTE1 *)vhour,(BYTE1 *)vmin,(BYTE1 *)vsec);
	else
	{
		*vhour =(UCHAR)(gSpi_Display_Time/3600);
		*vmin = (UCHAR)((gSpi_Display_Time%3600)/60);
		*vsec = (UCHAR)(gSpi_Display_Time%60);
	}
}
#endif

VOID VcdShowTimeChanged(UCHAR vhour, UCHAR vmin, UCHAR vsec)
{
	MediaInfo_t 	media;
	UCHAR 		hour,min,sec;
	BYTE1 		info_state,disp_main_state, dsp_sub;
	OsdCtrl_st 	ctrl;
       OSD_State_st * osd_state;

	osd_state = OSD_GetState();
	info_state = osd_state->etInfo_dsp;
	disp_main_state = osd_state->etCur_dsp;
	dsp_sub = osd_state->etInfo_sub;
	hour 	= vhour;
	min 		= vmin;
	sec 		= vsec;
#if _USE_5008	//BY QQ 051209 for reigncom requesting : PBC ON : display track time -- PBC oFF : display disc time 
	if(!IsThisItemSpi() /*&& gDiscType == xVCD_416*/) // By QQ 060109
		GetSuitableShowTime( &hour , &min , &sec );
#endif
	if( hour > 3 )
		hour = 3;            

	GetSvcdVideoInfo(&media.xvcd);  
	
	if(GetMainState() != MAIN_STOP)
		SetVfdPlaybackInfo( 0, (BYTE2)media.xvcd.cur_track, (BYTE2)(((hour * 60 + min)*60)+sec ));     
#if 0
	if ( ((disp_main_state == DISPLAY_INFO) && !((dsp_sub == INFO_SUB_CTIME) && (GetTempValueSetFlag()== TRUE)))
#ifdef _APP_CAP_FUNC_REMAIN_TIME
#ifdef _APP_CAP_KEY_TIME_KEY
		||(disp_main_state == DISPLAY_TIME)
#else		
		||(info_state == INFO_SECOND || info_state == INFO_THIRD )
#endif		
#endif		
		)
#endif

	if (
#if  _APP_CAP_KEY_TIME_KEY
			osd_state->etCur_dsp == DISPLAY_TIME||
#endif /*_APP_CAP_KEY_TIME_KEY*/
#if _APP_CAP_FUNC_VCD_DIGEST_PREVIEW	/*update digest time here*///clina 060810
			osd_state->etCur_dsp == DISPLAY_DIGEST_MENU||
#endif
			(
				osd_state->etCur_dsp == DISPLAY_INFO && (

#if _APP_CAP_FUNC_REMAIN_TIME
				osd_state->etInfo_dsp == INFO_SECOND|| osd_state->etInfo_dsp == INFO_THIRD||
#endif/*_APP_CAP_FUNC_REMAIN_TIME*/		
				((osd_state->etInfo_dsp == INFO_FIRST ) && !(osd_state->etInfo_sub == INFO_SUB_CTIME && GetTempValueSetFlag()== TRUE))
				) 
			)
	)//clina 060412
		

	{
		ctrl.p.time.hour = hour;
		ctrl.p.time.min = min;
		ctrl.p.time.sec = sec;
        	OSD_TimerUpdate(OSD_CTRL_UPDATE_TIME, &ctrl, SYS_NO_WAIT);
	}	
} 


VOID VcdIconRedrawCheck(VOID)	/* Yanglu 05.02.15 to erase current cursor icon osd, or redraw a new one */
{
#if  _APP_CAP_FUNC_SCORING	// Qian liping 060927
	if( GetDisplayMainState() == DISPLAY_SCORE )
		return;
#endif 

	if(!IS_ICON_TRANS_MSG)	/* Yanglu 05.02.26 donot clear icon if non-keeping osd is shown */
		OSD_SetIconDisplay(ICON_KEEP, NULL, SYS_NO_WAIT);
}


VOID VcdShowPlaymodeChange(BYTE1 playmode)
{
	switch( playmode )
	{
		case PARAM_PB_NORMAL:
			SetVfdPrgmRndDisplay(FP_PRGM_RANDOM_OFF);
			SetVfdPrgmRndDisplay(FP_PRGM_PROGRAM_OFF);
			break;
		case PARAM_PB_RANDOM:
			SetVfdPrgmRndDisplay(FP_PRGM_RANDOM);
			break;
		case PARAM_PB_PROGRAM:
			SetVfdPrgmRndDisplay(FP_PRGM_PROGRAM);
			break;
	}
}
#if defined(_SH_MCNT_)
#if 0
void VcdShowCvdVfdOnly(void)
{
	SetVfdDiscState(FP_DISC_CVD_MENU_ON);
	SetVfdRepeatDisplay(FP_REPEAT_CLEAR);
	SetVfdPrgmRndDisplay(FP_PRGM_RANDOM_OFF);
	SetVfdPrgmRndDisplay(FP_PRGM_PROGRAM_OFF);
}
void VcdShowVcd2VfdOnly(void)
{
	SetVfdDiscState(FP_DISC_VCD_2_0);
	SetVfdRepeatDisplay(FP_REPEAT_CLEAR);
	SetVfdPrgmRndDisplay(FP_PRGM_RANDOM_OFF);
	SetVfdPrgmRndDisplay(FP_PRGM_PROGRAM_OFF);
}
#endif

void VcdShowStop(void)
{
	OSD_SetIconDisplay(ICON_STOP, NULL, SYS_NO_WAIT);
	SetVfdPrgmRndDisplay(FP_PRGM_RANDOM_OFF);
	SetVfdPrgmRndDisplay(FP_PRGM_PROGRAM_OFF);
}
void VcdShowStopVfdOnly(void)
{
	OSD_SetIconDisplay(ICON_STOP_NO_RESUME, NULL, SYS_NO_WAIT);
	SetVfdPrgmRndDisplay(FP_PRGM_RANDOM_OFF);
	SetVfdPrgmRndDisplay(FP_PRGM_PROGRAM_OFF);
}
#endif

/******************************************************************************
 *  Function name : VcdShowStartBigOsd
 *  Arguments     
  	IN              big_osd_type : the osd type for show 
 *  Return        : VOID
 *  By              : Jiang Shanbin
 *  Description  : Show big osds 
 *****************************************************************************/
VOID VcdShowStartBigOsd(BigOsd_et big_osd_type)
{
		
#if _APP_CAP_OSD_USE_LOGO_FOR_SETUP	
		OSD_LogoOn(LOGO_SETUP, TRUE);
#endif /* _APP_CAP_OSD_USE_LOGO_FOR_SETUP */

	// Qian liping 060407
	//OSD_SetIconDisplay(ICON_CLEAR, NULL, SYS_NO_WAIT);
	switch (big_osd_type)
	{
		case BIG_OSD_SETUP:
			OSD_SetMainDisplay(DISPLAY_SETUP, SYS_WAIT);
			break;
		case BIG_OSD_PROGRAM:
			OSD_SetMainDisplay(DISPLAY_PROGRAM, SYS_WAIT);
			break;
		case BIG_OSD_FAT_SELECT:
			OSD_SetMainDisplay(DISPLAY_FAT_DEVICE, SYS_WAIT);
			break;
		default:
			ASSERT(0);
			break;
	}
}

#if (_APP_CAP_FUNC_VCD_POWER_RESUEM || _APP_CAP_FUNC_VCD_OPENCLOSE_RESUEM)
/******************************************************************************
 *  Function name : SetupInfoSaveXvcd
 *  Arguments     : VOID
 *  Return        : VOID
 *  By            : Taejin Kwon
 *  Description   : Save setup information to ROM
 *  Revision		: (yanglu, 060302)
 ******************************************************************************
 */
VOID VcdResumeInfoSave( VOID )
{
	XvcdResumeInfo_t resume;

	SH_writeEepromByte( ROM_ADDR_RESUME_FLAG, FALSE );
	if( GetSvcdPowerOffResume( &resume ) == TRUE )
	{
		BYTE1	numbytes, *ptr, index;

		numbytes = sizeof(XvcdResumeInfo_t);
		ptr = (UCHAR*)(&resume);
		
		for( index = 0; index < numbytes; index ++ )
		{
			SH_writeEepromByte( ROM_ADDR_APPL_RESUME+index, *ptr );
			ptr++;
		}

		//SetupInfoSaveResumeFlag( TRUE );
		SH_writeEepromByte( ROM_ADDR_RESUME_FLAG, TRUE );
	}
}

/******************************************************************************
 *  Function name : VcdResumeInfoLoad
 *  Arguments     : VOID
 *  Return        : VOID
 *  By            : Taejin Kwon
 *  Description   : Load setup information from ROM
  * Revision		: (yanglu, 060302)
 ******************************************************************************
 */
BOOL VcdResumeInfoLoad( XvcdResumeInfo_t	*resume )
{
	UCHAR	temp;

	temp = SH_readEepromByte( ROM_ADDR_RESUME_FLAG );

        // do valid ID check just in setup info load 
	if( temp == TRUE )
	{
		BYTE1	numbytes, *ptr, index;

		numbytes = sizeof(XvcdResumeInfo_t);
		ptr = (UCHAR*)resume;
		
		for( index = 0; index < numbytes; index ++ )
		{
			
			*(ptr+index) = SH_readEepromByte( ROM_ADDR_APPL_RESUME+index );
		}
		
		return TRUE;
	}else {
	
		return FALSE;
	}
}
#endif /* _APP_CAP_FUNC_VCD_POWER_RESUEM */

#if _APP_CAP_FUNC_BOOKMARK
VOID VcdShowBookmarkSub(BYTE1 bookmark1, BYTE1 old_bm )
{
	OsdCtrl_st ctrl;

	ctrl.p.bm.old_bm = old_bm;
	ctrl.p.bm.new_bm = bookmark1;
	OSD_ChangeDisplay(OSD_CTRL_BOOKMARK_SEL, &ctrl, SYS_NO_WAIT);
}
#endif

⌨️ 快捷键说明

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