ir_parser.c
来自「凌阳8202T的红外接收代码及LED屏的驱动代码」· C语言 代码 · 共 2,095 行 · 第 1/5 页
C
2,095 行
#ifdef SUPPORT_SMF // add for close ir when loading fh ; hf.pang ; 2007-02-12
extern UINT8 g_iLoadFHCloseIR;
if(g_iLoadFHCloseIR)
return;
#endif
#ifdef SUPPORT_DPF_IRCMD//zhuangzhiling
dpf_ir_input(rx);
printf("---goto ircmd_pre_paser--\n");
return;
#endif
#ifdef ALCO_DIVX_UI//shenyj add for alco 12/22
if(full_scrn ==DIVX_DRM_MENU)
rx=IRC_SELECT;
#endif
#ifdef XFMAO_TEST //xf.mao 20061219
if(rx == IRC_3D)
{
Xftest3();
return;
}
#endif
#ifdef ONE_KEY_SWITCH_DVD_IPOD
#ifdef PORTABLE_DVD //Jack 07/02/12 added
if(rx == IRC_P_SCAN)
#else
if(rx == IRC_P_SCAN)//shujunwei 07/11/14 change for ipod switch
#endif
{
ircmd_dvd_ipod_switch();
return;
}
if(system_state == SYSTEM_DOING_IPOD_MODE)
{
call_ir_func_ipod(rx);
return;
}
#endif
#ifdef SUPPORT_CLEARPLAY
extern void set_clearplay_state(void);
if(rx == IRC_SUBP)
if(!is_clearplay_active())
set_clearplay_state();
if (is_clearplay_active())
{
clearplay_ir_handler(rx);
return;
}
#endif
#ifdef CD_RIPPING_USE_GUI //Simon, 2006.5.26 //zhongshan added normal state for system hanged at stop state 2007-5-10 17:46
// if full_scrn!=0(setup menu or prog menu,...),don't enter the CD-Ripping menu. robert.chang, 2007-04-12
//zxb 070608 DTS CD cannot support ripping.
if ((cd_type_loaded == CDDA)&& (cd_subtype!=CD_DTS)&&(play_state == VCD_STATE_NORMAL) && ((rx == IRC_SUBP)||(rx == IRC_RIPPING)) && (full_scrn == 0))
{
if (!is_cd_ripping_active())
{
#ifdef DIRECT_ACCESS_MEDIA//added by wangwei, 2006-10-10 17:10( for CD RIPPING )
// If card or usb exists, the ripping function could execute. robert.chang, 2007-05-23
storage_type = detect_type=0;//qinhua add for reload media type,07-7-25 10:44
#ifdef SUPPORT_USB
if( is_usb_media_exists() )
{
UsbTestReady();
}
else
#endif
#ifdef SPHE8202_CARD_STORAGE
if(is_card_media_exists())//qinhua add for 8203 init long time at no MS card state ,07-7-24 21:40
{
if(do_SD_MMC_init())
{
detect_type = SD_CARD_DEVICE;
storage_type = detect_type;
}
else if(do_MS_init())
{
detect_type = MS_CARD_DEVICE;
storage_type = detect_type;
}
}
else
#endif
{
psprintf(RegionValStr[REGION2], "NO DEVICE");
PrintOsdMsg(STR_OS_SPACE, REGION2, 1, 1);
return;
}
#endif//DIRECT_ACCESS_MEDIA
#ifdef SUPPORT_FILE_COPYING//XLLUO 20070525
extern BYTE source_media;
source_media = 0; //force to recheck mediatype everytime for fsnew. xlluo 070525
#endif
cd_ripping_start();
#if defined(SUPPORT_RENAME)&&defined(SUPPORT_IME) //xg.qi add 20070827
Titlename_Init();
#endif
AVD_SetMediaInterrupt();
}
return;
}
else if ((is_cd_ripping_active())&&(play_state!=VCD_STATE_STOP))///xg.qi mod 20070827
{
/* BEGIN: Added by xg.qi, 2007/8/27*/
#if defined(SUPPORT_RENAME)&&defined(IME_GUI)
if ( full_scrn == IME )
{
IME_Ircmd_API( rx );
return;
}
extern void IME_API();
if( Is_CdRipping_TrackItem()&& (rx == IRC_ANGLE) )
{
IME_API();
return;
}
#endif
/* END: Added by xg.qi, 2007.8.27 */
cd_ripping_ir_handler(rx);
return;
}
#endif
#ifdef SUPPORT_MP3_ENCODER //qinhua,2005-12-2 0:10
if(rx == IRC_SUBP)
{
if(is_cdg_disc(1)||(Is_JPEG_STATE()))
{
invalid_key();
return;
}
}
if(cd_type_loaded == CDDA)
{
if((pre_ripping_flag)||((mp3_encoder_state == test_write_data)&&(recNew<1))) //qinhua,add for abruptly stop ripping,2005-12-16 21:28
{
if((rx ==IRC_NEXT)||(rx == IRC_PREV)||(rx == IRC_STOP)||(rx == IRC_SUBP)
#if defined(ORITRON_HK_DVD)||defined(OP_MP3_ENCODER_UI)//chenzhao20060208
||(rx == IRC_ANGLE)
#else
||(rx == 0x62)
#endif
)
{
invalid_key();
return;
}
}
if(mp3_encoder_state == test_write_data)
{
if( (rx == IRC_BOOK)||(rx == IRC_GOTO)||(rx == IRC_FORWARD)||(rx == IRC_BACKWARD)||(rx == IRC_AB)
#ifdef OP_PLAYMODE
||(rx==IRC_MODE)
#endif
#ifdef CD_RIPPING_SETUP_INVALID//chenzhao20060124
#ifdef EXIT_KEY
||(rx == IRC_EXIT)
#else
||(rx == IRC_SETUP)
#endif
#endif
)
{
invalid_key();
return;
}
if((rx ==IRC_NEXT)||(rx == IRC_PREV)) //qinhua ,add,because some disc at this time must switch DSP code and betimes close file,2005-11-29 21:52
{
printf("=================ENCODER SKIP XXXXXXX\n\n");
change_speed_flag=0;
#ifndef CD_DIRECT_RIPPING
ripping_flag=0;
#endif
stop_current_ripping();
}
}
}
#endif
#ifdef SUPPORT_MALATA_INVALID_KEY//tianye 200607
if(mlata_ircmd_pre_paser(rx))
{
invalid_key();
return;
}
#endif//endif=> #ifdef SUPPORT_MALATA_INVALID_KEY
#ifdef AUTO_INTO_STANDBY
extern int auto_standby_timer;
auto_standby_timer=0;
#endif
#ifdef SUPPORT_SMF //add by xjliu for input device of flash driver 05-06-29
extern UINT16 FlashKeyValue;
extern UINT32 flash_break;
if (FlashKeyValue == 0 && FlashIsEnable && (flash_break != 1))//(FlashIsEnable)
{
switch(rx)
{
case IRC_UP:
printf("xjliu:UP\n");
FlashKeyValue = 1;
//break;
return;
case IRC_DOWN:
printf("xjliu:DOWN\n");
FlashKeyValue = 2;
//break;
return;
case IRC_LEFT:
printf("xjliu:LEFT\n");
FlashKeyValue = 3;
//break;
return;
case IRC_RIGHT:
printf("xjliu:RIGHT\n");
FlashKeyValue = 4;
//break;
return;
case IRC_SELECT:
printf("xjliu:SPACE\n");
FlashKeyValue = 5;
//break;
return;
case IRC_TITLEMENU:
printf("xjliu:F\n");
FlashKeyValue = 24;
//break;
return;
case IRC_PBC:
printf("xjliu:D\n");
FlashKeyValue = 26;
return;
//break;
case IRC_RETURN:
case IRC_STOP:
case IRC_EJECT:
case IRC_POWER:
break;
default:
return;
}
}
#endif
#if defined(STOP_RESUME_DVD_VCD)&&defined(DISC_ID_IN_FLASH)
#ifdef AFTER_RECORD_DELAY
if(((need_record)&&(need_record<=AFTER_RECORD_DELAY_CNT2)) || (need_record==PRE_STOP_FLAG))
#else
if(need_record == PRE_STOP_FLAG)
#endif//#ifdef AFTER_RECORD_DELAY
{
return;
}
#endif
#ifdef MP4_INIT_STATE_INVALID_KEY
if(MP4_init_state)
{
if((rx!=IRC_POWER) && (rx!=IRC_EJECT))
{
if(( invalid & DRM_MENU ) && ( full_scrn & DIVX_DRM_MENU ) )
//if(full_scrn !=DIVX_DRM_MENU)
//printf_w("MP4_init_state,return\n");
return;
}
}
#endif
#if (defined(OP_PLAYMODE)&&!defined(EXIT_KEY)) //chenzhao20060124//modify hongfeng 2005-12-6//libing 2005-4-13 01:10
if(full_scrn==OP_MENU)
{
if(!((rx==IRC_SELECT)||(rx==IRC_UP)||(rx==IRC_DOWN)
||(rx==IRC_LEFT)||(rx==IRC_RIGHT)||(rx==IRC_MODE)))
{
exit_op_menu();
}
}
#endif
#ifdef FILE_MODE_WRITE//added by wangwei,2005-1-25 16:21
if(rx == IRC_FM_WRITE)
play_state = VCD_STATE_NORMAL;
#endif
#ifndef VIDEO_DIRECT_SWITCH_SD_HD
#ifdef SUPPORT_HD_RESOLUTION
if((GET_TV_RESOLUTION() == HD_720) || (GET_TV_RESOLUTION() == HD_1080))
{
if(rx == IRC_P_SCAN) {
invalid_key();
return;
}
}
#endif
#endif
#ifdef SUPPORT_MIDI_MENU_SEL
printf("polling_rotary bHoldInput %d\n",bHoldInput);
//may be I should set a critical section
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)||
#ifdef SUPPORT_OP_FIVE_DISC
(rx>=IRC_DISC_1 && rx<=IRC_DISC_3)||
(rx>=IRC_DISC_4 && rx<=IRC_DISC_5)||
#endif
(rx==IRC_PLAY_SELECT)||(rx==IRC_PAUSEPLAY) )
{
if((rx==IRC_EJECT)||(rx==IRC_POWER))
{
user_input_pwd=2;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?