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

📄 pmpkey.c

📁 Sunplus 8202S source code.
💻 C
字号:

//liweihua, 2004-12-24 15:54
#ifdef PMP_KEYBOARD  //xyy 2005-1-10
//PMP I/O DEFINE  //xyy 2005-1-13
#define PMP_IO1 16
#define PMP_IO2 55
#define PMP_IO3 54
#define PMP_IO4 4
#define PMP_POWER_OFF_SELECT 8
#define PMP_CUT_POWER        3
#define PMP_HDD_POWER_CONTROL 30
#define PMP_USB_IC_POWER     7
#define PMP_CUT_PANEL_POWER  17

#define PMP_KEY_PRESS_POLLING (regs0->gpio_in[PMP_IO4/16]&(1<<(PMP_IO4%16)))
#define IO1_STATUS (regs0->gpio_in[PMP_IO1/16]&(1<<(PMP_IO1%16)))
#define IO2_STATUS (regs0->gpio_in[PMP_IO2/16]&(1<<(PMP_IO2%16)))
#define IO3_STATUS (regs0->gpio_in[PMP_IO3/16]&(1<<(PMP_IO3%16)))
#define GET_PMP_POWER_OFF_SELECT (regs0->gpio_in[PMP_POWER_OFF_SELECT/16]&(1<<(PMP_POWER_OFF_SELECT%16)))

void polling_key_press(void)
{
	int i,temp=5;
	regs0->sft_cfg1 &= ~(0x1 << 3);
	regs0->sft_cfg1 &= ~(0x1 << 7);
	regs0->sft_cfg8 &= ~(0x1 << 9);
	GPIO_M_SET(PMP_IO1,1);                                                                                                                                                                            
	GPIO_E_SET(PMP_IO1,1);
	
	regs0->sft_cfg3 &= ~(0x1 << 3);
	regs0->sft_cfg8 &= ~(0x3 << 8);
	GPIO_M_SET(PMP_IO2,1);
	GPIO_E_SET(PMP_IO2,1);

	for(i=0;i<temp;i++)
	{
		GPIO_E_SET(PMP_IO1,1);
		GPIO_E_SET(PMP_IO2,0);
		GPIO_E_SET(PMP_IO3,0);
		GPIO_O_SET(PMP_IO1,1);
	}
	if(IO2_STATUS)
	{
	    #ifdef IRCMD_DBG
		psprintf(RegionValStr[REGION1],"SW6");
	 	PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
	 	#endif
	 	pmpkey_down();
	 }	
	else if(IO3_STATUS)
	{
	    #ifdef IRCMD_DBG
		psprintf(RegionValStr[REGION1],"SW10");
	 	PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
	 	#endif
	}

	for(i=0;i<temp;i++)
	{
		GPIO_E_SET(PMP_IO1,0);
		GPIO_E_SET(PMP_IO2,1);
		GPIO_E_SET(PMP_IO3,0);
		GPIO_O_SET(PMP_IO2,1);
	}

	if(IO1_STATUS)
	{
	    #ifdef IRCMD_DBG
		psprintf(RegionValStr[REGION1],"SW2");
	 	PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
	 	#endif
	 	pmpkey_up();
	 }	
	else if(IO3_STATUS)
	{
	    #ifdef IRCMD_DBG
		psprintf(RegionValStr[REGION1],"SW9");
	 	PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
	 	#endif
	 	pmpkey_select();
	}

	for(i=0;i<temp;i++)
	{
		GPIO_E_SET(PMP_IO1,0);
		GPIO_E_SET(PMP_IO2,0);
		GPIO_E_SET(PMP_IO3,1);
		GPIO_O_SET(PMP_IO3,1);
	}	
	if(IO1_STATUS)
	{
	    #ifdef IRCMD_DBG
		psprintf(RegionValStr[REGION1],"SW1");
	 	PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
	 	#endif
	 	pmpkey_left();
	 }	
	else if(IO2_STATUS)
	{
	    #ifdef IRCMD_DBG
		psprintf(RegionValStr[REGION1],"SW4");
	 	PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
	 	#endif
	 	pmpkey_right();
	}
}
void polling_pmpkey(void)
{
	//static int iTmCount;
	regs0->sft_cfg1 &= ~(0x1 << 3);
	regs0->sft_cfg1 &= ~(0x1 << 7);
	regs0->sft_cfg8 &= ~(0x1 << 9);
	GPIO_M_SET(PMP_IO1,1);                                                                                                                                                                            
	GPIO_E_SET(PMP_IO1,1);
//	GPIO_O_SET(PMP_IO1,1);
	
	regs0->sft_cfg3 &= ~(0x1 << 3);
	regs0->sft_cfg8 &= ~(0x3 << 8);
	GPIO_M_SET(PMP_IO2,1);
	GPIO_E_SET(PMP_IO2,1);
//	GPIO_O_SET(PMP_IO2,1);   
	if(!PMP_KEY_PRESS_POLLING)
		polling_key_press();
	if(GET_PMP_POWER_OFF_SELECT)
	{
		printf("-------------  hello ----------------\n");
		//iTmCount++;
		//if(iTmCount==1)
			pmpkey_return();
	}
	/*else
		iTmCount=0;
	if(iTmCount > 5)
	{
		printf("==========   hello hello hello ===========\n");
		GPIO_E_SET(PMP_POWER_OFF_SELECT,1);
		GPIO_O_SET(PMP_POWER_OFF_SELECT,0);
		delay_1ms(1000);
		GPIO_E_SET(PMP_POWER_OFF_SELECT,0);
	}*/
 
}
void Set_PMP_Key(void)
{
    regs0->sft_cfg2 &= ~(0x3<<10);
	regs0->sft_cfg4 &= ~(0x1<<1);
	regs0->sft_cfg8 &= ~(0x3<<8);
	GPIO_M_SET(PMP_IO4,1);
	GPIO_E_SET(PMP_IO4,0);
    
	regs0->sft_cfg3 &= ~(0x1 << 2);
	regs0->sft_cfg8 &= ~(0x3 << 8);
	GPIO_M_SET(PMP_IO3,1);
	GPIO_E_SET(PMP_IO3,1);
	GPIO_O_SET(PMP_IO3,1);

	regs0->sft_cfg1 &= ~(0x1 << 3);
	regs0->sft_cfg1 &= ~(0x1 << 7);
	regs0->sft_cfg8 &= ~(0x1 << 9);
	GPIO_M_SET(PMP_IO1,1);                                                                                                                                                                            
	GPIO_E_SET(PMP_IO1,1);
	GPIO_O_SET(PMP_IO1,1);
	
	regs0->sft_cfg3 &= ~(0x1 << 3);
	regs0->sft_cfg8 &= ~(0x3 << 8);
	GPIO_M_SET(PMP_IO2,1);
	GPIO_E_SET(PMP_IO2,1);
	GPIO_O_SET(PMP_IO2,1);   

	regs0->sft_cfg2 &= ~(0x1 << 10);
	regs0->sft_cfg4 &= ~(0x1 << 6);
	regs0->sft_cfg8 &= ~(0x1 << 9);
	GPIO_M_SET(PMP_POWER_OFF_SELECT,1);                                                                                                                                                                            
	GPIO_E_SET(PMP_POWER_OFF_SELECT,0);
	GPIO_O_SET(PMP_POWER_OFF_SELECT,0);

	regs0->sft_cfg2 &= ~(0x1 << 10);
	regs0->sft_cfg4 &= ~(0x1 << 3);
	regs0->sft_cfg8 &= ~(0x3 << 8);
	GPIO_M_SET(PMP_CUT_POWER,1);                                                                                                                                                                            
	GPIO_E_SET(PMP_CUT_POWER,1);
	GPIO_O_SET(PMP_CUT_POWER,0);

	regs0->sft_cfg2 &= ~(0x3 << 4);
	regs0->sft_cfg2 &= ~(0x1 << 10);
	regs0->sft_cfg1 &= ~(0x2 << 9);
	regs0->sft_cfg0 &= ~(0x1 << 12);
	regs0->sft_cfg8 &= ~(0x1f << 6);
	regs0->sft_cfg7 &= ~(0x0 << 1);

	regs0->sft_cfg2 &= ~(0xa << 2);
	regs0->sft_cfg7 &= ~(0x3 << 6);
	regs0->sft_cfg8 &= ~(0x1 << 2);
	regs0->sft_cfg8 &= ~(0x1 << 9);
	regs0->sft_cfg7 &= ~(0x3 << 14);
	regs0->sft_cfg9 &= ~(0x2 << 13);
	regs0->sft_cfg6 &= ~(0x1 << 4);
	GPIO_M_SET(PMP_USB_IC_POWER,1);                                                                                                                                                                            
	GPIO_E_SET(PMP_USB_IC_POWER,1);
	GPIO_O_SET(PMP_USB_IC_POWER,0);

	regs0->sft_cfg1 &= ~(0x1 << 2);
	regs0->sft_cfg8 &= ~(0x1 << 9);
	GPIO_M_SET(PMP_CUT_PANEL_POWER,1);                                                                                                                                                                            
	GPIO_E_SET(PMP_CUT_PANEL_POWER,1);
	GPIO_O_SET(PMP_CUT_PANEL_POWER,0);

	regs0->sft_cfg2 &= ~(0x3<<10);
	GPIO_M_SET(PMP_IO4,1);
	GPIO_E_SET(PMP_IO4,0);
    
	regs0->sft_cfg3 &= ~(0x1 << 2);
	GPIO_M_SET(PMP_IO3,1);
	GPIO_E_SET(PMP_IO3,1);
	GPIO_O_SET(PMP_IO3,1);

	regs0->sft_cfg2 &= ~(0x1 << 2);
	regs0->sft_cfg3 &= ~(0x01 << 12);
	regs0->sft_cfg4 &= ~(0x3 << 13);
	GPIO_M_SET(PMP_IO1,1);                                                                                                                                                                            
	GPIO_E_SET(PMP_IO1,1);
	GPIO_O_SET(PMP_IO1,1);
	
	GPIO_M_SET(PMP_IO2,1);
	GPIO_E_SET(PMP_IO2,1);
	GPIO_O_SET(PMP_IO2,1);    
}
#endif	

void pmpkey_up(void)
{
    if((pFsJpeg->gifsState == FS_STATE_MP3)||(pFsJpeg->gifsState == FS_STATE_OTHER))
        ircmd_volume_up();
    else
    HDDCard_up();
    return;
}
void pmpkey_down(void)
{
    if((pFsJpeg->gifsState == FS_STATE_MP3)||(pFsJpeg->gifsState == FS_STATE_OTHER))
        ircmd_volume_down();
    else
    HDDCard_down();
    return;
}
void pmpkey_left(void)
{
    HDDCard_left();
    return;
}
void pmpkey_right(void)
{
    HDDCard_right();
    return;
}
void pmpkey_return(void)
{
    #ifdef PMP_KEYBOARD
    if(pFsJpeg->gifsState == FS_STATE_MODE)
    {
        GPIO_E_SET(PMP_POWER_OFF_SELECT,1);
		GPIO_O_SET(PMP_POWER_OFF_SELECT,0);
		delay_1ms(1000);
		GPIO_E_SET(PMP_POWER_OFF_SELECT,0);
    }
    else
    #endif
    HDDCard_return();
    return;
}
void pmpkey_select(void)
{
    HDDCard_select();
    return;
}

⌨️ 快捷键说明

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