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

📄 vfd_io_util.c

📁 mp3 player program please read carefully.
💻 C
📖 第 1 页 / 共 2 页
字号:
#if defined(GPIO_KEY_LIGHT)

	//   DATA        gpio56       IN/OUT
	//   STB         gpio57       IN/OUT
	//   CLK         gpio58       IN/OUT

#ifdef HANYANG_DP02CD_WF_8202S_16//added by wangwei,2005-2-3 15:33
void check_hanyang_dp02cd_wf_key_status(void)
{

	UINT32  key_data;
	static int key_state = 0;
	static UINT32 key_previ = 0x80E1;
	
	//init_keylight_io();
    /*regs0->gpio_oe[21 / 16] &= (~0x1 << (21 % 16));
	regs0->gpio_oe[22 / 16] &= (~0x1 << (22 % 16));
	regs0->gpio_oe[23 / 16] &= (~0x1 << (23 % 16));
	*/
	/*regs0->gpio_oe[15 / 16] &= (~0x1 << (15 % 16));
	regs0->gpio_oe[16 / 16] &= (~0x1 << (16 % 16));
*/
	key_data = (regs0->gpio_in[21 / 16] & 0x00e1)|(regs0->gpio_in[15 / 16]&0x8000);///yangli 

	if(key_data != key_previ)
	{
		//printf("1.key_previ=%x\n",key_previ);
		//key_previ = 0xf0;
		#ifdef VFD_KEY_TEST
	    psprintf(RegionValStr[REGION1], "KEY %x", key_data);
	    PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
        #endif
		switch (key_data)
		{
		
		case 0x80c1:
		
			if(key_state == 2)
			{
				
				call_ir_func(IRC_PLAY);
				//printf("EJECT\n");
			}
			//printf("EEE:key_state=%x\n",key_state);
			key_state = 1;
			
			break;
		case 0x80e0:
		
			if(key_state == 2)
			{
			    call_ir_func(IRC_EJECT); //call_ir_func(IRC_PAUSEPLAY);//HHQ
			}
			//printf("EEE:key_state=%x\n",key_state);
			key_state = 1;
			
			break;
		case 0x80a1:
		
			if(key_state == 2)
			{
				call_ir_func(IRC_STOP);
				//printf("STOP\n");
			}
			//printf("EEE:key_state=%x\n",key_state);
			key_state = 1;
			
			break;
		/*case 0x00E1:
		
			if(key_state == 2)
			{
				call_ir_func(IRC_BACKWARD);
				//printf("EJECT\n");
			}
			//printf("EEE:key_state=%x\n",key_state);
			key_state = 1;
			break;

		case 0x80E0:
		
			if(key_state == 2)
			{
				call_ir_func(IRC_FORWARD);
				//printf("EJECT\n");
			}
			//printf("EEE:key_state=%x\n",key_state);
			key_state = 1;
			
			break;*/
		default:
			key_state = 2;
			break;
		}
	}
	else
	{
		//printf("out:key_state=%x\n",key_state);
		key_previ = key_data;
		key_state = 2;
#if defined(NEXT_FORWARD_IN_A_KEY)||defined(NEW_NEXT_FORWARD_IN_A_KEY)
		key_data_flag=0;
#endif//#if defined(NEXT_FORWARD_IN_A_KEY)||defined(NEW_NEXT_FORWARD_IN_A_KEY)	
	}
		
}

#elif defined(HANYANG_DP02CD_WG_8202S_16)
void delay_time(UINT32 counter)
{
    UINT32 i,j;
    for(i=0;i<counter;i++)
    {
        j++;
    }    
}
static inline void check_hanyang_dp02cd_wg_led(void)
{
    #ifdef READ_DISC_LED_BLINKING
    static BYTE counter = 0;
    if(play_state == VCD_STATE_CLOSE)
    {
        counter++;
        if(counter < 7)
        {
            GPIO_O_SET(21,0);
            GPIO_O_SET(22,0);
        }
        else
        {
            GPIO_O_SET(21,1);
            GPIO_O_SET(22,0);
            if(counter > 12)
                counter = 0;
        }
    }
    else
    #endif//READ_DISC_LED_BLINKING
    {
        GPIO_O_SET(21, 1);// GREEN : NORMAL
        GPIO_O_SET(22, 0);// RED   : STANDBY
    }
}

#define GET_GPIO_15    0x0010
#define GET_GPIO_16    0x0020
#define GET_GPIO_23    0x0040
#define GPIO_21_OUTPUT 0x0001
#define GPIO_22_OUTPUT 0x0002
void check_hanyang_dp02cd_wg_keylight_status(void)
{
    //PIN65    : GPIO 15 
    //PIN66    : GPIO 16 -> PULL LOW,INPUT PIN.
    //VFD_DATA : GPIO 23 
    //VFD_CLK  : GPIO 21  
    //VFD_STB  : GPIO 22 -  PULL HIGH,OUTPUT PIN.
    
    UINT32 key_output_data = 0;
    UINT32 key_data;
    static int key_state = 0;
    static UINT32 key_previ = 0xfff;
    //////////////////////////////////////////////////////////////////////////////////////////
    GPIO_O_SET(21, 1);
    GPIO_O_SET(22, 0);
    delay_time(0xff);// 1ms is too long for LED,it'll blink.
    key_output_data = GPIO_21_OUTPUT;
    if(GPIO_I_GET(15) && (!GPIO_I_GET(16)) && (!GPIO_I_GET(23)))
    {
        key_data = key_output_data | GET_GPIO_15;
    }
    else if((!GPIO_I_GET(15)) && GPIO_I_GET(16) && (!GPIO_I_GET(23)))
    {
        key_data = key_output_data | GET_GPIO_16;
    }
    else if((!GPIO_I_GET(15)) && (!GPIO_I_GET(16)) && GPIO_I_GET(23))
    {
        key_data = key_output_data | GET_GPIO_23;    
    }
    
    if((key_data != 0x11) && (key_data != 0x21) && (key_data != 0x41))
    {
        GPIO_O_SET(21, 0);
        GPIO_O_SET(22, 1);
        delay_time(0xff);
        key_output_data = GPIO_22_OUTPUT;
        if(GPIO_I_GET(15) && (!GPIO_I_GET(16)) && (!GPIO_I_GET(23)))
        {
            key_data = key_output_data | GET_GPIO_15;
        }
        else if((!GPIO_I_GET(15)) && GPIO_I_GET(16) && (!GPIO_I_GET(23)))
        {
            key_data = key_output_data | GET_GPIO_16;
        }
        else if((!GPIO_I_GET(15)) && (!GPIO_I_GET(16)) && GPIO_I_GET(23))
        {
            key_data = key_output_data | GET_GPIO_23;    
        }
    }
    GPIO_O_SET(21, 0);
    GPIO_O_SET(22, 0);

    if((key_data != 0x11)&&(key_data != 0x21)&&(key_data != 0x41)&&(key_data != 0x12)&&(key_data != 0x22)&&(key_data != 0x42))
        key_data = 0;
    //////////////////////////////////////////////////////////////////////////////////////////
    #if 0
    psprintf(RegionValStr[REGION1], "KEY %x", key_data);
    PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
    #endif

    check_hanyang_dp02cd_wg_led();// lighting LED

    #if (defined(GPIO_LONG_NEXT_SHORT_FORWARD_IN_A_KEY)||defined(GPIO_LONG_FORWARD_SHORT_NEXT_IN_A_KEY))
	static int gpio_func_prev_key_flag = 0;
	static int gpio_func_next_key_flag = 0;
	static int gpio_func_key_data = 0;
    #endif//(defined(GPIO_LONG_NEXT_SHORT_FORWARD_IN_A_KEY)||defined(GPIO_LONG_FORWARD_SHORT_NEXT_IN_A_KEY))

	if(key_previ != key_data)
	{
		key_previ = key_data;
		key_state = 2;

        #ifdef GPIO_LONG_NEXT_SHORT_FORWARD_IN_A_KEY
        if(gpio_func_prev_key_flag==1)
        {
            call_ir_func(IRC_BACKWARD);
            gpio_func_prev_key_flag=0;
        }    
        if(gpio_func_next_key_flag==1)
        {
            call_ir_func(IRC_FORWARD);
            gpio_func_next_key_flag=0;
        }
        gpio_func_key_data=0;
        #elif defined(GPIO_LONG_FORWARD_SHORT_NEXT_IN_A_KEY)
        if(gpio_func_prev_key_flag==1)
        {
            call_ir_func(IRC_PREV);
            gpio_func_prev_key_flag=0;
        }    
        if(gpio_func_next_key_flag==1)
        {
            call_ir_func(IRC_NEXT);
            gpio_func_next_key_flag=0;
        }
        gpio_func_key_data=0;
        #endif//GPIO_LONG_NEXT_SHORT_FORWARD_IN_A_KEY
	}
    else
	{
		switch (key_data)
		{
            case 0x11:
                if(key_state == 2)
                {
                    call_ir_func(IRC_PAUSEPLAY);
                }
                key_state = 1;
                break;
            case 0x12:
                if(key_state == 2)
                {
                    call_ir_func(IRC_EJECT);
                }
                key_state = 1;
                break;
            case 0x21:
                if(key_state == 2)
                {
                    call_ir_func(IRC_STOP);
                }
                key_state = 1;
                break;
            case 0x41:
                if(key_state == 2)
                {
                    call_ir_func(IRC_POWER);
                }
                key_state = 1;
                break;
            case 0x42:
                #ifdef GPIO_LONG_NEXT_SHORT_FORWARD_IN_A_KEY
                if(key_state == 2)
                {
                    gpio_func_key_data++;
                    if((gpio_func_key_data>5)&&(gpio_func_key_data<40))
                        gpio_func_prev_key_flag=1;
                    else if(gpio_func_key_data>=40)
                        gpio_func_prev_key_flag=2;

                    if((gpio_func_prev_key_flag==2)&&(gpio_func_key_data%60==0))
                    {
                        call_ir_func(IRC_PREV);
                    }    
                }
                break;
                #elif defined(GPIO_LONG_FORWARD_SHORT_NEXT_IN_A_KEY)
                {
                    gpio_func_key_data++;
                    if((gpio_func_key_data>5)&&(gpio_func_key_data<40))
                        gpio_func_prev_key_flag=1;
                    else if(gpio_func_key_data>=40)
                        gpio_func_prev_key_flag=2;

                    if((gpio_func_prev_key_flag==2)&&(gpio_func_key_data%60==0))
                    {
                        call_ir_func(IRC_BACKWARD);
                    }    
                }
                break;
                #else
                if(key_state == 2)
                {
                    call_ir_func(IRC_PREV);
                }
                key_state = 1;
                break;
                #endif//GPIO_LONG_NEXT_SHORT_FORWARD_IN_A_KEY	
            case 0x22:
                #ifdef GPIO_LONG_NEXT_SHORT_FORWARD_IN_A_KEY
                if(key_state == 2)
                {
                    gpio_func_key_data++;
                    if((gpio_func_key_data>5)&&(gpio_func_key_data<40))
                        gpio_func_next_key_flag=1;
                    else if(gpio_func_key_data>=40)
                        gpio_func_next_key_flag=2;

                    if((gpio_func_next_key_flag==2)&&(gpio_func_key_data%60==0))
                    {
                        call_ir_func(IRC_NEXT);
                    }    
                }
                break;
                #elif defined(GPIO_LONG_FORWARD_SHORT_NEXT_IN_A_KEY)
                if(key_state == 2)
                {
                    gpio_func_key_data++;
                    if((gpio_func_key_data>5)&&(gpio_func_key_data<40))
                        gpio_func_next_key_flag=1;
                    else if(gpio_func_key_data>=40)
                        gpio_func_next_key_flag=2;

                    if((gpio_func_next_key_flag==2)&&(gpio_func_key_data%60==0))
                    {
                        call_ir_func(IRC_FORWARD);
                    }    
                }
                break;
                #else
                if(key_state == 2)
                {
                    call_ir_func(IRC_NEXT);
                }
                key_state = 1;
                break;
                #endif//GPIO_LONG_NEXT_SHORT_FORWARD_IN_A_KEY
            default:
                key_state = 2;
                break;
		}
	}
}
#endif//define HANYANG_DP02CD_WF_8202S_16

#if defined(USE_VFD_GAME_PORT_TO_KEYBOARD_HJ)

#ifdef USE_VFD_GAME_PORT_TO_KEYBOARD_HJ_2326

void check_hj_keylight_status(void)
{

	UINT32  key_data;
	UINT32  key_data1;
	UINT32  key_data2;
//	UINT32  key_data3;
	static int key_state = 0;
	static UINT32 key_previ = 0xffff;
	
//	regs0->gpio_oe[54 / 16] &= ~(0x7 << (54 % 16));
//	regs0->gpio_oe[42 / 16] &= ~(0x3 << (42 % 16));

	//key_data = ((regs0->gpio_in[42 / 16] & (0x3 << (42 % 16))) |(regs0->gpio_in[54 / 16] & (0x7 << (54 % 16))) );
	//key_data =(( regs0->gpio_in[42 / 16] & (0x3 << (42 % 16))) |(regs0->gpio_in[54 / 16] & (0x7 << (54 % 16))) );
	key_data1 = regs0->gpio_in[14 / 16] & (0x3 << (14 % 16));//14
	key_data2 = regs0->gpio_in[54 / 16] & (0x7 << (54 % 16));//6,7,8
//	key_data2 = regs0->gpio_in[4 / 16] & (0x1 << (4 % 16));//4
//	key_data3 = regs0->gpio_in[54 / 16] & (0x7 << (54 % 16));//6,7,8
	key_data =(key_data1|key_data2);//15,14,6,7,8
	
	//printf("key_data=%x\n",key_data);
	//return;
	//printf("regs0->sft_cfg6=%x\n",regs0->sft_cfg6);
	//printf("regs0->gpio_oe[14 / 16]=%x\n",regs0->gpio_oe[14 / 16] );

	//printf("key_state=%x\n",key_state);
	//printf("key_previ=%x\n",key_previ);
	//regs0->gpio_out[56 / 16] &= ~(0x1 << (56 % 16));



	if(key_data == key_previ)
	{
		//printf("1.key_previ=%x\n",key_previ);
		//key_previ = 0xf0;

		switch (key_data)
		{
		case 0x81C0:

			if(key_state == 2)
			{
				call_ir_func(IRC_EJECT);
				//printf("EJECT\n");
            }
			//printf("EEE:key_state=%x\n",key_state);
			key_state = 1;
			break;

		case 0xc0c0:

			if(key_state == 2)
			{
				call_ir_func(IRC_ONLY_PAUSE);
				//printf("EJECT\n");
            }
			//printf("EEE:key_state=%x\n",key_state);
			key_state = 1;
			break;

		case 0x40C0:

			if(key_state == 2)
			{
				call_ir_func(IRC_BACKWARD);
				//printf("EJECT\n");
            }
			//printf("EEE:key_state=%x\n",key_state);
			key_state = 1;
			break;

		case 0x4180:

			if(key_state == 2)
			{
				call_ir_func(IRC_FORWARD);
				//printf("EJECT\n");
            }
			//printf("EEE:key_state=%x\n",key_state);
			key_state = 1;
			break;


		case 0xc180://GPIO14 IO2//PIN109


			if(key_state == 2)
			{
				call_ir_func(IRC_PREV);
				//printf("EJECT\n");
			}
			//printf("EEE:key_state=%x\n",key_state);
			key_state = 1;
			break;


		case 0xC140://VFD DATA


			if(key_state == 2)
			{
				//printf("STOP\n");
				call_ir_func(IRC_STOP);
			}
			//printf("SS:key_state=%x\n",key_state);
			key_state = 1;
			break;

		case 0xC100:


			if(key_state == 2)
			{
				call_ir_func(IRC_NEXT);
				//printf("EJECT\n");
			}
			//printf("EEE:key_state=%x\n",key_state);
			key_state = 1;
			break;

		case 0x41C0:

			//printf("Ppppppp:key_state=%x\n",key_state);
			if(key_state == 2)
			{
				//printf("PAUSEPLAY\n");
				
				if(Is_JPEG_SlideMode())
				{
					if(bJpgVFDPause == 0)
					{
						//bJpgVFDPause = 1;
						if(play_state == VCD_STATE_PAUSE)	//nono 2-6-28 14:00
						{
							bJpgVFDPause = 2;
							PrintOsdMsg(STR_OS_PLAY,REGION1,1,0);//nono 20030804
						}
						else
							bJpgVFDPause = 1;
					}
					else if(bJpgVFDPause == 1)
					{
						bJpgVFDPause = 2;

⌨️ 快捷键说明

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