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 + -
显示快捷键?