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