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

📄 vfd_drv_nec16312.c

📁 mp3 player program please read carefully.
💻 C
📖 第 1 页 / 共 3 页
字号:
#endif
#ifdef HOLD_VOL_KEY_FAST_REPEAT//chenzhao add for Oritron 2005-8-20
UINT32 keycode_to_num(UINT32 key_data);
#endif

void polling_vfdr(void)  //nec16321 type vfd
{


#ifdef OP_5121_POWER_KEY  
 Check_panel_key_by_gpio_5121() ;
#endif  
 
#ifdef SUPPORT_SPI_QSI
    return;
#endif

#ifdef SUPPORT_VFD

	UINT8   i;
	UINT32  temp;
	UINT32  key_data;
	static UINT8 count = 0;
	static UINT32 key_previ = 0;
	
	static BYTE bWriteState=0;
	
#ifdef TWO_FUN_IN_ONE_VFD_KEY
	static UINT32 key_previ_temp = 0;
	static UINT16 key_press_time_count = 0;
#endif //TWO_FUN_IN_ONE_VFD_KEY
	
#ifdef TWO_FUNC_IN_LEFT_RIGHT_KEY//xyy add for Oritron 2004-11-10
	static UINT32 uPrevKey = 0;
	static UINT16 uTimeCount = 0;
#endif	
	
    #ifdef HOLD_VOL_KEY_FAST_REPEAT//chenzhao add for Oritron 2005-8-20
	static UINT16 vol_key_press_time_count = 0;
    #define VOL_KEY_HOLD_TIME 4
    #endif
	
    #ifdef KENLOON_PANEL3
	write_vfd_led(0xe);
	#endif
	
	#if defined(SUPPORT_VFD_SHOW_P_SCAN)&&defined(TONIC_DVD)//20040206
	if(vfd_intr_timer)
	    vfd_intr_timer--;	
	#endif
	
	UINT32 *VfdReadData;

	#ifdef GET_5BYTES_KEY_DATA//lijd 2005-5-30 13:54
	UINT32 *VfdReadData1;
	UINT32  key_data_5byte;
	static UINT32 key_previ_5byte = 0;
	#endif

#ifdef  SUPPORT_SPI
    return;
#endif

    #ifdef SUPPORT_GPIO_P_SCAN    //oujx for tonic only
    if(full_scrn==0&&(system_state==SYSTEM_READ_TITLE||system_state==SYSTEM_SETUP_BROWSER||system_state==SYSTEM_BROWSE||system_state==SYSTEM_OPEN||play_state==VCD_STATE_STOP||system_state==SYSTEM_NODISC))	
    {
    	if(PscanStatus==0)
    	{
    	
    		if(GPIO_I_GET(36)==0)
    		    PscanPortStatus=0;
    		else
    		    PscanPortStatus=1;
    		    
    		PscanCount=0;
    		PscanStatus=1;
    	}
    	else
    	if(PscanStatus==1)
    	{
    		PscanCount++;
    		if(PscanCount>50)
    		{
    			if(GPIO_I_GET(36)==PscanPortStatus)
    			{
    				if(PscanPortStatus==0)
    		            ircmd_p_scan_only();
    		        else
    		            ircmd_yuv_only();
    		
    	        }
    			PscanStatus=0;
    		}
    	}
    }		
	#endif//#ifdef SUPPORT_GPIO_P_SCAN    //oujx for tonic only
	
	if(regs0->iop_data[0] & FUN_MASK)
		return;
       
#ifdef PUSH_TRAY_IN   //LYC 05/04/13 
    if(GPIO_I_GET(TRAY_IS_OUT_NUM)==0)
       tray_in_flag=1;
    if((tray_in_flag)&&(GPIO_I_GET(TRAY_IS_OUT_NUM)))
      {
      	play_state = VCD_STATE_CLOSE;
      	tray_in_flag=0;
      	update_vfd_data();
     }	
#endif     

	if(vfd_state == VFD_READ)
	{
#ifndef USE_C_IOP//2004-2-12 12:08 lijd
		//update_vfd_data();//nono 2003-7-24 0:41 mark

		#ifdef  SUPPORT_RECEIVER  //huziqin 2004-4-27
		VfdReadData = ((UINT32 *) (SDRAM_BASE_UNCACHED + regs0->iopya * 1024 + 0x588));
		#elif defined(MOVE_IOP_CODE_START)
		VfdReadData = ((UINT32 *) (SDRAM_BASE_UNCACHED + regs0->iopya * 1024 + 0x568));//YANGLI,2006-4-1 15:34	
		#elif defined( SPHE8202)
		VfdReadData = ((UINT32 *) (SDRAM_BASE_UNCACHED + regs0->iopya * 1024 + 0x588));//for 8202 2004-3-31 16:47 lijd	
		#elif defined(TWINHAN_8222_PANNEL)  //haoy 2005/03/31 16:17 for twinhan led
		VfdReadData =((UINT32 *) (SDRAM_BASE_UNCACHED + regs0->iopya * 1024 + 0x5E8));
		#elif defined(XINGQIU_RECEIVER_PANNEL)
		VfdReadData = ((UINT32 *) (SDRAM_BASE_UNCACHED + regs0->iopya * 1024 + 0x588));
		#else
		VfdReadData = ((UINT32 *) (SDRAM_BASE_UNCACHED + regs0->iopya * 1024 + 0x5b8));		//gerry,2004-3-24 12:53		
		#endif
		
		#ifdef GET_5BYTES_KEY_DATA
		VfdReadData1 = ((UINT32 *) (SDRAM_BASE_UNCACHED + regs0->iopya * 1024 + 0x58c));		//wurh modify it to 58c for SPHE8202 2006-1-16 16:31	
		#endif
		
		//current is read 3 byte on io
        #ifdef GET_5BYTES_KEY_DATA
        key_data_5byte= *VfdReadData1 & 0x000000ff;    
        key_data = *VfdReadData & 0xffffffff;      
        #else
		key_data = *VfdReadData & 0x00ffffff;
        #endif
		*VfdReadData = 0; // Robert 030313
		#ifdef GET_5BYTES_KEY_DATA  //wurh add for get 5 byte 2006-3-9 01:38下午
		*VfdReadData1 = 0;
		#endif
#else//USE_C_IOP
		key_data =(regs0->iop_data[3]);
#endif//USE_C_IOP

        #ifdef GET_5BYTES_KEY_DATA
        if((key_data == 0xffffff)||(key_data_5byte == 0xff))
			return;
        #endif
		if(key_data == 0xffffff)
			return;

        #ifdef USE_VFD_LED_TO_KEY_SOUND_INDICATE		//gerry for PANDA6950,3-8-23 17:17
		write_vfd_led(0xf);
        #elif defined(USE_VFD_LED_TO_KEY_SOUND_INDICATE_HI_ON)		//NONO 2003-10-15 16:14
		write_vfd_led(0x0);
        #endif

#ifdef TWO_FUN_IN_ONE_VFD_KEY
		if((vfd_keycode[keycode_to_num(key_data)-1]==IRC_NEXT)||(vfd_keycode[keycode_to_num(key_data)-1]==IRC_PREV))
		{
			key_press_time_count++;
		    printf("key_press_time_count= %d \n",key_press_time_count);   
		}
		    
		if(key_press_time_count>=15)
		{
			if(vfd_keycode[keycode_to_num(key_data)-1]==IRC_NEXT)
			{
				call_ir_func(IRC_VFD_NEXT);
			    key_press_time_count=0;
			    num_add_flag = 1;
			}
			else if(vfd_keycode[keycode_to_num(key_data)-1]==IRC_PREV)
			{
				call_ir_func(IRC_VFD_PREV);
			    key_press_time_count=0;
			    num_add_flag = 1;
			}
		}
#endif //TWO_FUN_IN_ONE_VFD_KEY 

#ifdef TWO_FUNC_IN_LEFT_RIGHT_KEY//xyy add for Oritron 2004-11-10
		if((vfd_keycode[keycode_to_num(key_data)-1]==IRC_LEFT)||(vfd_keycode[keycode_to_num(key_data)-1]==IRC_RIGHT))
		{
			uTimeCount++;
		    printf("uTimeCount= %d \n",uTimeCount);   
		}
		    
		if(uTimeCount>=20)
		{
			if(vfd_keycode[keycode_to_num(key_data)-1]==IRC_LEFT)
			{
				call_ir_func(IRC_VFD_LEFT);
			    uTimeCount=0;
			    num_add_flag = 1;
			}
			else if(vfd_keycode[keycode_to_num(key_data)-1]==IRC_RIGHT)
			{
				call_ir_func(IRC_VFD_RIGHT);
			    uTimeCount=0;
			    num_add_flag = 1;
			}
		}
#endif

        #ifdef HOLD_VOL_KEY_FAST_REPEAT//chenzhao add for Oritron 2005-8-20
        if(key_data != key_previ)
        {
            vol_key_press_time_count=0;
        }
        else if ((vfd_keycode[keycode_to_num(key_data)-1]==IRC_VOLUME_UP)||(vfd_keycode[keycode_to_num(key_data)-1]==IRC_VOLUME_DN))
        {
            if(vol_key_press_time_count>=VOL_KEY_HOLD_TIME)
            {
                if(vfd_keycode[keycode_to_num(key_data)-1]==IRC_VOLUME_UP)
                {
                    call_ir_func(IRC_VOLUME_UP);
                    vol_key_press_time_count=0;
                }
                else if(vfd_keycode[keycode_to_num(key_data)-1]==IRC_VOLUME_DN)
                {
                    call_ir_func(IRC_VOLUME_DN);
                    vol_key_press_time_count=0;

                }
            }
            else
            vol_key_press_time_count++;
        }
        #endif
        
 		#ifdef GET_5BYTES_KEY_DATA
        if((key_data != key_previ)||(key_data_5byte != key_previ_5byte))
        #else
		if(key_data != key_previ)
		#endif
		{
			
#ifdef TWO_FUN_IN_ONE_VFD_KEY
            //num_add_flag = 0;   //dingzhy 
			key_previ_temp = key_previ;
#endif //TWO_FUN_IN_ONE_VFD_KEY

#ifdef TWO_FUNC_IN_LEFT_RIGHT_KEY  //xyy add for Oritron 2004-11-10
			uPrevKey = key_previ;
#endif

			key_previ = key_data;
			#ifdef GET_5BYTES_KEY_DATA
			key_previ_5byte=key_data_5byte;
			#endif
			#ifdef GET_5BYTES_KEY_DATA
	        if((key_data != 0)||(key_data_5byte != 0))
	        #else
			if(key_data != 0)
			#endif
			
			{
#ifdef TWO_FUN_IN_ONE_VFD_KEY
				//key_press_time_count=0;
				if((vfd_keycode[keycode_to_num(key_data)-1]==IRC_NEXT)||(vfd_keycode[keycode_to_num(key_data)-1]==IRC_PREV))
		        {
		            key_press_time_count++;
		        }
#endif //TWO_FUN_IN_ONE_VFD_KEY

#ifdef TWO_FUNC_IN_LEFT_RIGHT_KEY //xyy add for Oritron 2004-11-10
				if((vfd_keycode[keycode_to_num(key_data)-1]==IRC_LEFT)||(vfd_keycode[keycode_to_num(key_data)-1]==IRC_RIGHT))
				{
					uTimeCount++;
				}
#endif

				#ifdef XINGQIU_RECEIVER_PANNEL
				if(key_data == 0x111111)     //xulf 2004-3-9
					return;
				key_data -= 0x111111;  
				#endif
				#ifdef GET_5BYTES_KEY_DATA	//lijd 2005-5-30 16:20			
					for(i = 0; i < 32; i++) //wurh modify 2006-1-16 16:31    
//				for(i = 0; i < 24; i++)
				#else	
					for(i = 0; i < 24; i++)
				#endif
				{
					temp = 0x01 << i;
					if(key_data & temp)
					{
						if (key_data > temp) // Robert 030224 for preventing illegal key_data
						{
							key_data = 0;
							return;
						}
						else
						{
							key_data = i + 1;
							break;
						}
					}
				}
				
				#ifdef GET_5BYTES_KEY_DATA				
				for(i = 0; i < 8; i++)
				{
					temp = 0x01 << i;
					if((BYTE)key_data_5byte & temp)
					{
						if (key_data_5byte > temp) // Robert 030224 for preventing illegal key_data
						{
							key_data_5byte = 0;
							return;
						}
						else
						{
							key_data_5byte = i + 1;
							break;
						}
					}
				}
				if(key_data_5byte)
				   key_data=32 + key_data_5byte;
				#endif
				 
				save_srn_start_t = get_rtc_val();

#if defined(TONIC_DVD)//20040206
				if(KeyLockStatus==1)
				{
					extern const char *const KeyLockString[4][10];
    				//psprintf(RegionValStr[REGION1],"KEY LOCK ON");
    				
    				//PrintOsdMsg(STR_OS_SPACE,REGION1,1,1);
    				psprintf(RegionValStr[REGION1],KeyLockString[osd_font_mode][0]);
    				PrintOsdMsg(STR_OS_SPACE,REGION1,1,1);
    				vfd_state = VFD_WRITE;
    				return;
				}
#endif//defined(TONIC_DVD)				

#ifdef VFD_KEY_TEST
				psprintf(RegionValStr[REGION1], "KEY %02d F:%d", key_data,vfd_keycode[key_data - 1]);
				PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
#else
				if((Is_JPEG_SlideMode()) && (vfd_keycode[key_data - 1] == IRC_PAUSE))
				{
					//Jeff 20020523
					bJpgVFDPause = 1;
				}
				else if((Is_JPEG_SlideMode()) &&
					((vfd_keycode[key_data - 1] == IRC_PLAY) ||
					(vfd_keycode[key_data - 1] == IRC_PLAY_SELECT) ||
					(vfd_keycode[key_data - 1] == IRC_PLAY_RESUME)))
				{
					//bJpgVFDPause=0;
					bJpgVFDPause = 2;			//Jeff 20020525
					PrintOsdMsg(STR_OS_PLAY,REGION1,1,0);//nono 20030804
					ircmd_play();//nono 20031210
				}
				else if((Is_JPEG_SlideMode()) &&	//Jeff 20020527
					(vfd_keycode[key_data - 1] == IRC_PAUSEPLAY))
				{
					if(bJpgVFDPause == 0)
					{
						//bJpgVFDPause = 1;
						if(play_state == VCD_STATE_PAUSE)	//nono 2-6-28 14:00
							//bJpgVFDPause = 2;
							
						{
							bJpgVFDPause = 2;
							PrintOsdMsg(STR_OS_PLAY,REGION1,1,0);//nono 20030804
							ircmd_play();//nono 20031210
						}							
						else
							bJpgVFDPause = 1;
					}
					else if(bJpgVFDPause == 1)
					{
						bJpgVFDPause = 2;
					}
				}
				else if(key_data<=40)   //wurh modify it for key_data=40, the vfd key function invalid 2006-3-9 01:40下午
				{
					extern UINT8 power_on;

⌨️ 快捷键说明

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