📄 vfd_drv_nec16312.c
字号:
#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 + -