📄 vfd_drv_gt1128.c
字号:
//GT1128 DRIVER
void polling_vfdr(void)
{
#ifdef SUPPORT_VFD
UINT8 i;
UINT32 temp;
UINT32 key_data;
static UINT8 count = 0;
static UINT32 key_previ = 0;
static BYTE bWriteState=0;
UINT32 *VfdReadData;
if(regs0->iop_data[0] & FUN_MASK) return;
if(vfd_state == VFD_READ)
{
#ifndef USE_C_IOP//2004-2-12 12:08 lijd
VfdReadData =
((UINT32 *) (SDRAM_BASE_UNCACHED + regs0->iopya * 1024 + 0x5d8)); //fengjl edit 2004-07-02 18:05
//current is read 3 byte on io
key_data = *VfdReadData & 0x00ffffff;
*VfdReadData = 0; // Robert 030313
#else//USE_C_IOP
key_data =(regs0->iop_data[3]);
#endif//USE_C_IOP
if(key_data == 0xffffff)
return;
if(key_data != key_previ)
{
key_previ = key_data;
if(key_data != 0)
{
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();
#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)
{
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 moved to top 2004/2/4 06:13PM
call_ir_func(vfd_keycode[key_data - 1]);
}
}
else
{
//save_srn_start_t = get_rtc_val(); //axel moved to top 2004/2/4 06:13PM
call_ir_func(vfd_keycode[key_data - 1]);
}
}
#endif
}
}
vfd_state = VFD_WRITE;
update_vfd_data();
}
else
{
switch (bWriteState)
{
case 0:
regs0->iop_data[VFD_CMD] =(count*2)<<8;//in cmd we only send address! write cmd deal in iop!
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[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |(FUN_VFD_WRITE | VFD_DAT_LEN4);
/* transfer data size add by chichang 2001 6/6 */
count += 4;
if(count == VFD_DISPLAY_SIZE)
{
count = 0;
vfd_state = VFD_READ;
}
bWriteState=0;
break;
default:
bWriteState=0;
}
}
#endif//SUPPORT_VFD
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -