ircmd_num.c

来自「凌阳8202T的红外接收代码及LED屏的驱动代码」· C语言 代码 · 共 1,120 行 · 第 1/3 页

C
1,120
字号
                 flag_input   = 1 ;
                ir_num_select(sel_num)  ;
		  flag_input   = 0 ;		
	         if( ir_select_number  == 0)
	         {
                       ir_select_number =  sel_num -10;
		  }
	     }
	     #endif//#ifdef  SUPPORT_IR10P_LIMIT		


#ifdef OSD_SPECIAL_MENU             
            if(num==0)
                  OSD1000ISP_STATUS(ir_select_number/10,num+0xfa);      
            else
#endif
            OSD1000ISP_STATUS(ir_select_number/10, num);
#ifdef SHOW_NUM_AND_UNDERLINE
            psprintf(RegionValStr[REGION1],"%01d-",ir_select_number/10);
#else
            psprintf(RegionValStr[REGION1],"%02d+",ir_select_number);
#endif 
            #ifdef PUSH_P10_LONG_DISPLAY
            if(ir_select_number == 10)                  //zxb 2005-5-8 13:48
                PrintOsdMsg(STR_OS_SELECT,REGION1,5,1); 
            else        
            #endif
            PrintOsdMsg(STR_OS_SELECT,REGION1,1,1);
        }
        else
        {
            int x;
            if(num==0)
            {
                if(ir_select_number>0)
                    x = ir_select_number+num;
                else
                {
#ifdef ONLY_0//for "0" &"10" not in a key.
                    x = 0;
#else
                    x = 10;
#endif
                }
            }
            else
            {
                if(ir_select_number<10)
                    ir_select_number = 0;

                x = ir_select_number + num;
            }

            #ifdef SUPPORT_MIDI_MENU_SEL 
            if(gIsMidiSelMenu) 
            {
                ircmd_post_func(CMD_SELECT | (num));
                return;
            }
            #endif

            OSD1000ISP_STATUS(x/10, num);
            
            #ifdef CONTINUOUS_NUM_KEY_SELECT 
            ir_num_timer = IR_NUM_TIMER; 
            
            {
              if(ir_num_state == NUM_STATE0)
              {
                ir_num1 = x;
                x = ir_num1;
                ir_num_state = NUM_STATE1;
                psprintf(RegionValStr[REGION1]," %d",ir_num1);
              }
              else if(ir_num_state == NUM_STATE1)
              {
                ir_num2 = x;
                x = ir_num1*10+ir_num2;
                ir_num_state = NUM_STATE2;
                psprintf(RegionValStr[REGION1]," %d%d",ir_num1,ir_num2);
              }
              else if(ir_num_state == NUM_STATE2)
              {
                ir_num3 = x;
                x = ir_num1*100+ir_num2*10+ir_num3;
                ir_num_state = NUM_STATE3;
                psprintf(RegionValStr[REGION1]," %d%d%d",ir_num1,ir_num2,ir_num3);
              }
              else if(ir_num_state == NUM_STATE3)
              {
                ir_num4 = x;
                x = ir_num1*1000+ir_num2*100+ir_num3*10+ir_num4;
#ifdef ALCO_DVD_UI
			    if(!x)
			    {
			        ir_continuous_num_clr();
			        invalid_key();
			        return;
			    }
			    else
#endif
			    {
                ir_num_state = NUM_STATE4;
                psprintf(RegionValStr[REGION1]," %d%d%d%d",ir_num1,ir_num2,ir_num3,ir_num4);
              }
			  }
              else
              {
                ir_continuous_num_clr();
                invalid_key();
                return;
              }  
            }
            
            PrintOsdMsg(STR_OS_SELECT,REGION1,1,1);
            
            //psprintf(RegionValStr[REGION2]," %d%d%d----%d",ir_num1,ir_num2,ir_num3 ,x);
            //PrintOsdMsg(STR_OS_OPEN,REGION2,1,1);
            if(x)
            #endif //end #ifdef CONTINUOUS_NUM_KEY_SELECT
            
            #ifdef PMP_DVD
            { //kenny 2005/8/3
            if(pFsJpeg->gifsState == FS_STATE_OTHER||pFsJpeg->gifsState == FS_STATE_JPEG)
            {
                if(x <= mp3_file_count())
                 {
                 dvd_title=x;  
                 pmp_enable_user_flag(PMP_USER_ENTER_SEARCH_TRACK); 
                 ircmd_post_func(CMD_FUNC | CMD_FUNC_TIMEOUT);
                } 
                else
                {
                ir_select_number=0;
                invalid_key();
                }
            }    
            else
            HDDCard_number_input(x);
            }
            #else
            ir_num_select(x);
            #endif
            
            #ifdef CONTINUOUS_NUM_KEY_SELECT 
            if(ir_num_timer)
              return;
            #endif
            
            resumeMSF=0;//wanghaoying 2003-11-5 10:40
        }
        return;
    }
#endif
    ir_select_number = 0;
#endif//MAKE_ONLY_UPDATE_CODE:20050305 linrc only for make romA.bin(BootLoad).
}


void init_ir_num(void)
{
    ir_10p=0;
    ir_select_number=0;
    now_num_ns=0;
}



void ir_num_select(int x)
{
#ifdef SUPPORT_MP3_ENCODER  //qinhua ,add,because at this time must switch DSP code when close file,2005-11-29 21:52
if(cd_type_loaded == CDDA)  
 {
 if((pre_ripping_flag)||((mp3_encoder_state == test_write_data)&&(recNew<1)))
  { 
   invalid_key();
    return;
   }
 #ifndef CD_DIRECT_RIPPING
   ripping_flag=0;   
 #endif 
 stop_current_ripping(); 
 }        
 
#endif 


#ifdef STOP_NO_DIR_SELECT//libing 2005-4-28 9:18
    if(play_state==VCD_STATE_STOP)
    {
        invalid_key();
        return;
    }
#endif  
#ifndef MAKE_ONLY_UPDATE_CODE//MAKE_ONLY_UPDATE_CODE:20050305 linrc only for make romA.bin(BootLoad).
    #ifdef MOVE_HIGH_LIGHT_IN_PROG_MODE
     if((!full_scrn)&&(cd_type_loaded== CDROM)){     //wsf  2004-7-20 14:55  changed for cancel program when select other ,just in CDROM DISC
        if(!Is_OTHER_STATE()){              
            prog_cnt=0;
            prog_func_off();
            prog_func_clear();        
        }
    }
    #endif
    int dir_num;
#ifdef IRCMD_DBG
    printf("================= ir_num_select (%x) =================\n",x);
#endif

#ifdef SUPPORT_TUNER       // add tuner 2-6-14 23:17
    if(play_state==VCD_STATE_POWER)
    {
        ir_select_number= x;
        psprintf(RegionValStr[REGION1]," %02d",ir_select_number);
        PrintOsdMsg(STR_OS_SELECT,REGION1,1,1);
    }
    else
#endif
/* BEGIN: Added by XLLUO, 2007/3/3 */
#ifdef SUPPORT_FILEKOK
    extern BYTE g_scIsMp4Karaoke;
    if (g_scIsMp4Karaoke)
    {
        ircmd_post_func(CMD_SELECT | x);
        return;
    }
    else
#endif /* SUPPORT_FILEKOK */
/* END:   Added by XLLUO, 2007.3.3 */
    {

        if (cd_type_loaded==CDROM)
        {
            ir_select_number = x;
            //wangap add if the dir_num is mp3 or jpeg or game 2003/12/22 
            // yltseng 2004/04/12, use relative method to access pFsJpeg->count_dir
            if( pFsJpeg->gifsFuncBtn != FS_FUNC_IDLE )
                dir_num = pFsJpeg->count_dir[ pFsJpeg->gifsFuncBtn - FS_FUNC_MP3 ];
            else
                dir_num = 0;

            //wanghaoying changed 2003-12-4 17:14
            //Focus in dir-area, the number must be less than the total dir count
            //Focus in file-area, the number must be less than the total file count of the dir
            if((pFsJpeg->ControlArea==CNT_AREA_FILE)&&(ir_select_number > mp3_file_count()))
                ir_select_number = 0;
            if((pFsJpeg->ControlArea==CNT_AREA_DIR)&&(ir_select_number > dir_num))
                ir_select_number = 0; 

            if (play_state==VCD_STATE_STOP)
            {
                if (ir_select_number > mp3_file_count())    //Maoyong 2004.03.10
                    ir_select_number = 0;
                else
                {
                    resumeMSF = 0;
                    pFsJpeg->file_current = ir_select_number;
                }
            }

// 2004/04/13 yltseng mark, it's no need now
/*
#ifdef SUPPORT_FILE_SYSTEM_MODE  // Robert 021007
            if (IsOtherStatePlayMode())
                ir_select_number = 0;
#endif
*/
        }else
        {
           #ifdef MIX_CDMP3_DISC_DISPLAY_REAL_CD_TRK    //linrc add 2004-10-29 11:20
           /*when play the cd+mp3 disc(ABEX TEST CD 786),it display the real CD TRK*/
            if((cd_type_loaded == CDDA)&&((pFsJpeg->cdrom.track_info[1]&0x40000000) == 0x40000000))
            {
                ir_select_number = x-1;
                x += (cd_trk_lo_now-2); 
            }
            else
            #endif
            {
            ir_select_number = x;
            x += (cd_trk_lo_now-1);
            }
            if(cd_type_loaded!=CDDVD)
            {
                if(!IsPBCOn()||(play_state==VCD_STATE_STOP))
                {
                    if(((x<cd_trk_lo_now)||(x>cd_trk_hi))&&(play_state!=VCD_STATE_9FRAMES))
                    {
                        ir_select_number=0;
                    }
                }
            }
            
            #ifdef CONTINUOUS_NUM_KEY_SELECT
            if((!(full_scrn&PROGRAM))&&(!(full_scrn&SETUP))&&(!(full_scrn&GOTO)))
            {
                if(((cd_type_loaded==CDVCD20)||(cd_type_loaded==CDSVCD)) && IsPBCOn())
                {
                  if(((psdList.s.bsn==1)&&x<psdList.s.bsn) || (x>(psdList.s.bsn+psdList.s.nos)))
                  {
                    ir_continuous_num_clr();
                    //ir_select_number = 0;//jack mark it.when merge alco code.
                  }
                }
                else if(cd_type_loaded==CDDVD)
                {
                  //if(is_menu()&&(HL_exist==1))
                  {
                    if((x>get_tt_info(DISP_CH_Ns)) && (x>get_tt_info(DISP_TT_Ns)))
                    {
                      ir_continuous_num_clr();
                      //ir_select_number = 0;  
                    }
                  }
                }
            }
            #endif
             
        }
/***************************/
//Add the code for judge the input and the file count in the dir(when repeat dir and repeat 1!!).
#ifdef  NUMBER_SELECTION_WHEN_REPEAT    //wuxiaofeng add for Minton 2004-03-10
        if(cd_type_loaded == CDROM)
        {
            if( ( (rep_mode==REPEAT_TRACK)//prevent inputing other track
                    &&(ir_select_number!=disp_trk_now) )//except the current track
                ||((rep_mode==REPEAT_DIRECTORY)//prevent inputing other directory
                    &&((ir_select_number > pFsJpeg->first_mp3_seq+pFsJpeg->file_specify_in_dir)//except the current directory
                    ||(ir_select_number < pFsJpeg->first_mp3_seq+1)) )
                )
                ir_select_number=0;
        }
#endif//#ifdef  NUMBER_SELECTION_WHEN_REPEAT
/***************************/
#ifdef SUPPORT_IR10P_LIMIT//tianye 200607
		if (flag_input)
		{
		   //printf( "SUPPORT_IR10P_LIMIT   return  /n"     );
		    return ;
		}
#endif//#ifdef  SUPPORT_IR10P_LIMIT		

        if(ir_select_number)
        {
#ifdef TCL_DIRECT_SELECT_CHAPTER// 2004-3-22 14:20 lijd
            if(cd_type_loaded==CDDVD)
            {
                dvd_title = get_tt_info(DISP_TT);
                dvd_chapter=get_tt_info(DISP_CH_Ns);
                
	            if(ir_select_number<=dvd_chapter)
	            {
	                dvd_chapter = ir_select_number; 
	                if(dvd_title == 0)
	                {
						dvd_title =  1;
						ircmd_post_func(CMD_FUNC|CMD_FUNC_PLAY );
	                }
	                else
	                {
	                    ircmd_post_func(CMD_FUNC|CMD_FUNC_PLAY );
	                }
	            }
	            else
				{
	                invalid_key();
	                return;
				}

            }

            else

#elif defined(DVD_DIRECT_SELECT_CHAPTER)&&defined(ONLY_ONE_CHAPTER_SELECT_TITLE) //yaowh add.2005-10-9 11:12

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?