📄 osd_timer.c
字号:
/******************************************************************************
* Filename : OSD_timer_BASIC.inc
* Start : 2002. 11. 19
* By : Taejin Kwon
* Contact : tj1kwon@samsung.co.kr
* Description :
******************************************************************************
*/
#ifndef _OSD_TIMER_BASIC_C_
#define _OSD_TIMER_BASIC_C_
/******************************************************
* INCLUDES
*****************************************************/
#include <string.h>
#include <stdio.h>
#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_defs.h"
#include "CUSTOM/Key_2_uop.h"
#include "DRIVER/FS/Fs_api.h"
#include "MAIN/DVD/Dvd_predef.h"
#include "MAIN/DVD/Dvd_common.h"
#include "MAIN/MMP/Mmp_common.h"
#include "MAIN/MMP/Mmp_global.h"
#include "MAIN/SVCD/Svcd_types.h"
#include "MAIN/SVCD/Svcd_ext.h"
#include "MAIN/SVCD/Svcd_show.h"
#include "Osd_util.h"
#include "Osd_draw.h"
#include "Osd_timer.h"
#include "CUSTOM/Strings_ext.h"
extern VOID GuiSetupReturn(UCHAR param); //(weilf)20060726
extern VOID GuiSetupEnd(UCHAR param); //(weilf)20060726
extern VOID GuiDvdvDefaultEnter(VOID); //(weilf)20060726
extern VOID MmpShowNoticeString(MmpNoticeType_et notice_type, char * string); //(weilf)20060726
/******************************************************
* Global variables / functions
*****************************************************/
SysTimer_t gTimer_osd;
SysTimer_t gTimer_num;
SysTimer_t gTimer_icon;
SysTimer_t gTimer_selection;
SysTimer_t gTimer_loading;
#if _APP_CAP_OSD_EXPLORE_NOTICE_TIMEOUT
SysTimer_t gTimer_mmp_notice;
#endif
#if _APP_CAP_OSD_SEPERATE_ICON_TIMER
SysTimer_t gTimer_warn;
#endif
#if _APP_CAP_FUNC_SCORING
SysTimer_t gTimer_score_osd;
#endif
extern SysQueue_t gQ_key; /* key receive queue */
extern SysQueue_t gQ_osd;
extern volatile BOOL gTray_open;
/* <<< @: 5008CHN-MMN-2095.Weilifeng 050722:cancel repeat mode if change another file(press num) to play*/
extern MmpCtrl_st *gpstMmp_ctrl;
/* >>> @: 5008CHN-MMN-2095.Weilifeng 050722:show repeat off icon*/
extern volatile BOOL gLoading_on; // Qian liping 060510
#if _APP_CAP_OSD_DIGEST
extern BOOL gDigestTimeOut;//clina 061102
#endif
/******************************************************************************
* Function name : OsdTimerInit
* Arguments :
* IN
* OUT
* INOUT
* Return : VOID
* By : Taejin Kwon
* Description : OSD manager main
******************************************************************************
*/
VOID OsdTimerInit( VOID )
{
SysSetTimer( &gTimer_osd, "OSD_TIME", OsdTimerExpired, 0, 1, 0,
TIMER_DISABLE, 0 );
SysSetTimer( &gTimer_num, "NUM_TIME", OsdNumericTimerExpired, 0, 1, 0,
TIMER_DISABLE, 0 );
SysSetTimer( &gTimer_icon, "ICONTIME", OsdIconTimerExpired, 0, 1, 0,
TIMER_DISABLE, 0 );
#if _APP_CAP_OSD_SEPERATE_ICON_TIMER
SysSetTimer( &gTimer_warn, "ICONTIME", OsdIconTimerExpired, 0, 1, 0,
TIMER_DISABLE, 0 );
#endif
SysSetTimer( &gTimer_selection, "SEL_TIME", OsdSelTimerExpired, 0, 1, 0,
TIMER_DISABLE, 0 );
SysSetTimer( &gTimer_loading, "LOAD_TIME", OsdLoadingTimerExpired, 0, 1, 0,
TIMER_DISABLE, 0 );
#if _APP_CAP_OSD_EXPLORE_NOTICE_TIMEOUT
SysSetTimer( &gTimer_mmp_notice, "MMP_NOTICE_TIME", OsdMmpNoticeTimerExpired, 0, 1, 0,
TIMER_DISABLE, 0 );
#endif/*_APP_CAP_OSD_EXPLORE_NOTICE_TIMEOUT*/
#if _APP_CAP_FUNC_SCORING
SysSetTimer( &gTimer_score_osd, "Karaoke_Scoring_OSD", OsdScoreTimerExpired, 0, 1, 0,
TIMER_DISABLE, 0 );
#endif
}
/******************************************************************************
* Function name : OsdTimerDeinit
* Arguments :
* IN
* OUT
* INOUT
* Return : VOID
* By : Taejin Kwon
* Description : OSD manager main
******************************************************************************
*/
VOID OsdTimerDeinit( VOID )
{
SysKillTimer( &gTimer_osd, 0 );
SysKillTimer( &gTimer_num, 0 );
SysKillTimer( &gTimer_icon, 0 );
#if _APP_CAP_OSD_SEPERATE_ICON_TIMER
SysKillTimer( &gTimer_warn, 0 );
#endif
SysKillTimer( &gTimer_selection, 0 );
SysKillTimer( &gTimer_loading, 0 );
#if _APP_CAP_OSD_EXPLORE_NOTICE_TIMEOUT
SysKillTimer( &gTimer_mmp_notice, 0 );
#endif/*_APP_CAP_OSD_EXPLORE_NOTICE_TIMEOUT*/
#if _APP_CAP_FUNC_SCORING
SysKillTimer( &gTimer_score_osd, 0 );
#endif
}
/******************************************************************************
* Function name : OsdTimerExpire
* Arguments :
* IN
* OUT
* INOUT
* Return : VOID
* By : Taejin Kwon
* Description : Function for timer expiration
******************************************************************************
*/
VOID OsdTimerExpired( UNSIGNED id )
{
if( gOSD_state.etCur_dsp == DISPLAY_SETUP )
{
if( (gOSD_state.etSetup_dsp.depth == MENU_DOM_DEPTH_3 ||
gOSD_state.etSetup_dsp.depth == MENU_DOM_DEPTH_2) &&
(gOSD_state.etSetup_dsp.pass_step == PASSWD_SUB_CHECK ||
gOSD_state.etSetup_dsp.pass_step == PASSWD_SUB_CREATE ||
gOSD_state.etSetup_dsp.pass_step == PASSWD_SUB_CONFIRM) )
{
GuiSetupReturn(0);
} else {
GuiSetupEnd(0);
}
}
#if _APP_CAP_FUNC_SCORING
else if(gOSD_state.etCur_dsp == DISPLAY_SCORE)// Qian liping 060927
{
SH_GfxShowCanvas(SH_CANV1, FALSE );
OsdScoringTimerSet(0,TIMER_DISABLE);
OSD_SetMainDisplay(gOSD_state.etPrev_dsp,SYS_WAIT);
OSD_SetIconDisplay(ICON_KEEP, NULL, SYS_NO_WAIT );
}
#endif
#if _APP_CAP_OSD_DIGEST//clina 061009
else if(gOSD_state.etCur_dsp == DISPLAY_DIGEST&&gOSD_state.etPrev_dsp == DISPLAY_DIGEST_MENU)
{
gDigestTimeOut=TRUE;
OSD_SetMainDisplay(DISPLAY_DIGEST_MENU, SYS_NO_WAIT);
//OSD_ChangeDisplay(OSD_CTRL_RETURN_DIGESTMENU, SYS_NO_WAIT);
}
#endif
#if _COP_SYS_REGION_CODE//clina 061026
else if(gOSD_state.etCur_dsp == DISPLAY_RC_MSG)
OSD_SetMainDisplay(DISPLAY_OPEN, SYS_NO_WAIT);
#endif
else
{
OSD_SetMainDisplay(DISPLAY_OFF, SYS_NO_WAIT);
}
}
/******************************************************************************
* Function name : OsdNumericTimerExpire
* Arguments :
* IN
* OUT
* INOUT
* Return : VOID
* By : Taejin Kwon
* Description : Function for timer expiration
******************************************************************************
*/
VOID OsdNumericTimerExpired( UNSIGNED id )
{
#if 1 //wanglin 20061010
myKeyMsgSender(RC_KEY_ENTER);
#else
DiscType_t disc;
BYTE2 temp_2dig = GetTempValue(2);
disc = GetDiscState();
if( disc == SVCD_DISC || disc == VCD_DISC || disc == CD_DA )
{
if( IsNumericAllowed(temp_2dig) == TRUE )
{
if( temp_2dig!= 0 )
UiSelectAndActive( (UCHAR) temp_2dig);
}
}
#if _APP_CAP_NAV_DVD_VIDEO
if( disc == DVDV_DISC || disc == DVDA_DISC)
{
GuiDvdvDefaultEnter();
}
#endif
if (S5H_GetAppType() == APP_MMN)
{
#if _APP_CAP_KEY_SELECTION_TIMEOUT
Key_t tx;
SYS_RETURN ret;
tx.key_data = RC_KEY_ENTER;
tx.param = 0;
ret = SysSendMsg( &gQ_key, &tx, sizeof(Key_t), SYS_NO_WAIT, 0 );
if( ret == SYS_RETURN_FAIL )
{
SysPrintf("\n[KEY SENDER] Cannot send message");
InitTempValueState();
}
#else /* _APP_CAP_KEY_SELECTION_TIMEOUT */
MmpShowClearNoticeStr();
#endif /* _APP_CAP_KEY_SELECTION_TIMEOUT */
}
else
{
OSD_SetIconDisplay(ICON_KEEP, NULL, SYS_NO_WAIT);
SetTempValueSetFlag(FALSE);
InitTempValueState();
}
/*
* To support, tray close by numeric key
*/
{
SH_FEState_et state;
state = SH_FE_GetState();
if( state == SH_FE_STATE_OPEN || state == SH_FE_STATE_OPENING ||
state == SH_FE_STATE_OPENED )
{
SH_FE_Load();
gTray_open = FALSE;
}
}
#endif
}
/******************************************************************************
* Function name : OsdIconTimerExpire
* Arguments :
* IN
* OUT
* INOUT
* Return : VOID
* By : Taejin Kwon
* Description : Function for timer expiration
******************************************************************************
*/
VOID OsdIconTimerExpired( UNSIGNED id )
{
if(gOSD_state.etCur_icon==ICON_RC_CODE)
{
InitTempValueState();
}
if( gLoading_on == TRUE ) // Qian liping 060510: support in loading state.
OSD_SetIconDisplay( ICON_LOADING, NULL, SYS_NO_WAIT );
else
OSD_SetIconDisplay(ICON_KEEP, NULL, SYS_NO_WAIT);
}
#if _APP_CAP_FUNC_SCORING
/******************************************************************************
* Function name : OsdScoringTimerSet
* Arguments :
* IN
* OUT
* INOUT
* Return : VOID
* By : Qian liping 060927
* Description : Function for timer expiration
******************************************************************************
*/
VOID OsdScoringTimerSet( SysTimeTick_t time, SysEnable_t set )
{
SYS_RETURN status;
if( set == TIMER_DISABLE )
SH_MixSetGfxDoubleSize(SH_CANV1, FALSE);
status = SysResetTimer(&gTimer_score_osd, OsdScoreTimerExpired, time, time, set, 0 );
if( status == SYS_RETURN_FAIL )
{
SysPrintf(" ..... [FAIL]\n");
}
}
/******************************************************************************
* Function name : OsdScoreTimerExpired
* Arguments :
* IN
* OUT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -