📄 key_handler_dvda.c
字号:
/****************************************************************************** * Filename : Change_key_dvda.c * Start : 2002. 11. 6. * By : Taejin Kwon * Contact : tj1kwon@samsung.co.kr * Description : Key to UI command for Dvd audio. ****************************************************************************** *//****************************************************** * 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_handler_setup.h"#include "CUSTOM/Key_receive.h"#include "CUSTOM/Key_defs.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"/****************************************************** * Global variables / functions *****************************************************//****************************************************** * Extern variables *****************************************************//****************************************************** * Extern variables *****************************************************/extern SysQueue_t gQ_gui;/****************************************************** * functions *****************************************************/#if _APP_CAP_NAV_DVD_AUDIO/* * GUI command lookup table for DVD Video * Key_def.h file has the index of key list for thist arrary. */VOID (*GuiDvdaCmd[])( UCHAR param ) = { GuiDvdaNum0, /* 0x00 */ GuiDvdaNum1, GuiDvdaNum2, GuiDvdaNum3, GuiDvdaNum4, GuiDvdaNum5, GuiDvdaNum6, GuiDvdaNum7, GuiDvdaNum8, GuiDvdaNum9, GuiNullFunction, GuiPower, GuiOpenClose, GuiPlayPause, GuiDvdaPause, GuiPlayPause, GuiNullFunction, GuiStop, GuiDvdaSetup, GuiDvdaAudioId, GuiDvdaSubtitleId, /* 0x10 */ GuiDvdaAngleId, GuiDvdaTitleMenu, GuiDvdaRootMenu, GuiDvdaPrevChapter, GuiDvdaNextChapter, GuiDvdaScanForward, GuiDvdaScanBackward, GuiDvdaDisplay, GuiNullFunction, GuiDvdaProgram, GuiDvdaRepeat, GuiDvdaRepeatAB, GuiDvdaBookmark, GuiDvdaReturn, GuiDvdaUp, GuiDvdaDown, GuiDvdaLeft, /* 0x20 */ GuiDvdaRight, GuiDvdaEnter, GuiDvdaClear, GuiNullFunction, GuiDvdaZoom, GuiDvda3D, GuiDvdaSlow, /* 0x27 */ GuiNullFunction, GuiNullFunction, GuiNullFunction, GuiNullFunction, GuiNullFunction, GuiNullFunction, GuiNullFunction, GuiNullFunction, GuiNullFunction, GuiNullFunction, GuiNullFunction, GuiNullFunction};/****************************************************************************** * Function name : ChangeKeyToDvdaCommand * Arguments : mode : key mode * data : key input data * Return : VOID * By : Taejin Kwon * Description : Send Power control to GUI queue * Revisions : ****************************************************************************** */VOID ChangeKeyToDvdaCommand( UCHAR data, UCHAR param ){ UCHAR par; if( GuiDvdvHandleSpecialOsd(data) ) /* (yanglu, 051024) */ return; if(IsMenuDomainKeyForbidden( data )) return; par = param; if( data < RC_KEY_UNKNOWN ) (*GuiDvdaCmd[data])( par );}/****************************************************************************** * Function name : GuiDvdaPrevChapter * Arguments : * Return : VOID * By : Taejin Kwon * Description : go to previous ****************************************************************************** */VOID GuiDvdaPrevChapter( UCHAR param ){ UiCmdGeneral( UOP_DVDA_PREV_TRACK); /*JSB, link track*/ }/****************************************************************************** * Function name : GuiDvdaNextChapter * Arguments : * Return : VOID * By : Taejin Kwon * Description : Go to next ****************************************************************************** */VOID GuiDvdaNextChapter( UCHAR param ){ UiCmdGeneral( UOP_DVDA_NEXT_TRACK); /*JSB, link track*/}/****************************************************************************** * Function name : GuiDvdaSlowForward * Arguments : * Return : VOID * By : Taejin Kwon * Description : ****************************************************************************** */VOID GuiDvdaSlowForward( UCHAR param ){ ScanCtrl_t scan; UCHAR speed; UCHAR direction; GetScanControlState( &scan ); speed = scan.speed; direction = scan.direction; 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: speed = PM_SPEED_X1; /* return to first speed */ break; default: speed = PM_SPEED_X1_32; break; } UiScanForward( UOP_DVDA_FORWARD_SCAN, speed );}/****************************************************************************** * Function name : GuiDvdaSlowBackward * Arguments : * Return : VOID * By : Taejin Kwon * Description : ****************************************************************************** */VOID GuiDvdaSlowBackward( UCHAR param ){ ScanCtrl_t scan; UCHAR speed; UCHAR direction; GetScanControlState( &scan ); speed = scan.speed; direction = scan.direction; switch( speed ) { 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: speed = PM_SPEED_X1; /* return to first speed */ break; default: speed = PM_SPEED_X1_8; break; } UiScanForward( UOP_DVDA_BACKWARD_SCAN, speed );}/****************************************************************************** * Function name : GuiDvdaScanForward * Arguments : * Return : VOID * By : Taejin Kwon * Description : ****************************************************************************** */VOID GuiDvdaScanForward( UCHAR param ){ GuiDvdvScan(RC_KEY_FF, param);#if 0 ScanCtrl_t scan; UCHAR speed; UCHAR direction; UCHAR par; SetMainState_t main; par = param; /* Check previous main state */ /* In slow motion, use another routine by their direction.*/ main = GetMainState(); if( main == MAIN_SF ) { GuiDvdaSlowForward( par ); return; } else if( main == MAIN_SR ) { UiScanForward( UOP_DVDA_FORWARD_SCAN, PM_SPEED_X1_8 ); return; } /* Set new fast forward scan speed */ SysPrintf("\nDVDA Fast Forward Scan key."); GetScanControlState( &scan ); speed = scan.speed; direction = scan.direction; if( scan.direction == PM_DIR_BACKWARD) { speed = PM_SPEED_X1; direction = PM_DIR_FORWARD; } else { switch( speed ) { case PM_SPEED_X1: speed = PM_SPEED_X2; break; case PM_SPEED_X2: speed = PM_SPEED_X4; break; case PM_SPEED_X4: speed = PM_SPEED_X8; break; case PM_SPEED_X8: speed = PM_SPEED_X16; break; case PM_SPEED_X16: speed = PM_SPEED_X32; break; case PM_SPEED_X32: speed = PM_SPEED_X128; break; case PM_SPEED_X128: /* This is maximum speed, so don't use this key */ SysPrintf("\nCannot speed up"); return; default: speed = PM_SPEED_X1; break; } } SysPrintf("\nGuiDvdaScanForward new speed is %d", speed); UiScanForward( UOP_DVDA_FORWARD_SCAN, speed );#endif}/****************************************************************************** * Function name : GuiDvdaScanBackward * Arguments : * Return : VOID * By : Taejin Kwon * Description : ****************************************************************************** */VOID GuiDvdaScanBackward( UCHAR param ){ GuiDvdvScan(RC_KEY_FR, param);#if 0 ScanCtrl_t scan; UCHAR speed; UCHAR direction; UCHAR par; SetMainState_t main; par = param; /* Check previous main state */ /* In slow motion, use another routine by their direction.*/ main = GetMainState(); if( main == MAIN_SF ) { UiScanForward( UOP_DVDA_BACKWARD_SCAN, PM_SPEED_X1_8 ); return; } else if( main == MAIN_SR ) { GuiDvdaSlowBackward( par ); return; } /* Set new fast backward scan speed */ SysPrintf("\nDVDA Fast Backward Scan key."); GetScanControlState( &scan ); speed = scan.speed; direction = scan.direction; if( scan.direction == PM_DIR_FORWARD ) { speed = PM_SPEED_X1; direction = PM_DIR_BACKWARD; } else { switch( speed ) { case PM_SPEED_X1: speed = PM_SPEED_X2; break; case PM_SPEED_X2: speed = PM_SPEED_X4; break; case PM_SPEED_X4: speed = PM_SPEED_X8; break; case PM_SPEED_X8: speed = PM_SPEED_X16; break; case PM_SPEED_X16: speed = PM_SPEED_X32; break; case PM_SPEED_X32: speed = PM_SPEED_X128; break; case PM_SPEED_X128: /* This is maximum speed, so don't use this key */ SysPrintf("\nCannot speed up"); return; default: speed = PM_SPEED_X1; break; } } SysPrintf("\nGuiDvdaScanBackward new speed is %d", speed); UiScanBackward( UOP_DVDA_BACKWARD_SCAN, speed );#endif}/****************************************************************************** * Function name : GuiDvdaSlow * Arguments : * Return : VOID * By : Taejin Kwon * Description : ****************************************************************************** */VOID GuiDvdaSlow( UCHAR param ){ SetMainState_t main; ScanCtrl_t scan; UCHAR direction; /* Check previous main state */ main = GetMainState(); if( main != MAIN_PLAY ) /* Slow can start when normal play */ return; SysPrintf("\nSlow motion key."); GetScanControlState( &scan ); direction = scan.direction; UiScanForward( UOP_DVDA_FORWARD_SCAN, PM_SPEED_X1_8 );}/****************************************************************************** * Function name : GuiDvdaTitleMenu * Arguments : * Return : VOID * By : Taejin Kwon * Description : * Revisions : ****************************************************************************** */VOID GuiDvdaTitleMenu( UCHAR param ){ Uop_t tx; SysPrintf("\nDVDA Title Menu key."); tx.uop_id = UOP_DVDA_MENU; tx.param.dvdv_menu.menu_id = PARAM_MENU_ID_TITLE; SysSendMsg( &gQ_gui, &tx, sizeof(Uop_t), SYS_NO_WAIT, 0 );}/****************************************************************************** * Function name : GuiDvdaRootMenu * Arguments : * Return : VOID * By : Taejin Kwon * Description : * Revisions : ****************************************************************************** */VOID GuiDvdaRootMenu( UCHAR param ){ Uop_t tx; SysPrintf("\nDVDA Root Menu key."); tx.uop_id = UOP_DVDA_MENU; tx.param.dvdv_menu.menu_id = PARAM_MENU_ID_ROOT; SysSendMsg( &gQ_gui, &tx, sizeof(Uop_t), SYS_NO_WAIT, 0 );}/****************************************************************************** * Function name : GuiDvdaSetup * Arguments : * Return : VOID * By : Taejin Kwon * Description : * Revisions : ****************************************************************************** */VOID GuiDvdaSetup( UCHAR param ){ SetMainState_t main; main = GetMainState(); if( main != MAIN_STOP ) /* Setup can use in stop mode. */ { SysPrintf("[KEY CHANGE DVDA] Available in STOP mode"); return; } GuiSetUp();}/****************************************************************************** * Function name : GuiDvdaEnter * Arguments : * Return : VOID * By : Taejin Kwon * Description : * Revisions : ****************************************************************************** */VOID GuiDvdaEnter( UCHAR param ){ TempKeeper_t data; GetTempValueState( &data ); UiCmdGeneral( UOP_DVDA_BTN_ACTIVATE );}/****************************************************************************** * Function name : GuiDvdaPause * Arguments : * Return : VOID * By : Shanbin Jiang * Description : * Revisions : ****************************************************************************** */VOID GuiDvdaPause( UCHAR param ){#if _APP_CAP_KEY_SEPERATE_PLAY UiCmdGeneral( UOP_PAUSE); #else UiCmdGeneral( UOP_PLAYPAUSE );#endif}/****************************************************************************** * Function name : GuiDvdaUp * Arguments : * Return : VOID * By : Taejin Kwon * Description : * Revisions : ****************************************************************************** */VOID GuiDvdaUp( UCHAR param ){ OSD_State_st *osd_state; osd_state = OSD_GetState(); switch( osd_state->etCur_dsp ) { case DISPLAY_SUBTITLE: break; default: UiCmdGeneral( UOP_DVDA_BTN_UP ); break; }}/****************************************************************************** * Function name : GuiDvdaDown * Arguments : * Return : VOID * By : Taejin Kwon * Description : * Revisions : ****************************************************************************** */VOID GuiDvdaDown( UCHAR param ){ OSD_State_st *osd_state; osd_state = OSD_GetState(); switch( osd_state->etCur_dsp ) { case DISPLAY_SUBTITLE: break; default: UiCmdGeneral( UOP_DVDA_BTN_DOWN ); break; }}/****************************************************************************** * Function name : GuiDvdaLeft * Arguments :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -