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

📄 vfd_drv_old.c

📁 Sunplus 8202S source code.
💻 C
字号:
  
/*
** FUNCTION
** polling_vfdr
**
** DESCRIPTION
** check if polling-ready
*/
void polling_vfdr(void)
{
	
#ifdef SUPPORT_SPI_QSI
  //not use
#endif


#ifndef  SUPPORT_SPI_QSI


    
#ifdef SUPPORT_VFD
	UINT8   i;
	UINT32  temp;
	UINT32  key_data;
	static UINT8 key_state = 0, count = 0;
	static UINT32 key_previ = 0;
	
	
	if(regs0->iop_data[0] & FUN_MASK)
		return;
	
	if(vfd_state == VFD_READ)
	{
		regs0->iop_data[VFD_CMD] = 0x42;	//key polling
		regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |
			(FUN_VFD_READ | 3);
		
		vfd_state = VFD_READ_BUSY;
	}
	else if(vfd_state == VFD_READ_BUSY)
	{
		
		key_data =
			(reverse_fun(regs0->iop_data[VFD_DAT0])) |
			(reverse_fun(regs0->iop_data[VFD_DAT0] >> 8) << 8) |
			(reverse_fun(regs0->iop_data[VFD_DAT1]) << 16);
		
		//printf("key_data=%x\n",key_data);
		//if (key_data == 0xffffff) 
		//{
		//break; //VFD buttons are pulled-high, if we don't connect VFD, we skip it, Jeff 20020612
		//printf("polling_vfdr:return\n");
		//return;
		//}           
		
		if(key_data == 0)
		{
			key_state = 0;
			key_previ = 0;
		}
		else
		{
			if(key_data != key_previ)
			{
				key_state = 1;
				key_previ = key_data;
			}
			else
			{
				if(key_state == 1)
				{
					key_state = 2;
					
					for(i = 0; i < 24; i++)
					{
						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;
							}
						}
					}
                                        save_srn_start_t = get_rtc_val();//axel 2004/1/15 05:31,avoid looping PAUSE<->PLAY VFD key and entering screen saver				
#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
					}
					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;
							else
								bJpgVFDPause = 1;
						}
						else if(bJpgVFDPause == 1)
						{
							bJpgVFDPause = 2;
						}
					}
					else if(key_data<40)
					{
						extern UINT8 power_on;
						
						if(power_on == 2)		//2-6-18 13:36 to avoid accepting a VFD_key in the beginning. 
						{
							power_on--;
							if(key_data != 1)
							{
								//save_srn_start_t = get_rtc_val();//axel, 2004/1/15 05:32 move to top
								call_ir_func(vfd_keycode[key_data - 1]);
							}
						}
						else
						{
							//save_srn_start_t = get_rtc_val();//axel,2004/1/15 05:33 move to top
							call_ir_func(vfd_keycode[key_data - 1]);
						}
					}
#endif
				}
			}
		}
		
		vfd_state = VFD_WRITE;
		update_vfd_data();
	}
	else
	{
		regs0->iop_data[VFD_CMD] = (0xc0 | count);
		regs0->iop_data[VFD_DAT0] = vfd_mem[count + 1] << 8 | vfd_mem[count];
		regs0->iop_data[VFD_DAT1] = vfd_mem[count + 3] << 8 | vfd_mem[count + 2];
		regs0->iop_data[VFD_DAT2] = vfd_mem[count + 5] << 8 | vfd_mem[count + 4];
		
		regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |
			(FUN_VFD_WRITE | VFD_DAT_LEN6);
		
		/* transfer data size add by chichang 2001 6/6 */
		count += 6;
		if(count == VFD_DISPLAY_SIZE)
		{
			count = 0;
			vfd_state = VFD_READ;
		}
		
	}
#endif
	
#endif //support spi qsi    
}

⌨️ 快捷键说明

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