ir_parser.c
来自「OSD显示,单片机实现,ICCAVR! 代码风格严谨,为高人所写.我仅为了上传换」· C语言 代码 · 共 1,847 行 · 第 1/4 页
C
1,847 行
if (gIsMidiSelMenu&&bHoldInput ) //xlluo 04-11-26
return; //xlluo for irdebug 04-11-23
#endif
#ifdef QSI_SHOW_ERR_RATE
if(QSI_PIPO_TEST==0x1)
irc_func_table[rx]();
#endif
if(show_logo)
{
return;
}
#ifdef MIDI_EJECT_PASSWORD //ouyang add for eject password 2004-11-20 15:10
extern UINT8 midi_open_pwd_start;
extern UINT8 midi_open_pwd_finished;
#endif
#ifdef MIDI_EJECT_PASSWORD //xlluo 04-12-06
if (midi_open_pwd_start&&(!midi_open_pwd_finished))
{
switch(rx)
{
case IRC_0:
case IRC_1:
case IRC_2:
case IRC_3:
case IRC_4:
case IRC_5:
case IRC_6:
case IRC_7:
case IRC_8:
case IRC_9:
case IRC_SELECT:
case IRC_POWER:
printf("haha\n");
break;
default:
printf("forbidden\n");
return;
}
}
#endif//#ifdef MIDI_EJECT_PASSWORD //ouyang add for eject password 2004-11-20 15:10
#ifdef RECORD_KEY//zhaoyanhua add 2003-11-19 16:37
//NOTE:
// if you want change the RECORD_OSD_SHOW_TIME value,
// must change it in file sysmain2.c at the same time.
//zhaoyanhua 2003-12-12 15:18
#define RECORD_OSD_SHOW_TIME 14
//when show RECORD OSD message, other keys except IR_RECORD will
// break out the OSD message and excute its function.
if(same_disc_flag!= 0)
{
if(rx != IRC_RECORD)
{
same_disc_flag = RECORD_OSD_SHOW_TIME;
//to keep this IR code.
//excute IR function after exit RECORD OSD message.
#ifdef MODIFY_RECORD_KEY//2004-3-30 19:16
if(rx == IRC_EJECT||rx == IRC_POWER)//2004-3-30 19:14
#endif
keep_cmd_code = rx;
//regs0->iop_data[IR_PORT]|=IR_RDY;
return;
}
}
#endif
#ifdef MIC_FUNCTION_KEY
#ifdef BBK_DVD//zhaoyanhua add 2003-11-30 12:29
extern BYTE bFuncStep;
//if user enter other keys except IRC_MIX__FUNCTION/UP/DOWN,
// it will excute its corresponding function.
if((rx !=IRC_MIX_FUNC ) && (rx != IRC_UP) && (rx != IRC_DOWN)&&(bFuncStep))
{
osd_tog_region(REGION1, OSD_OFF);
bFuncStep = 0;
}
#endif
#endif //MIC_FUNCTION_KEY
if(user_input_pwd==1)//nono 20020604
{
if( (rx<=IRC_10)||(rx==IRC_SELECT)||
(rx==IRC_CLEAR)||(rx==IRC_PLAY_RESUME)||
(rx==IRC_POWER)||(rx==IRC_EJECT)||
(rx==IRC_PLAY_SELECT)||(rx==IRC_PAUSEPLAY) )
{
if((rx==IRC_EJECT)||(rx==IRC_POWER))
{
user_input_pwd=2;
#ifdef DVD_AUDIO//2004-3-5 17:48
if(pDSV->hid_gp_chk_pwd==2)
{
regs0->iop_data[IR_PORT]|=IR_RDY;
//full_scrn=0; //t_disp=disp_mode;
osd_init();
return;
}
#endif//DVD_AUDIO
}
//Maoyong 2004.03.06 , Record disc check Level SYSTEM_SETUP_BROWSER,
//Avoid 2 times "ircmd_eject_toggle" and then can't do right TRAY OUT
#ifdef CHECK_RECORD_DISK_PARENT_LVL
if( !((system_state == SYSTEM_SETUP_BROWSER) && (rx== IRC_EJECT)) )
#endif
#ifdef SUPPORT_SPI_QSI
if( /*(rx == IRC_STOP) || */(rx == IRC_PLAY) /*|| (rx == IRC_PAUSE)*/ )
spi_cmd_func_table[uSpiRxData]();
else
#endif
irc_func_table[rx]();
if( (rx==IRC_SELECT)||(rx==IRC_PLAY_RESUME)||
(rx==IRC_PLAY_SELECT)||(rx==IRC_PAUSEPLAY))
user_input_pwd=0;
}
if((rx!=IRC_EJECT)&&(rx!=IRC_POWER))
return;
}
if( RejectBySWD( rx ) )
return;
extern UINT8 gIsMidiSelMenu __attribute__((unused)); //mimitsai add 2004-12-03 17:13
#ifdef DIVX_DRM
if( ( invalid & DRM_MENU ) && ( full_scrn & DIVX_DRM_MENU ) )
{
#ifdef IR_DBG
printf( "Disable key in DRM_MENU\n" );
#endif
return;
}
else
#endif
#ifdef SUPPORT_MIDI //axel add for "FF"、“pause”etc.are invalid when press "PREVIEW"2004.09.21
if ((gIsMidiSelMenu)&&(rx==IRC_PREVIEW))
{
need_run_cmd=0;
#ifdef IR_DBG
printf("<ir_invalid 15>\n");
#endif
}
else
#endif
#if defined(SUPPORT_MIDI)&&defined(NEW_SEARCH_OSD) //axelchen add for "display"
extern UINT8 gIsMidiSelMenu;
if (gIsMidiSelMenu)
{
if((rx==IRC_GOTO)||(rx==IRC_DISPLAY))
need_run_cmd=0;
}
else
#endif// defined(SUPPORT_MIDI)&&defined(NEW_SEARCH_OSD)
if(rx==IRC_RANDOM)
{
#if !defined(PRESS_RANDOM_IF_INVID_DERECT_SHOW)//ZXB 2005-5-16 15:36
if(action_click)
#endif
{
if((invalid&(0x01<<play_state))
#ifdef WHEN_PROG_PLAYING_PUSH_RANDOM_SHOW_INVALID //ZXB 2005-5-16 15:36
||((invalid&PROG_PLAY)&&prog_cnt && (!setup_IsSettingPassword()))
#endif
)
{
#ifdef IR_DBG
printf("<ir_invalid 13>\n");
#endif
need_run_cmd=0;
}
}
}else if(invalid&(0x01<<play_state))
{
need_run_cmd=0;
#ifdef IR_DBG
printf("<ir_invalid 12>\n");
#endif
#ifdef PMP_UI /////////////////yangli
if(pFsJpeg->gifsState == FS_STATE_INIT)
need_run_cmd=1;
#endif
/* alan added 02-05-13 for FUSS : return to main setup menu when press IRC_RETURN */
//terry,0516,
//setup ->3d
#ifdef FUSS_DVD
if( (full_scrn&SETUP)&&(rx==IRC_RETURN) ) need_run_cmd=1;
#endif
}
else if( (invalid&HL)&&HL_exist)
{
#ifdef IR_DBG
printf("<ir_invalid 11>\n");
#endif
need_run_cmd=0;
}else if((invalid&STILL)&&still_timer)
{
#ifdef IR_DBG
printf("<ir_invalid 10>\n");
#endif
need_run_cmd=0;
}
#if defined(NINTAUS_DVD)
else if( (invalid&MENU)&&(is_menu()))//( psd_state==(PSD_SEL_LIST|PSD_PLAY_SEG)) )
#else
else if( (invalid&MENU)&&( psd_state==(PSD_SEL_LIST|PSD_PLAY_SEG)) )
#endif
{//terry,2002/9/11 04:08PM
//I'm not sure whether has bug.But I'm sure DVD non-hl menu may be pause/ff/bw/...
#ifdef IR_DBG
printf("<ir_invalid 9>\n");
#endif
need_run_cmd=0;
}
#ifdef VOB_SUBTITLE //joshua, 20050811, added for changing audio and sub-picture streams of VOB files
else if((invalid&(0x01<<(VCD_STATE_MAX-1+cd_type_loaded)))&&(GetCurrentFileType()!=CDROM_MP4)&&(GetCurrentFileType()!=CDROM_MPG)&&!(IS_DEC_MPEG2()))
#else
else if((invalid&(0x01<<(VCD_STATE_MAX-1+cd_type_loaded)))&&(GetCurrentFileType()!=CDROM_MP4)) //Jeff 20010928 (-1)
#endif
{
#ifdef IR_DBG
printf("<ir_invalid 8>\n");
#endif
need_run_cmd=0;
#ifdef SUPPORT_HDD_ACCESS
if(rx==IRC_SUBP || IRC_TITLEMENU) {
extern int do_copy_file();
printf("<SUB-TITLE>\n");
do_copy_file();
return;
}
#endif //SUPPORT_HDD_ACCESS
#if defined(SUPPORT_DVB_GUI_NEW)&&defined(DVB_IR_3D_ON)
if(Is_Dvb_State() && (full_scrn&SOUND))
{
need_run_cmd = 1;
}
#endif
}else if( (invalid&PROG_PLAY)&&prog_cnt && (!setup_IsSettingPassword()) )
{
#ifdef IR_DBG
printf("<ir_invalid 7>\n");
#endif
need_run_cmd=0;
}
#ifndef SUPPORT_GOTO_IN_JPEG_STATE//suqiaoli add 2003-11-20
else if( (invalid&JPEG)&&(Is_JPEG_STATE()) )
{
#ifdef IR_DBG
printf("<ir_invalid 4>\n");
#endif
need_run_cmd=0;
}
#endif
else if(keep_cmd_code != IR_CODE_MAX_NUM)//2004-3-30 19:19
{
#ifdef IR_DBG
printf("<ir_invalid 3>\n");
#endif
need_run_cmd=0;
}else if(dev_status_flag&DEV_DETECT_CSS)
{
#ifdef IR_DBG
printf("<ir_invalid 2>\n");
#endif
#ifdef PRE_NEXT_FLAG //axel, for invalid IRC_NEXT in bad discs 2004/7/12
if(rx==IRC_PREV)
{
PRE_FLAG=1;
#ifdef IR_DBG
printf("<PRE_FLAG>\n");
#endif
}
else if(rx==IRC_NEXT)
{
NEXT_FLAG=1;
#ifdef IR_DBG
printf("<NEXT_FLAG>\n");
#endif
}
#endif //#ifdef PRE_NEXT_FLAG
need_run_cmd=0;
}else if((invalid&DVD_PROHIBIT)&&(is_dvd_prohibit_key()||(goto_active==1)) )
{
#ifdef IR_DBG
printf("<ir_invalid 1>\n");
#endif
#ifdef PRE_NEXT_FLAG //axel, for invalid IRC_NEXT in bad discs 2004/7/12
if(rx==IRC_PREV)
{
PRE_FLAG=1;
#ifdef IR_DBG
printf("<PRE_FLAG>\n");
#endif
}
else if(rx==IRC_NEXT)
{
NEXT_FLAG=1;
#ifdef IR_DBG
printf("<NEXT_FLAG>\n");
#endif
}
#endif //PRE_NEXT_FLAG
if(rep_ab_mode!=REPEAT_FIND_B)
need_run_cmd=0;
}
//else if((invalid&BOOKMARK)&&(t_disp==3))//NONO 2-4-29 18:41
//need_run_cmd=0;
//else if( (invalid&GAME)&&(Is_GAME_STATE()) )//NONO 2-4-29 18:41
//need_run_cmd=0;
if(need_run_cmd!=2) { //terry,2002/5/16 10:37PM,
#ifdef SETUP_PROGRAM_IN_PLACE_UNDER_16M // 2004/01/14 yltseng
extern UINT8 g_uiOSDStatus;
if( g_uiOSDStatus & OSD_FULL_SCREEN_STATUS_WAIT_ATAPI_CMD_FINISH ||
g_uiOSDStatus & OSD_FULL_SCREEN_STATUS_WAIT_KERNEL_DECODE_FINISH )
return;
#endif
if(full_scrn)
{
if(StateChkKey[rx] & full_scrn)
{
//printf("State:%x rx:%d full_scrn:%x\n",StateChkKey[rx],rx,full_scrn);
#ifdef NEWSTYLE_WINDOW
if(full_scrn==MESSAGE)
{
//printf("StateChkKey[%d]: %d full_scrn=:%d\n",rx,StateChkKey[rx],full_scrn);
//if(rx == IRC_ZOOM)
//{
// invalid_key();
// return;
//}
exit_browse_func();
}
#endif
#ifdef DOUBLE_TITLE //susu add 2003-8-27 13:55
if (full_scrn & DOUBLETITLE)
{
exit_double_title();
}
#endif
if (full_scrn & SOUND)
{
#ifdef RETAIN_3D_IN_PREV_NEXT
if(!(rx==IRC_PREV || rx==IRC_NEXT)) //wuxiaofeng 2004-5-24
#endif
cancel_sound();//liweihua 2004-1-13 10:04
}
else if (full_scrn & PROGRAM) //add by shawn 20020218
{
#ifdef SDRAM_16Mb_Mode
#ifdef SDRAM_16MB_IRCMD_RETURN_WHEN_PROGRAM //linrc 2004-6-10 11:19
if((rx==IRC_ANGLE)||(rx==IRC_SUBP)||(rx==IRC_CHANNEL)||
(rx==IRC_PREV)||(rx==IRC_NEXT)||(rx==IRC_BACKWARD)||
(rx==IRC_FORWARD)||(rx==IRC_RETURN)||(rx==IRC_ZOOM) ||
(rx==IRC_SLOW)||(rx==IRC_REPEAT)||(rx==IRC_AB)||(rx==IRC_PAUSE)) return;
#endif
#ifdef NEW_STYLE_SETUP
if (rx ==IRC_SETUP)//zhaoyanhua add 2003-8-8 13:42
prog_state = 6;
#elif defined ( OP_PLAYMODE )//LIBING 2005-7-14 15:56
if(rx==IRC_MODE)
prog_state = 6;
#else
prog_state=3; // 3 means that ircmd_stop pressed when full_scrn==PROGRAM
prog_cnt = 0; //dingzhy add for 1x16
prog_func_clear(); //dingzhy add for 1x16
#endif//NEW_STYLE_SETUP
#ifdef OP_PLAYMODE//LIBING 2005-7-14 15:56
prog_func_off();
#endif
#endif//SDRAM_16Mb_Mode
//#ifdef JIEKE_DVD
//return;
//#else
#ifdef JIEKE_DVD
prog_cnt = 0;
#endif
prog_func_off();
#ifdef SDRAM_16Mb_Mode
resumeMSF=0;//nono 4-1-16 15:27
#endif//SDRAM_16Mb_Mode
//#endif
// re-load setup module
//LoadModual(MODUAL_AP2);
}
else if ((full_scrn & SETUP) || (full_scrn & CUSTM))
{
#ifdef NEW_STYLE_SETUP//2003-8-13 18:16
if(rx == IRC_TITLEMENU) return;
#endif//NEW_STYLE_SETUP
#ifdef SDRAM_16Mb_Mode
#ifdef NEW_STYLE_SETUP//zhaoyanhua add 2003-8-8 10:07
//In SETUP, enter PROGRAM
if (rx == IRC_PROGRAM)
prog_state =6;
#else
prog_state=3; // 3 means that ircmd_stop pressed when full_scrn==SETUP
#endif// NEW_STYLE_SETUP
#endif //SDRAM_16Mb_Mode
//#ifdef JIEKE_DVD
//return;
//#else
#ifdef KARAOKE_MENU
if(rx!=IRC_KARAOKE)
KARAOKE_MENU_FLAG=0;
#endif
#if defined(NEW_PARENTAL_GUI)||defined(MODIFY_PARENTAL_GUI)
//avoid the error:when TRAY OUT enter SETUP ,show error infomation.
//zhaoyanhua add 2004-2-9 11:24
#if defined(NEW_PARENTAL_GUI)
if(new_parental_gui)
#elif defined(MODIFY_PARENTAL_GUI)
if(parental_gui_flag)
#endif//defined(MODIFY_PARENTAL_GUI)
{
#if defined(DVD_AUDIO)//&&defined(NEW_PARENTAL_GUI)//20040302
if(pDSV->hid_gp_chk_pwd==2)
ExitDVDAudioGUI();
else
#endif
ExitParentalGUI();
}else
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?