📄 svcd_show.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 + -