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

📄 vfd_portable.c

📁 Sunplus 8202S source code.
💻 C
📖 第 1 页 / 共 2 页
字号:
                ircmd_stop();
                #ifdef STOP_LOADER
                stop_loader();
                #endif
                //printf("video in when playing disc,then i go into stop state\n");
            }
        } 
        
        if(hold_state == 0)
            hold_state = 2;       
      
        break;
    }
    
    if(!AVin_step)
    {
    #endif //end #ifdef TFT_VIDEO_INOUT
    
        #ifdef SUNPLUS_8202P_DEMOBOARD
        regs0->sft_cfg4 &= ~((0x03)<<2);    //Enable GPIO2,3 For COVER & TFT SW
        #endif

	#ifdef CHECK_PORTABLE_OPCLSW
        temp=regs0->gpio_in[PDVD_OPCLSW_GPIO / 16] & (1 << (PDVD_OPCLSW_GPIO % 16));  //get gpio16(COVER_SW)
    
        if(temp)
        {
          if(!CDOpened())
          {
		    #ifdef ARGUS_PDVD_MENU_PLUS
            if(full_scrn & SETUP_PLUS)
              ircmd_setup_plus();
            #endif //end #ifdef ARGUS_PDVD_MENU_PLUS
            call_ir_func(IRC_EJECT);
            PrintOsdMsg(STR_OS_OPEN,REGION1,0,0);
          }   
        }
        else
        {
            if(CDOpened())
              call_ir_func(IRC_EJECT);
        }
    	#endif    
        
    #ifdef TFT_VIDEO_INOUT
    }
    #endif //end #ifdef TFT_VIDEO_INOUT
        
        

#if defined(GBM_PORTABLE_DVD)||defined(SUNPLUS_8202P_DEMOBOARD)     //rbhung for GBM Portable DVD
    #ifdef TFT_VIDEO_INOUT 
    if(!AVin_step)
    #endif //end #ifdef TFT_VIDEO_INOUT 
    {
        #ifdef HOLD_KEY_DETECT    
        temp=regs0->gpio_in[HOLD_GPIO / 16] & (1 << (HOLD_GPIO % 16));  //get (HOLD)
        if(temp)
        	hold_state=1;
        else
        	hold_state=0;		 	
        #endif
        
        temp=regs0->gpio_in[TFT_SW_GPIO / 16] & (1 << (TFT_SW_GPIO % 16));  //get (TFT_SW)
        if(temp)
            regs0->gpio_out[CTR_TFT_GPIO /16]|= (1 << (CTR_TFT_GPIO % 16));
        else
            regs0->gpio_out[CTR_TFT_GPIO /16]&= ~(1 << (CTR_TFT_GPIO % 16));
    }
    	
    temp=regs0->gpio_in[MCU_POWER_DET_GPIO / 16] & (1 << (MCU_POWER_DET_GPIO % 16));  //get gpio41(MCU_POWER_DET)
    if(temp)
    {
    	powerdown_timer=0;
    }
    else
    {
    	powerdown_timer++;
    	if(powerdown_timer>100)
    	{
            regs0->gpio_out[CTR_GLED_GPIO/16]|= (1 << (CTR_GLED_GPIO % 16));      //CTR_GLED->H,GREEN LED OFF
            regs0->gpio_out[DSP_RLED_GPIO/16]&= ~(1 << (DSP_RLED_GPIO % 16));     //DSP_RLED->L,RED LED ON    
	    	call_ir_func(IRC_POWER);
		}
    }	
        	
    	
    temp=regs0->gpio_in[LOWBAT_DET_GPIO / 16] & (1 << (LOWBAT_DET_GPIO % 16));  //get gpio42(LOWBAT_DET)
    if(temp)
    {	
        if(lowbat_timer==0)
			ClearOsdMsg(2);
    	lowbat_timer=1;
        regs0->gpio_out[CTR_GLED_GPIO/16]&= ~(1 << (CTR_GLED_GPIO % 16));     //CTR_GLED->L,GREEN LED ON
        regs0->gpio_out[DSP_RLED_GPIO/16]|= (1 << (DSP_RLED_GPIO % 16));      //DSP_RLED->H,RED LED OFF
    }
    else
    {
    	if(lowbat_timer<100)
    	{
    		PrintOsdMsg(STR_OS_LOWBAT,REGION2,0,0);
    		lowbat_timer++;
            regs0->gpio_out[CTR_GLED_GPIO/16]|= (1 << (CTR_GLED_GPIO % 16));  //CTR_GLED->H,GREEN LED OFF
            regs0->gpio_out[DSP_RLED_GPIO/16]&= ~(1 << (DSP_RLED_GPIO % 16)); //DSP_RLED->L,RED LED GLITTER ON
    	}	
    	else
    	{
    		if((lowbat_timer>=100) & (lowbat_timer<150))
    		{
    			ClearOsdMsg(2);
    			lowbat_timer++;
                regs0->gpio_out[DSP_RLED_GPIO/16]|= (1 << (DSP_RLED_GPIO % 16));  //DSP_RLED->H,RED LED GLITTER OFF
    		}	
    		else	
    			lowbat_timer=0;
    	}	
    }	
#endif //end #ifdef GBM_PORTABLE_DVD
}
#endif
     
#ifdef PDVD_USE_IO_SCAN_KEY
    
const BYTE gpio[8]={46,47,48,49,50,51,52,18};
#ifdef USE_COMBINED_KEY
#define LONG_PRESS_KEY_TIME 12  
#endif
    
//#define PORTABLE_IOKEY_DEBUG
        
void check_portable_key(void)
{
#ifdef USE_COMBINED_KEY
    BYTE i,j,keydata;
    static BYTE column_dot = 4;
    static BYTE row_dot = 0;
    static BYTE keyprev = 0;
    static BYTE key_press_times = 0 ;

    #ifdef HOLD_KEY_DETECT
    if(hold_state)
        return;
    #endif
	
    regs0->gpio_oe[3]&= 0xffcf;     //jhuang org 011f
    
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++)
          GPIO_O_SET(gpio[j],1);
          
        GPIO_O_SET(gpio[i],0);
    
        for(j=4;j<8;j++)
        {
            keydata=GPIO_I_GET(gpio[j]);
            
            if(keydata == 0)
            {//have key pressing                  
                keydata=i*4+(j-4)+1;
                column_dot = j;
                row_dot = i;
                
                if(keyprev != keydata)
                {//first press key!                         
                    keyprev = keydata;
                    #ifdef PORTABLE_IOKEY_DEBUG
                    printf("%d key press at the first time\n",keydata);
                    #endif
                }
                else 
                {//count the key press times
                    #ifdef D02_9_10INCH
                    if((keydata == 8) || (keydata == 10))
                    #else 
                    if((keydata == 4) || (keydata == 6)
                        #ifdef D02_A_10INCH
                        ||(keydata == 10) || (keydata == 16)
                        #endif
                      )
                    #endif
                    {
                        key_press_times++;
                        #ifdef PORTABLE_IOKEY_DEBUG
                        printf("key press times:---->%d\n",key_press_times);
                        #endif
                    }
                }           
                break;
            }
            else if((j == column_dot) && (i == row_dot) && (keyprev != 0))
            {//key is released
                if(key_press_times >= LONG_PRESS_KEY_TIME)
                {//long press key 
                    #ifdef PORTABLE_IOKEY_DEBUG
                    printf("call long key:%d!press %d times\n",keyprev,key_press_times);
                    #endif  
                 
                    #ifdef D02_9_10INCH
                    if(keyprev == 8)
                    #else
                    if(keyprev == 4)
                    #endif
                    {
                        #ifdef D02_A_10INCH
                        call_ir_func(IRC_LEFT); 
                        #else
                        call_ir_func(IRC_PREV); 
                        #endif
                    }
                    else
                    {
                        #ifdef D02_A_10INCH
                        if(keyprev == 10)
                            call_ir_func(IRC_DOWN);
                        else if (keyprev == 16)
                            call_ir_func(IRC_UP); 
                        else
                            call_ir_func(IRC_RIGHT);
                        #else
                        call_ir_func(IRC_NEXT);
                        #endif
                    }
              }
              else
              {//short key press
                  call_ir_func(vfd_keycode[keyprev - 1]);
                  #ifdef PORTABLE_IOKEY_DEBUG
                  printf("call short key:%d\n",keyprev);
                  #endif
              }
              
              key_press_times = 0;
              keyprev = 0;
              column_dot = 4;
              row_dot = 0;
           } 
        }       
    }
#else
    BYTE i,j,k,keydata,press_key=0;
    static BYTE keyprev=0;
	
    #ifdef HOLD_KEY_DETECT
    if(hold_state)
        return;
    #endif
    
    regs0->gpio_oe[3]&= 0xffcf;     //jhuang org 011f
	
	for(i=0;i<4;i++)
	{
		for(j=0;j<4;j++)
			GPIO_O_SET(gpio[j],1);
	    GPIO_O_SET(gpio[i],0);
	
  		for(k=4;k<8;k++)
  		{  		 
        	keydata=GPIO_I_GET(gpio[k]);
    		if(keydata==0)
    		{    	       	  
    			press_key=1;
    			keydata=i*4+(k-4)+1;    			
    			if(keyprev!=keydata)
    			{    			  			
    			    keyprev=keydata;
    			    call_ir_func(vfd_keycode[keydata - 1]);
    			    printf("key %d SW %d,%d.\n",keydata,i,k-4);
    			}  
    			break;
    		}    		    		
  		}  		
  	}
  	if(press_key==0) keyprev=0;
#endif //end #ifdef USE_COMBINED_KEY

}
#endif //#ifdef PDVD_USE_IO_SCAN_KEY

⌨️ 快捷键说明

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