📄 vfd_drv_nec16312.c
字号:
}
}
#endif
if(key_data != key_previ)
{
#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
#ifdef TWO_FUNC_IN_VOLUP_VOLDN_KEY //lihj add for Oritron 2004-11-10
uPrevKey = key_previ;
#endif
key_previ = key_data;
if(key_data != 0)
{
#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 TWO_FUNC_IN_VOLUP_VOLDN_KEY //lihj add for Oritron 2004-11-10
if((vfd_keycode[keycode_to_num(key_data)-1]==IRC_VOLUME_UP)||(vfd_keycode[keycode_to_num(key_data)-1]==IRC_VOLUME_DN))
{
uTimeCount++;
}
#endif
#ifdef XINGQIU_RECEIVER_PANNEL
if(key_data == 0x111111) //xulf 2004-3-9
return;
key_data -= 0x111111;
#endif
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();
#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
{
#ifdef FIX_PAUSEPLAY_IN_JPEG_SLIDE
if(play_pause_flay_in_jpeg == 0)
#endif
bJpgVFDPause = 1;
}
}
else if(bJpgVFDPause == 1)
{
bJpgVFDPause = 2;
}
}
else if(key_data<40)
{
extern UINT8 power_on;
#ifdef QISHENG_DVD
standby_cnt=0;
if((vfd_keycode[key_data - 1])==IRC_STOP)
standby_cnt=1;
#endif//#ifdef QISHENG_DVD
#ifdef NEXT_FORWARD_IN_A_KEY
key_data_flag = 1;
#endif//#ifdef NEXT_FORWARD_IN_A_KEY
if(power_on == 2) //2-6-18 13:36 to avoid accepting a VFD_key in the beginning.
{
power_on--;
if(key_data != 1)
{
#ifdef TWO_FUN_IN_ONE_VFD_KEY
if((vfd_keycode[key_data-1]!=IRC_NEXT) && (vfd_keycode[key_data-1]!=IRC_PREV))
#endif //TWO_FUN_IN_ONE_VFD_KEY
#ifdef TWO_FUNC_IN_LEFT_RIGHT_KEY //xyy add for Oritron 2004-11-10
if((vfd_keycode[key_data-1]!=IRC_LEFT) && (vfd_keycode[key_data-1]!=IRC_RIGHT))
#endif
#ifdef TWO_FUNC_IN_VOLUP_VOLDN_KEY //lihj add for Oritron 2004-11-10
if((vfd_keycode[key_data-1]!=IRC_VOLUME_UP) && (vfd_keycode[key_data-1]!=IRC_VOLUME_DN))
#endif
//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
#ifdef USE_VFD_LED_TO_KEY_SOUND_INDICATE //gerry for PANDA6950,3-8-23 17:19
write_vfd_led(0);
#elif defined(USE_VFD_LED_TO_KEY_SOUND_INDICATE_HI_ON) //NONO 2003-10-15 16:14
write_vfd_led(0xf);
#endif
#ifdef TWO_FUN_IN_ONE_VFD_KEY
if((vfd_keycode[key_data-1]!=IRC_NEXT) && (vfd_keycode[key_data-1]!=IRC_PREV))
#endif //TWO_FUN_IN_ONE_VFD_KEY
#ifdef TWO_FUNC_IN_LEFT_RIGHT_KEY //xyy add for Oritron 2004-11-10
if((vfd_keycode[key_data-1]!=IRC_LEFT) && (vfd_keycode[key_data-1]!=IRC_RIGHT))
#endif
#ifdef TWO_FUNC_IN_VOLUP_VOLDN_KEY //lihj add for Oritron 2004-11-10
if((vfd_keycode[key_data-1]!=IRC_VOLUME_UP) && (vfd_keycode[key_data-1]!=IRC_VOLUME_DN))
#endif
call_ir_func(vfd_keycode[key_data - 1]);
}
#ifdef NEXT_FORWARD_IN_A_KEY
key_data_flag = 0;
#endif//#ifdef NEXT_FORWARD_IN_A_KEY
}
#endif
}
else{
#ifdef TWO_FUN_IN_ONE_VFD_KEY
if((key_press_time_count>0)&&(key_press_time_count<15)&&(num_add_flag==0)&&(command_flag))
{
if(vfd_keycode[keycode_to_num(key_previ_temp)-1]==IRC_NEXT)
{
call_ir_func(IRC_NEXT);
command_flag=0;
}
else if(vfd_keycode[keycode_to_num(key_previ_temp)-1]==IRC_PREV)
{
call_ir_func(IRC_PREV);
command_flag=0;
}
}
key_press_time_count=0;
num_add_flag = 0;
#endif //TWO_FUN_IN_ONE_VFD_KEY
#ifdef TWO_FUNC_IN_LEFT_RIGHT_KEY //xyy add for Oritron 2004-11-10 9:58
if((uTimeCount>0)&&(uTimeCount<20)&&(num_add_flag==0)&&(command_flag))
{
if(vfd_keycode[keycode_to_num(uPrevKey)-1]==IRC_LEFT)
{
call_ir_func(IRC_LEFT);
command_flag=0;
}
else if(vfd_keycode[keycode_to_num(uPrevKey)-1]==IRC_RIGHT)
{
call_ir_func(IRC_RIGHT);
command_flag=0;
}
}
uTimeCount=0;
num_add_flag = 0;
#endif
#ifdef TWO_FUNC_IN_VOLUP_VOLDN_KEY //lihjadd for Oritron 2004-11-10 9:58
if((uTimeCount>0)&&(uTimeCount<20)&&(num_add_flag==0)&&(command_flag))
{
if(vfd_keycode[keycode_to_num(uPrevKey)-1]==IRC_VOLUME_UP)
{
call_ir_func(IRC_VOLUME_UP);
command_flag=0;
}
else if(vfd_keycode[keycode_to_num(uPrevKey)-1]==IRC_VOLUME_DN)
{
call_ir_func(IRC_VOLUME_DN);
command_flag=0;
}
}
uTimeCount=0;
num_add_flag = 0;
#endif
#ifdef QISHENG_DVD
standby_cnt = 0;
#endif
}
}
#ifdef QISHENG_DVD
else if ((key_data!=0))
{
if(standby_cnt)
{
standby_cnt++;
printf("*");
if(standby_cnt==50)
{
vfd_state = VFD_WRITE;
call_ir_func(IRC_POWER);
}
}
}
#endif
#if defined(TWO_FUN_IN_ONE_VFD_KEY) || defined(TWO_FUNC_IN_LEFT_RIGHT_KEY)||defined(TWO_FUNC_IN_VOLUP_VOLDN_KEY)//lihj add for Oritron 2004-11-10
else
{
command_flag=1;
}
#endif
vfd_state = VFD_WRITE;
}
else
{
update_vfd_data();
#if defined(SUPPORT_APOGEE_AMP) && defined(AMPVOL_ADJUST_TYPE1)//xyy 2004-4-14
if(full_scrn==APOGEEAMPVOL && timeout_osd[REGION1] == 0)
{
full_scrn = 0;
erase_vfd_mem();
}
#endif
//int i;
#ifdef AUTO_INTO_STANDBY //for tonic dvd//20040206
//if(play_state==VCD_STATE_STOP||system_state==SYSTEM_NODISC)
if(system_state==SYSTEM_STOP||system_state==SYSTEM_NODISC||play_state==VCD_STATE_STOP)
{
//auto_standby_timer++;
//if(auto_standby_timer==100*60*30)
if(auto_standby_timer==100*60*25)
ircmd_power();
}
else
auto_standby_timer=0;
#endif
switch (bWriteState)
{
case 0:
//update to reset mode
#ifndef TEST_VFD
regs0->iop_data[VFD_CMD] = VFDC_SET_DISP | VFD_DISPLAY_MODE;
#else
regs0->iop_data[VFD_CMD] = VFDC_SET_DISP | COMMAND_MODE;
#endif
regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) | (FUN_VFD_WRITE | VFD_DAT_LEN0);
bWriteState++;
break;
case 1:
regs0->iop_data[VFD_CMD] =
VFDC_DISP_CTRL | VFDC_DISP_CTRL_ON | VFDC_DISP_CTRL_10_16;
regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |
(FUN_VFD_WRITE | VFD_DAT_LEN0);
bWriteState++;
break;
#ifdef SM1623_DRIVER_VFD
case 2:
//update in one polling
for(i=0;i<VFD_DISPLAY_SIZE;i+=4) // fengjl upload 3-11-23 17:33
{
regs0->iop_data[VFD_CMD] = (0xc0 | i); // transfer address
if((VFD_DISPLAY_SIZE-i)<=4)//modefied by wangfeng,2003-11-24 10:41
{
regs0->iop_data[VFD_DAT0] = vfd_mem[i + 1] << 8 | vfd_mem[i];
regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |
(FUN_VFD_WRITE | VFD_DAT_LEN2);
}
else
{
regs0->iop_data[VFD_DAT0] = vfd_mem[i + 1] << 8 | vfd_mem[i];
regs0->iop_data[VFD_DAT1] = vfd_mem[i + 3] << 8 | vfd_mem[i + 2];
regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |
(FUN_VFD_WRITE | VFD_DAT_LEN4);
}
WaitIopFunRdy(IOP_RDY_WAIT);
}
vfd_state = VFD_READ;
bWriteState=0;
break;
#elif defined(GBM_LED6961_PANEL)||defined(ET6201_PANNEL)||defined(GBM_PBCY_8202_PANNEL) //gerry for GBM_LED_PANEL,2004-2-4 22:41
case 2:
for(i=0;i<VFD_DISPLAY_SIZE;i+=2)
{
regs0->iop_data[VFD_CMD] = (0xc0 | i);
regs0->iop_data[VFD_DAT0] = vfd_mem[i + 1] << 8 | vfd_mem[i];
regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) | (FUN_VFD_WRITE | VFD_DAT_LEN2);
WaitIopFunRdy(IOP_RDY_WAIT);
}
vfd_state = VFD_READ;
bWriteState=0;
break;
#else//GBM_LED6961_PANEL
case 2:
#if !defined(TP6311_DRIVER_VFD) && !defined(XINGQIU_RECEIVER_PANNEL)&& !defined(KENLOON_PANEL3) && !defined(ORITRON_PANEL)//xyy
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];
#ifndef SKYWORTH_DVD
regs0->iop_data[VFD_DAT2] = vfd_mem[count + 5] << 8 | vfd_mem[count + 4];
#endif
regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |
#ifndef SKYWORTH_DVD
(FUN_VFD_WRITE | VFD_DAT_LEN6);
/* transfer data size add by chichang 2001 6/6 */
count += 6;
#else
(FUN_VFD_WRITE | VFD_DAT_LEN4);
/* transfer data size add by chichang 2001 6/6 */
count += 4;
#endif
if(count == VFD_DISPLAY_SIZE)
{
count = 0;
vfd_state = VFD_READ;
}
#else//#ifndef TP6311_DRIVER_VFD //marked by xyy 2003-10-31 19:42
for(i = 0; i < VFD_DISPLAY_SIZE; i += 6) //xyy 2003-10-31 19:42
{
regs0->iop_data[VFD_CMD] = (0xc0 | i);
regs0->iop_data[VFD_DAT0] = vfd_mem[i + 1] << 8 | vfd_mem[i];
regs0->iop_data[VFD_DAT1] = vfd_mem[i + 3] << 8 | vfd_mem[i + 2];
regs0->iop_data[VFD_DAT2] = vfd_mem[i + 5] << 8 | vfd_mem[i + 4];
regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |
(FUN_VFD_WRITE | VFD_DAT_LEN6);
WaitIopFunRdy(IOP_RDY_WAIT);
}
vfd_state = VFD_READ;
#endif//#ifndef TP6311_DRIVER_VFD
bWriteState=0;
break;
#endif//#ifdef SM1623_DRIVER_VFD
}//write state control
}
#elif defined(GPIO_KEY_LIGHT)//SUPPORT_VFD nono 3-8-18 14:41
check_gpio_keylight_status();
#elif defined(USE_VFDPORT_TRANDATA)
Communication_And_MCU4051();
#endif//SUPPORT_VFD
#endif //support spi qsi
}
#ifdef TP6317_PANNEL //yaowh add 04-10-25
BYTE Read_SW(void)
{
BYTE key_datasw ;
key_datasw= (BYTE)regs0->iop_data[7] ;
//regs0->iop_data[7] = 0xF0 ;
return key_datasw ;
}
void write_vfd_data(BYTE bAddr, BYTE bData)
{
regs0->iop_data[VFD_CMD] = 0x40;//Writes data to display memory
regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) | (FUN_VFD_WRITE | VFD_DAT_LEN0);
regs0->iop_data[VFD_CMD] = (0xc0 | bAddr);//Assress setting command
regs0->iop_data[VFD_DAT0] = 0xff00 | bData;
regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) | (FUN_VFD_WRITE | VFD_DAT_LEN1);
WaitIopFunRdy(IOP_RDY_WAIT);
}
void define_standbykey(void)
{
write_vfd_data(0x16,IR_USER_CODE_LOW8 & 0xff);
write_vfd_data(0x17,IR_USER_CODE_HIGHT8 & 0xff);
write_vfd_data(0x18,TP6317_IR_CODE1 & 0xff);
write_vfd_data(0x19,TP6317_IR_CODE2 & 0xff);
write_vfd_data(0x1a,TP6317_IR_CODE3 & 0xff);
write_vfd_data(0x1b,TP6317_IR_CODE4 & 0xff);
write_vfd_data(0x1c,TP6317_IR_CODE5 & 0xff);
write_vfd_data(0x1d,TP6317_IR_CODE6 & 0xff);
write_vfd_data(0x1e,TP6317_IR_CODE7 & 0xff);
write_vfd_data(0x1f,TP6317_IR_CODE8 & 0xff);
write_vfd_data(0x20,TP6317_VFD_KEY_CODE1 & 0xff);
write_vfd_data(0x21,TP6317_VFD_KEY_CODE2 & 0xff);
write_vfd_data(0x22,TP6317_VFD_KEY_CODE3 & 0xff);
}
void Power_off_define_TP6317_standbykey(void)
{
define_standbykey();
}
void TP6317_int(void)
{
define_standbykey();
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -