⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ircmd_num.c

📁 Sunplus 8202S source code.
💻 C
📖 第 1 页 / 共 2 页
字号:
/*
*  Terry,2004/1/14 02:36PM
*/


/*******************************************************
** FUNCTION
**    ircmd_select_number
**
** DESCRIPTION:
** Function for IR number-key
**
** In:
**    num: numer 0~10
** Out:
**    None
************************************************************/
//xulf added temporary here 2004-2-12 11:53
#if defined(SUPPORT_BASS_TREBLE)//xyy 2004-3-8
extern BYTE flag_BassAdjust,flag_TrebleAdjust;       //xulf 2004-01-12
#endif
//extern void ddx_ircmd_BassAdjust(int updown);
//extern void ddx_ircmd_TrebleAdjust(int updown);
#if defined(AMP_SUPPORT_EQ)
extern void ddx_EQ_Toggle(void);
#endif

#if defined(SUPPORT_REVERBERATION)
extern void ddx_Revb_Toggle(void);
#endif

#ifdef  MP3_DIRECT_SELECT_FAST2NORM     //Maoyong 2004.02.28 15:54
#define FAST2NORM           0x01<<0     
#define NOT_REALPLAY        0
extern void chg2normal_play(UINT8 md,UINT8 realplay);
extern UINT16 Is_JPEG_STATE(void);
#endif

//#ifdef XINGQIU_RECEIVER_PANNEL//xyy 2004-5-24
#ifdef SUPPORT_STATION_INPUT//xyy 2004-8-15
#include "radio_mv114_kst.h"
#endif

#ifdef CONTINUOUS_NUM_KEY_SELECT//Jack added 04/11/13
#define psdList        (pFsJpeg->List)

void ir_continuous_num_clr(void)
{
    ir_num1 = 0;
	ir_num2 = 0;
	ir_num3 = 0;
	ir_num4 = 0;
	ir_num_timer = 0;
	ir_select_number = 0;
	ir_num_state = NUM_STATE0;
}
#endif

void    ircmd_input_number(int num)
{
    UINT8 invalid=0;
#ifdef DVB1000_OSD_MENU
    if(!((full_scrn & DVB_MENU) ||(full_scrn & SETUP)||(full_scrn & SOUND))&&(system_state == SYSTEM_TS))
    {
        int progCount;
        stProgramInfo_t *progInfo; 
        now_num_ns++;
        if(now_num_ns==1)
        {//getime
            //get_tod(&timeout_playback);
            printf("timeout_playback=%d\n",timeout_playback);
            ir_select_number =num;
            psprintf(RegionValStr[REGION1],"-%01d",ir_select_number);
            PrintOsdMsg(STR_OS_SPACE, REGION1, 2, 1);
        }
        else if(now_num_ns==2)
        {
            ir_select_number = ir_select_number*10 + num;
            printf("ir_select_number = %d\n",ir_select_number);
            psprintf(RegionValStr[REGION1],"%02d",ir_select_number);
            PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
            full_scrn = 0;  
            if(CurrService ==DIGITAL_TV_SERVICE)//eric 2004-12-20 17:33
    	    {
		progCount = g_iTVCount;
		progInfo = g_stTVInfo;
		printf("DIGITAL_TV_SERVICE :index_y = %d\n",currPlayProgIndex);
    	    }
   	    else if(CurrService ==DIGITAL_RADIO_SERVICE)
    	    {
		progCount = g_iRadioCount;
		progInfo = g_stRadioInfo;
		printf("DIGITAL_RADIO_SERVICE :index_y = %d\n",currPlayProgIndex);
  	    }
  	        
           if(ir_select_number<progCount) 
            {
                if(ir_select_number!=currPlayProgIndex)
                {
	            index_y=ir_select_number;
	            dvbgui_select_program(progCount, SCREEN_TYPE_FULL, progInfo, g_stObject2);
                }
            }
            else
            {
                psprintf(RegionValStr[REGION1],"INVALID PROGRAM");
                PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
            }
	    now_num_ns=0;
        }
        return;
    }   
#endif

#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() && (is_menu()==0))       //wanghaoying 2003-8-25 23:01
    {
        invalid_key();
        return;
     }
    }
#endif 

#ifdef SUPPORT_MIDIDISK_TITLE
        if (bIsPlayMidiTitle)
        {
		invalid_key();
		return;
        }
#endif

#ifdef INVALID_NUMBER_IN_DVD_MENU     //XLJ2004-3-31
//invaild number keys during the short film in DVD menu, but need them available 
//in choosing Menu, so use both is_menu()  and HL_exist. heqiang, 2004-4-23 9:52
    if(is_menu()&&(HL_exist!=1)&&(cd_type_loaded==CDDVD)&&(!(full_scrn&PROGRAM))&&(!(full_scrn&SETUP))&&(!(full_scrn&GOTO)))    
    {
        invalid_key();
        return;
    }
#endif//INVALID_NUMBER_IN_DVD_MENU


#ifdef INVALID_NUMBER_IN_REPEAT//wuxiaofeng 2004-03-05
    if(cd_type_loaded==CDDVD)//only for DVD use
    {
        if((rep_mode!=REPEAT_IDLE)||(rep_mode!=REPEAT_AB_IDLE))
        {
            invalid_key();
            return;
        }
    }
#endif
    
#ifndef JPG_EFFECT  
    if ( Is_JPEG_SlideMode() ) return;
#endif
    
//3-12-9 19:04 NONO MARKED.uopdate dsp code.  
//    if((cd_type_loaded == CDDVD) && (coding_mode_now == AUDIF_CODING_MODE_DTS))
//    setup_SetDTSDOWNMIXConfig();//3-11-25 22:55 zhangyu

#ifdef JPG_EFFECT
    num_sel_in_jpg = 1;
#endif  

#if defined(FAT_Write_UI)||defined(CF_CARD_WRITE)//||defined(WRITE_USB)//liweihua 2003-10-30 10:32
    extern void input_name(int num);
    extern BYTE input_flag;
    if((full_scrn & PERIPHERAL) && (input_flag == 1))
    {
        if(num ==10)
            invalid_key();
        else
            input_name(num);
        return;
    }
#endif

    switch(play_state)//kenny 891009
    {
    case VCD_STATE_IDLE://for no disc
    case VCD_STATE_OPEN:
        if(!full_scrn)
            invalid=1;
        break;
    case VCD_STATE_PREVIEW:
#ifdef DVD_PREVIEW_FUNCTION//terry,2004/2/7 07:11PM    
        if(cd_type_loaded!=CDDVD)        
#endif        
        {
            int max=cd_trk_hi-cd_trk_lo_now+1;

            if(v11_trk_now >= cd_trk_lo_now+9*((int)(max/9)))
            {
                if(num> max%9)
                    invalid=1;
            }
        }
    case VCD_STATE_9FRAMES:
        if(num==0 || num==10)
            invalid=1;
        break;
    } //end case
#if defined(SUPPORT_STATION_INPUT)//xyy 2004-5-24 just for xingqiu
    if(system_state== SYSTEM_DOING_TUNER)
    {
        ir_select_number = num;
        if(tuner_oper_mode!=FREQ_DIRECT_CALL)//xyy 2004-7-28
        tuner_oper_mode = RECALL_OR_STORE;
        if(ir_select_number == 10)
            ir_select_number = 0;
        tuner_func_input();   
        return;
    }
#endif  

#if defined(SUPPORT_POWER_OFF_CLOCK_FUNC)//xyy 2004-10-12
	if(system_state==SYSTEM_DOING_CLOCK_FUNC)
	{
		ir_select_number = num;
		if(ir_select_number == 10)
			ir_select_number = 0;
		ClockFuncInput();
		return;	
	}
#endif

    if(shuffle_flag)
        invalid=1;

    if(invalid)
    {
        invalid_key();
    }else  if(full_scrn&PROGRAM)
    {
        ir_select_number=num;
        prog_func_input(num);
//  }else if(full_scrn&READ)
//  {
//      read_func_input(num);
    }else if(full_scrn&SETUP)
    {
#ifdef SCRN_SAVER_WHEN_PAUSE//zhaoyanhua add 2004-2-17 17:48        
        //NOTE:
        // add these code there to avoid the BUG:
        // when Slide Show JPEG, ROTATE,then SETUP,enter password GUI
        // when the number is more than two(such as "01"), it will excute SELECT 01
        // OR appear the SCREEN saver.
        // I don't know  whether adding these codes like this is reasonable.
        // But the result is correct.
        // zhaoyanhua add 2004-2-17 17:53
        
        extern UINT32 save_srn_start_t;
        save_srn_start_t = get_rtc_val();//axel 2004/3/11 02:44pm
        
       // save_srn_start_t = 0;
#endif//ifdef  SCRN_SAVER_WHEN_PAUSE  
        ir_select_number=num;

		
        setup_password();

#ifdef SHOW_STANDBY_TIMER //suqiaoli  add 2003-8-5
        setup_standby_timer_input();
#endif      
    }else if(full_scrn&GOTO) //kenny 2001/5/16
    {
        OSD1000ISP_STATUS(OSDISP_NUMGOTO, num);

#ifdef NEW_SEARCH_OSD
        if(t_disp%10 ==1) // ren 910725
        {            // ren 910725
            ir_select_number=num;
            search_func_input();
        }
#else
      #ifdef NEW_GOTO_TIME  //wangfeng 2003-11-15 21:47
        if((index_x==7)||(index_x==9)){
            if(num<6)
        ir_select_number=num;
            else
            return;
        }
        else 
      #endif  
        ir_select_number=num;
        search_func_input();
#endif
    }
#ifdef SUPPORT_FUNCTION_MENU
    #ifdef SUPPORT_DISPLAY_MENU
    else if(In_Goto_Menu() && (full_scrn&SETUP_PLUS))
    {
        setup_menu_plus_timer = DISPLAY_MENU_SHOW_TIME;
        ir_select_number = num;
        search_func_input();
        ShowSetupPage_plus(MENU_REFRESH);
        ir_select_number = 0;
    }
    #endif//end #ifdef SUPPORT_DISPLAY_MENU
#endif//#ifdef SUPPORT_FUNCTION_MENU
#ifdef NEWSTYLE_WINDOW            //xiongyuyue 20030703
    else if(full_scrn&MESSAGE)
    {
        ir_select_number=num;
        browse_func_input();
    }
#endif


#ifdef SUPPORT_REP_READ //Maoyong 2004.06.07
    else if(IsReadSetPBTimes()){
        ir_select_number = num;
        read_func_input();        
    }
#endif

#ifdef DVB1000_OSD_MENU
    else if(full_scrn&DVB_MENU){
        ir_select_number = num;
        pfnDvbInput();        
    }
#endif

    else
#ifndef IR_10_PLUS
    {
        {
            UINT8 max=2;
            UINT8 f[10]={" ---"};
            UINT8 jp=1;
          #if defined(SUPPORT_CARD_STORAGE)||defined(SUPPORT_USB)||defined(SPHE8202_CARD_STORAGE)
           if (media_type!=MEDIA_CARD)  //wthsin, 2004/7/7 02:34pm
          #endif 
            if(IsPBCOn() && (is_menu()==0))       //wanghaoying 2003-8-25 23:01
            {
                invalid_key();
                return;
            }

            now_num_ns++;

            ir_select_number=ir_select_number*10+num;

            //printf("now_num_ns:%x num:%x ir_select_number:%x\n",now_num_ns,num,ir_select_number);
            if(cd_type_loaded==CDROM)
            {
                UINT16 tt=mp3_file_count();

                if(tt>=1000)//nono 2-7-15 9:47
                    max=4;
                else if(tt>=100)
                    max=3;
                else
                    max=2;
            }

            jp+=(max-now_num_ns);

            if(jp>1)
            {
                f[jp]='%';
                f[jp+1]='0';
                f[jp+2]='0'+now_num_ns;
                f[jp+3]='d';
                f[jp+4]=0;
                psprintf(RegionValStr[REGION1],f,ir_select_number);
                PrintOsdMsg(STR_OS_SELECT,REGION1,1,1);
#ifdef SUPPORT_TUNER       // add tuner 2-6-14 23:17
                if(play_state!=VCD_STATE_POWER)
#endif
                    timeout_osd[REGION1]=150;//terry,0508, avoid waiting too long
            }else
            {
                ir_num_select(ir_select_number);
            }


            return;
        }
    }
#else
    {
        if(num==10)
        {
            int max;

            if(IsPBCOn() && (is_menu()==0)&&(play_state!=VCD_STATE_STOP)
                #if defined(SUPPORT_CARD_STORAGE) || defined(SUPPORT_USB)||defined(SPHE8202_CARD_STORAGE)//liweihua add 2004-3-26
                && (media_type != MEDIA_CARD)
                #endif
                )       //wanghaoying 2003-8-25 23:01
            {
                invalid_key();
                return;
            }
            
            ir_10p=1;
            ir_select_number+=10;
            if (cd_type_loaded==CDROM)//nono 20040226 for nintaus
                max=10000;
            else if(cd_type_loaded==CDDVD)
                max=1000;
            else
                max=100;

            if(ir_select_number>=max)
                ir_select_number=ir_select_number%max;

            OSD1000ISP_STATUS(ir_select_number/10, num);

            psprintf(RegionValStr[REGION1],"%02d+",ir_select_number);
            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;
			    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();

⌨️ 快捷键说明

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