📄 key_receive.c
字号:
if(main_state == NO_DISC || main_state == MAIN_OPEN \ || (!VolumeCtrlAvail()) #if !_APP_CAP_AUD_KARAOKE_IN_DTS//BY QQ 050902 || (GetCddaDiscLoaded() && GetDtsDiscLoaded()) \ || ((GetDiscState() == DVDV_DISC) && (GetDvdvAudioCodingMode() == C_MODE_DTS))#endif/*_APP_CAP_AUD_KARAOKE_IN_DTS*/ ) { OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT); return; }#if _APP_CAP_AUD_KARAOKE SetupInfoGetMenuKaraoke(&karaoke); /* if(1): In case that there are no RC_KEY_KEY_ADD and RC_KEY_KEY_Reduce, while karaoke mic_setup is toggle_off, jump to VOL_TYPE_KEY, else jump to VOL_TYPE_MIC. use VOL_TYPE_MAIN. if(0): In case that there has defined RC_KEY_KEY_ADD and RC_KEY_KEY_Reduce, while karaoke mic_setup is toggle_off, jump to VOL_TYPE_MAIN, else jump to VOL_TYPE_MIC. It should change according the custom requirement. */ if( 1 ) vol_starttype = (karaoke.mic_setup == TOGGLE_ON)? VOL_TYPE_MIC : VOL_TYPE_KEY; else vol_starttype = (karaoke.mic_setup == TOGGLE_ON)? VOL_TYPE_MIC : VOL_TYPE_MAIN;#endif if(osd_state->etCur_icon == ICON_VOLUME) { vol_oldtype = osd_state->etVolume_type; if( func_type[vol_oldtype]== VOL_TYPE_NULL) { vol_newtype =vol_starttype; } else { vol_newtype =vol_oldtype+1; while( func_type[vol_newtype]== 0xff) { vol_newtype++; } } SetDisplayVolOsdTypeState(vol_newtype); } else // First draw the OSD. { SetDisplayVolOsdTypeState(vol_starttype); } OSD_SetIconDisplay(ICON_VOLUME, NULL, SYS_NO_WAIT);}#else /*_APP_CAP_AUD_FUNCTION_KEY*//******************************************************************************* Function name : GuiVolCtrl* Arguments : * IN UCHAR data* * OUT * I/O * Return : VOID * * By : Lu Shuai* Description : * Revision : 1.0 *******************************************************************************/ VOID GuiVolCtrl(UCHAR data){ OSD_State_st *osd_state; SetMainState_t main_state; osd_state = OSD_GetState(); main_state = GetMainState(); /*if(osd_state->etCur_icon == ICON_LOADING || main_state == MAIN_LEADIN) return;*/ if (! VolumeCtrlAvail()) { OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT); return; } if(osd_state->etCur_icon == ICON_VOLUME) { if(data == RC_KEY_VOLUME_ADD) { SH_AUD_SetVolume( TRUE ); } else if(data == RC_KEY_VOLUME_REDUCE) { SH_AUD_SetVolume( FALSE ); } } /* (yanglu, 051027) */ OSD_SetIconDisplay(ICON_VOLUME, NULL, SYS_NO_WAIT); if( SH_AUD_GetMasterMute() ) { SH_AUD_SetMasterMute(!SH_AUD_GetMasterMute()); } if(osd_state->etCur_dsp == DISPLAY_EXPLORER) MmpShowNoticeString(MMP_NOTICE_DEFAULT, NULL);}#endif /*_APP_CAP_AUD_FUNCTION_KEY*/#endif/*_APP_CAP_FUNC_VOLUM_CONTOL*//******************************************************************************* Function name : SpecialKeyUpdateInSetup* Arguments : * IN UCHAR data* * OUT * I/O * Return : VOID * * By : Lu Shuai* Description : * Revision : 1.0 *******************************************************************************/ VOID SpecialKeyUpdateInSetup( UCHAR data ){ MenuDom2State_et d2_state; OSD_State_st *osd_state; osd_state = OSD_GetState(); switch( data ) {#ifndef _MTK_STYLE#if _APP_VALUE_VIDEO_OUT_NUM case RC_KEY_VIDEOMODE: d2_state = MENU_D2_DISP_VOUT; break;#endif case RC_KEY_VIDEOSCAN: d2_state = MENU_D2_DISP_SCAN; break;#endif case RC_KEY_NTSC_PAL: d2_state = MENU_D2_DISP_TV; break; default: return; } // update setup dom2 or dom 3 if( osd_state->etCur_dsp == DISPLAY_SETUP && osd_state->etSetup_dsp.d2_list == d2_state) { if(osd_state->etSetup_dsp.depth == MENU_DOM_DEPTH_2 ) OSD_ChangeSetupSelD2(MENU_D1_SUB_DISP, d2_state, d2_state, SYS_WAIT); else if( osd_state->etSetup_dsp.depth == MENU_DOM_DEPTH_3) { osd_state->etSetup_dsp.depth = MENU_DOM_DEPTH_2; SetMenuState(&osd_state->etSetup_dsp); OSD_ChangeSetupSelD2(MENU_D1_SUB_DISP, d2_state, d2_state, SYS_WAIT); } } SH_writeEepromFromBuffer();}#if _APP_CAP_FUNC_MASTER_MUTE/******************************************************************************* Function name : GuiMute* Arguments : * IN VOID* * OUT * I/O * Return : VOID * * By : Liu renliang* Description : * Revision : 1.0 *******************************************************************************/ VOID GuiMute(VOID){ OSD_State_st *osd_state; SetMainState_t main_state; osd_state = OSD_GetState(); main_state = GetMainState(); /*if(osd_state->etCur_icon == ICON_LOADING || main_state == MAIN_LEADIN) return;*/ if (! VolumeCtrlAvail()) { OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT); return; } //play MMN audio file, press mute key repeatly and quickly, //sometime the mute OSD keep ,but still come out sound ,or no mute OSD and no sound. SH_AUD_SetMasterMute(!SH_AUD_GetMasterMute()); if(SH_AUD_GetMasterMute()) { if(osd_state->etCur_dsp == DISPLAY_EXPLORER) { if(osd_state->etExp_state.etInfo2>=EXPLORER_MODE_INFO2MODE && osd_state->etExp_state.etInfo2<=EXPLORER_MODE_INFO2RPT ) MmpReturnInfo2Normal(); if(osd_state->etCur_icon == ICON_VOLUME) OSD_SetIconDisplay(ICON_CLEAR, NULL, SYS_NO_WAIT); #if _APP_CAP_OSD_MMP_MUTE_IN_FRONT MmpShowNoticeString(MMP_NOTICE_MUTE, NULL);#else MmpShowNoticeString(MMP_NOTICE_DEFAULT, NULL);#endif/* _APP_CAP_OSD_MMP_MUTE_IN_FRONT */ } else { OSD_SetIconDisplay(ICON_KEEP, NULL, SYS_NO_WAIT); } } else { if(osd_state->etCur_dsp == DISPLAY_EXPLORER) { if(osd_state->etExp_state.etInfo2>=EXPLORER_MODE_INFO2MODE && osd_state->etExp_state.etInfo2<=EXPLORER_MODE_INFO2RPT ) MmpReturnInfo2Normal();#if _APP_CAP_OSD_MMP_MUTE_IN_FRONT MmpShowNoticeString(MMP_NOTICE_MUTEOFF, NULL);#else MmpShowNoticeString(MMP_NOTICE_DEFAULT, NULL);#endif/* _APP_CAP_OSD_MMP_MUTE_IN_FRONT */ } else { // Support in loading state if( gLoading_on == TRUE ) OSD_SetIconDisplay(ICON_LOADING,NULL, SYS_NO_WAIT); else#ifdef _MTK_STYLE OSD_SetIconDisplay(ICON_MUTE_OFF, NULL, SYS_NO_WAIT);#else OSD_SetIconDisplay(ICON_KEEP, NULL, SYS_NO_WAIT);#endif } } //SH_AUD_SetMasterMute(!SH_AUD_GetMasterMute());#if 0 //gaoping 20060425 problem 198 play MMN audio file, press mute key repeatly and quickly, sometime the mute OSD keep ,but still come out sound ,or no mute OSD and no sound. if(osd_state->etCur_dsp == DISPLAY_EXPLORER) MmpShowNoticeString(MMP_NOTICE_DEFAULT, NULL);#endif }#endif /* _APP_CAP_FUNC_MASTER_MUTE*//******************************************************************************* Function name : VolumeCtrlAvail* Arguments : * IN VOID* * OUT * I/O * Return : BOOL * * By : Liu renliang* Description : * Revision : 1.0 *******************************************************************************/ BOOL VolumeCtrlAvail(VOID){ OSD_State_st *osd_state; osd_state = OSD_GetState(); /*if( GetMainState() == MAIN_OPEN ) return FALSE; if (GetDiscState() == NO_DISC || GetDiscState() == DUMMY_DISC) return FALSE;*/ if (osd_state->etCur_dsp == DISPLAY_SETUP||osd_state->etCur_dsp == DISPLAY_PROGRAM\ ||osd_state->etCur_dsp == DISPLAY_DIGEST_MENU ||osd_state->etCur_dsp == DISPLAY_FAT_DEVICE) //wanglin 20061017 return FALSE;/* <<< @: 5008CHN-XXX.Wang Jin 051114: When support dts dec,don't block the volume contorl. */ if(!SH_AUD_support_DTSDEC()) { if(GetDtsDiscLoaded()) return FALSE; } /* >>> @: 5008CHN-XXX.Wang Jin 051114: When support dts dec,don't block the volume contorl. */ #if !_APP_CAP_FUNC_CONCURRENT_PLAY if(S5H_GetAppType() == APP_MMN && GetMmpFileType()==MMP_IMAGE_FILE) //Lu Shuai 060104 fixed return FALSE;#endif return TRUE;}#if _SUPPORT_TVG_FUNCTION_ //(weilf)20060705extern SysSema_t _gSema_TVG_AD; #endif/******************************************************************************* Function name : CheckKeyInput* Arguments : * IN VOID* * OUT * I/O * Return : VOID * * By : Taejin Kwon* Description : Check a key input, convert to GUI command and then send it* Revision : 1.0 *******************************************************************************/ VOID CheckKeyInput( VOID ){ UCHAR data, param, mode; SysSize_t rsize; /* dummy */ Key_t rx; SYS_RETURN ret; /* * Check message queue for key */ ret = SysReceiveMsg( &gQ_key, &rx, sizeof( Key_t ), &rsize, SYS_WAIT, 0 ); if(ret == SYS_RETURN_SUCCESS) { data = rx.key_data; mode = rx.key_mode; param = rx.param;#if _SUPPORT_TVG_FUNCTION_ //(weilf)20060705 if((gSetup_info.TVG.activation_flag != 1)&& gSetup_info.TVG.number_ad !=0) SysReleaseSema(&_gSema_TVG_AD, NULL); #endif #if 1 /* (yanglu, 051109) */ /************************************* Preprocess of PLAYPAUSE / RESUME... keys ***************************************/ if( PreProcessofKeys( &data ) ) return;#endif#if _APP_CAP_FUNC_EMERGENCV_POWER_RESUME if( data == RC_KEY_SAVE_RESUME ) { DiscType_t disc; disc = GetDiscState(); if( disc == DVDV_DISC || disc == DVDA_DISC || disc == SVCD_DISC || disc == VCD_DISC || disc == CD_I || disc == CD_DATA || disc == DVD_DATA || disc == USB_DATA || disc == FX_DATA || disc == CD_DA) ApplSaveResumeInfo(TRUE); return; }#endif /************************************* Disable if pause/stop/saver timer is on ***************************************/ if(KeyInputCheckTimer(data)) return; /************************************* Handle common keys with higher priority - same to all kinds of discs, and inspite of play status - Power / OpenClose / NtscPal / VideoMode / VideoScan / Mute / Func / Volume ***************************************/ if ( KeyInputCheckHLSpecialKey(data, param) ) return; /************************************* Handle keys in special osd and zoom status - same to all kinds of discs - SETUP / PROGRAM / REPEAT / MODE_SEL / STEREO / SEARCH ***************************************/ if ( KeyInputCheckDsp(data, param) ) return; /************************************* Confirm the key validity - for each kind of disc - Stop status / dvd menu domain / vcd menu cd-da / cdg / mmn... ***************************************/ if(KeyInputCheckSpecialState(data, param)) return; /************************************* Handle common keys with lower priority - same to all kinds of discs - Repeat / RepeatAB / Program / Goto Karaoke / 3D / Reveberation ***************************************/ if ( KeyInputCheckLLSpecialKey(data, param) ) return; /************************************* Handle keys on different APP type ***************************************/ switch( GetDiscState() ) { case DVDV_DISC: if ( S5H_GetAppType() == APP_DVD ) ChangeKeyToDvdvCommand( data, param ); break;#if _APP_CAP_NAV_DVD_AUDIO case DVDA_DISC: if ( S5H_GetAppType() == APP_DVD ) ChangeKeyToDvdaCommand( data, param ); break;#endif case SVCD_DISC: case CD_DA: case VCD_DISC: case CD_I: case HQVCD_DISC: #if _APP_CAP_NAV_GAME_CD if(gVCDGameDisc == TRUE) { ChangeKeyToGameCdCommand(data, param); break; } #endif if ( S5H_GetAppType() == APP_VCD ) ChangeKeyToXvcdCommand( data, param ); break; case CD_DATA: case DVD_DATA: #if _APP_CAP_NAV_USB_DISC case USB_DATA:#endif#if _APP_CAP_NAV_FX_DATA case FX_DATA:#endif if ( S5H_GetAppType() == APP_MMN ) ChangeKeyToMmpCommand(data,param); break; default: ChangeKeyToCommand( data, param ); break; } } else { return; } } /* function end of CheckKeyInput *//******************************************************************************* Function name : ReceiveKey* Arguments : * IN SysArgc_t argc, SysArgv_t *argv* argc : for task proto typing, argv : for task proto typing * OUT * I/O * Return : VOID * * By : Taejin Kwon* Description : * Revision : 1.0 *******************************************************************************/ VOID ReceiveKey( SysArgc_t argc, SysArgv_t *argv ){ while(1) { CheckKeyInput(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -