亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usb_class_requests.c

?? USB CDC and HID composite unit.
?? C
?? 第 1 頁 / 共 2 頁
字號:
//	 0x0000: stop break
//
//-----------------------------------------------------------------------------

void CS_Send_Break(void)
{
	if (   (Setup.bmRequestType == OUT_CL_INTERFACE)
		&& (Setup.wLength.i == 0) )
	{
		Send_Break( Setup.wValue.i );
		setup_handled = TRUE;
	}
}

//-----------------------------------------------------------------------------
// swap_endian_long
//-----------------------------------------------------------------------------
// swap endian for long varialbe
//-----------------------------------------------------------------------------

#if defined BIG_ENDIAN

void swap_endian_long( ULONG idata *lptr )
{
	BYTE tmp[4];
	BYTE idata * ptr = (BYTE idata *)lptr;

	tmp[3] = ptr[0];
	tmp[2] = ptr[1];
	tmp[1] = ptr[2];
	tmp[0] = ptr[3];

	ptr[0] = tmp[0];
	ptr[1] = tmp[1];
	ptr[2] = tmp[2];
	ptr[3] = tmp[3];
}

#endif // end of BIG_ENDIAN



//-----------------------------------------------------------------------------
// HID class request handlers
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// Get_Report
//-----------------------------------------------------------------------------
//
//	mandatory to HID class
//	Send report to host via control pipe
//	Input and feature report are supported
//
//-----------------------------------------------------------------------------

static void Get_Report( void )
{
	if (   (Setup.bmRequestType == IN_CL_INTERFACE)
		&& (Setup.wValue.c[LSB] == 0) )				// Report ID
	{
		switch ( Setup.wValue.c[MSB] )
		{
			case HID_REPORT_TYPE_INPUT:				// Input report
				DataPtr = (BYTE *)HID_InOut_Packet;
				DataSize = HID_IN_REPORT_SIZE;
				setup_handled = TRUE;
				break;
/*
			case HID_REPORT_TYPE_FEATURE:			// Feature report
				DataPtr = (BYTE *)cs_temp_buffer;
				DataSize = CS_TEMP_BUF_SIZE;
				setup_handled = TRUE;
				break;
*/
			default:
				break;
		}
	}

	if ( setup_handled )
	{
		// Set serviced Setup Packet, Endpoint 0 intransmit mode, 
		Ep_Status0 = EP_TX;						
		if ( DataSize > Setup.wLength.i )
			DataSize = Setup.wLength.i;				// Send only requested amount of data
	}
}

/*
//-----------------------------------------------------------------------------
// Set_Report
//-----------------------------------------------------------------------------
//
//	Receive report from host via control pipe
//	Output and feature report are supported
//
//-----------------------------------------------------------------------------

static void Set_Report( void )
{
	if (   (Setup.bmRequestType == OUT_CL_INTERFACE)
		&& (Setup.wValue.c[LSB] == 0) )				// Report ID
	{
		switch ( Setup.wValue.c[MSB] )
		{
			case HID_REPORT_TYPE_OUTPUT:			// Output report
				DataPtr = (BYTE *)cs_temp_buffer;
				setup_handled = TRUE;
				break;

			case HID_REPORT_TYPE_FEATURE:			// Feature report
				DataPtr = (BYTE *)cs_temp_buffer;
				setup_handled = TRUE;
				break;

			default:
				break;
		}
	}

	if ( setup_handled )
	{
		// Set serviced Setup Packet, Endpoint 0 intransmit mode, 
		Ep_Status0 = EP_RX;						
		DataSize = CS_TEMP_BUF_SIZE;
		if ( DataSize > Setup.wLength.i )
			DataSize = Setup.wLength.i;				// Send only requested amount of data
	}
}

//-----------------------------------------------------------------------------
// Get_Idle
//-----------------------------------------------------------------------------
//	
//	return current idle rate for a specified input report over interrupt IN pipe
//
//-----------------------------------------------------------------------------

static void Get_Idle( void )
{
	if (   (Setup.bmRequestType == IN_CL_INTERFACE)
		&& (Setup.wValue.c[MSB] == 0)			// must be 0
		&& (Setup.wLength.i == 1) )				// request size is always 1
	{
		switch ( Setup.wValue.c[LSB] )				// Report ID
		{
			case 1:
				cs_temp_buffer[0] = IDLE_RATE_1;
				DataPtr = (BYTE *)cs_temp_buffer;
				setup_handled = TRUE;
				break;

			default:
				break;
	}

	if ( setup_handled )
	{
		// Set serviced Setup Packet, Endpoint 0 intransmit mode, 
		Ep_Status0 = EP_TX;						
		DataSize = 1;
	}
}

//-----------------------------------------------------------------------------
// Set_Idle
//-----------------------------------------------------------------------------
//
//	Set idle rate to specified duration
//	  When duration equals to zero, stop the report
//
//-----------------------------------------------------------------------------

static void Set_Idle( void )
{
	if (   (Setup.bmRequestType == OUT_CL_INTERFACE)
		&& (Setup.wLength.i == 0) )					// Length must be 0
	{
		switch ( Setup.wValue.c[LSB] )					// Report ID
		{
			case 0:
				IDLE_RATE_1 = Setup.wValue.c[MSB];		// set Duration to all report ID
				IDLE_RATE_2 = IDLE_RATE_1;
				setup_handled = TRUE;
				break;

			case 1:
				IDLE_RATE_1 = Setup.wValue.c[MSB];		// set Duration to specified report ID
				setup_handled = TRUE;
				break;

			default:
				break;
		}
	}
}

//-----------------------------------------------------------------------------
// Get_Protocol
//-----------------------------------------------------------------------------
//
//	Just for boot device (mouse/keyboard)
//	return active protocol, either boot or report
//
//-----------------------------------------------------------------------------

bit cs_boot_protocol = HID_PROTOCOL_REPORT;

static uchar code cs_zero[1] = { 0 };
static uchar code cs_one[1]  = { 1 };

static void Get_Protocol( void )
{
	if (   (Setup.bmRequestType == IN_CL_INTERFACE)
		&& (Setup.wValue.i == 0)				// must be 0
		&& (Setup.wLength.i == 1) )				// request size is always 1
	{
		if ( cs_boot_protocol == HID_PROTOCOL_BOOT )
			DataPtr = (BYTE *)cs_zero;
		else
			DataPtr = (BYTE *)cs_one;
		DataSize = 1;
		Ep_Status0 = EP_TX;						
		setup_handled = TRUE;
	}
}

//-----------------------------------------------------------------------------
// Set_Protocol
//-----------------------------------------------------------------------------
//
//	Just for boot device
//	Switch active protocol
//
//-----------------------------------------------------------------------------

static void Set_Protocol( void )
{
	if (   (Setup.bmRequestType == OUT_CL_INTERFACE)
		&& (Setup.wValue.c[MSB] == 0)			// upper byte of protocol selector
		&& (Setup.wLength.i == 0) )				// Length must be 0
	{
		switch ( Setup.wValue.c[LSB] )			// 
		{
			case HID_PROTOCOL_BOOT:
				cs_boot_protocol = HID_PROTOCOL_BOOT;
				setup_handled = TRUE;
				break;

			case HID_PROTOCOL_REPORT:
				cs_boot_protocol = HID_PROTOCOL_REPORT;
				setup_handled = TRUE;
				break;

			default:
				break;
		}
	}
}

*/


//-----------------------------------------------------------------------------
// End Of File
//-----------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区高清在线| 蜜桃视频第一区免费观看| 亚洲在线观看免费| 久久99精品国产.久久久久| 99精品欧美一区二区三区综合在线| 777a∨成人精品桃花网| 亚洲视频电影在线| 国产精品一二一区| 欧美一区二区大片| 午夜精彩视频在线观看不卡| 成人va在线观看| 久久在线观看免费| 麻豆精品新av中文字幕| 欧美日韩在线精品一区二区三区激情| 国产网站一区二区| 精品一区二区在线观看| 欧美精品vⅰdeose4hd| 亚洲老司机在线| 99久久夜色精品国产网站| 久久精品免费在线观看| 久久99精品国产| 欧美成人vr18sexvr| 日韩av一级片| 欧美一区二区三区性视频| 香蕉加勒比综合久久| 91精品福利在线| 悠悠色在线精品| 在线国产电影不卡| 亚洲国产裸拍裸体视频在线观看乱了| 99国产精品99久久久久久| 中文字幕一区在线观看视频| 丁香婷婷综合网| 欧美国产精品劲爆| 不卡一区中文字幕| 亚洲丝袜美腿综合| 在线观看成人小视频| 亚洲国产精品嫩草影院| 欧美日韩成人激情| 美女网站色91| 久久久精品2019中文字幕之3| 亚洲精品国产品国语在线app| 91搞黄在线观看| 日韩国产一区二| 日韩精品在线看片z| 国产一区二区伦理| 中文字幕免费不卡在线| 91女厕偷拍女厕偷拍高清| 樱花影视一区二区| 日韩一区二区在线观看视频| 国模一区二区三区白浆| 国产精品国模大尺度视频| 在线免费视频一区二区| 蜜桃传媒麻豆第一区在线观看| 久久综合色之久久综合| 91免费在线视频观看| 人人狠狠综合久久亚洲| 久久久青草青青国产亚洲免观| 97久久精品人人做人人爽50路| 午夜伊人狠狠久久| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产麻豆欧美日韩一区| 国产精品电影一区二区三区| 欧美日韩一区高清| 国产一区在线精品| 樱花影视一区二区| 精品国产sm最大网站免费看| 成人高清免费观看| 日本一不卡视频| 国产精品乱码一区二区三区软件| 欧美色图在线观看| 东方欧美亚洲色图在线| 午夜精品福利一区二区三区av| 国产午夜久久久久| 欧美日韩国产小视频在线观看| 国产高清在线精品| 五月天丁香久久| 成人欧美一区二区三区黑人麻豆| 日韩亚洲欧美高清| 在线观看欧美日本| youjizz久久| 久久激五月天综合精品| 亚洲午夜影视影院在线观看| 欧美极品xxx| 欧美成人精品福利| 欧美人与禽zozo性伦| 91蝌蚪国产九色| 国产成人自拍网| 久久精品国产第一区二区三区| 亚洲国产三级在线| 亚洲精品久久久久久国产精华液| 国产亚洲va综合人人澡精品 | 欧美做爰猛烈大尺度电影无法无天| 激情文学综合插| 日韩精品一二三| 夜夜嗨av一区二区三区网页 | 91久久精品一区二区三| 成人av午夜影院| 国产福利一区二区| 国产在线一区二区综合免费视频| 丝袜美腿一区二区三区| 亚洲午夜电影网| 亚洲自拍偷拍av| 一区二区三区精品在线| 亚洲伦理在线免费看| 亚洲天堂2016| 亚洲日本中文字幕区| 中文字幕在线观看不卡| 欧美高清在线视频| 国产精品精品国产色婷婷| 中文字幕免费一区| 亚洲欧洲另类国产综合| 成人免费小视频| 亚洲视频一区二区免费在线观看| 国产精品美女www爽爽爽| 国产精品日日摸夜夜摸av| 国产精品免费网站在线观看| 国产精品美女一区二区在线观看| 欧美国产日产图区| 亚洲另类在线制服丝袜| 亚洲成人黄色影院| 日韩激情中文字幕| 美国三级日本三级久久99| 激情图区综合网| av在线不卡免费看| 91国偷自产一区二区三区观看| 欧美日韩在线免费视频| 日韩一区二区三区观看| 久久嫩草精品久久久精品一| 国产欧美综合在线观看第十页| 国产精品国产三级国产aⅴ中文| 亚洲欧美一区二区不卡| 亚洲国产美国国产综合一区二区| 日日欢夜夜爽一区| 国产精品一二三四区| 91麻豆精品一区二区三区| 欧美日韩一区二区三区不卡| 欧美一级理论片| 国产女人aaa级久久久级 | 一区二区三区欧美在线观看| 视频一区视频二区中文字幕| 国产激情精品久久久第一区二区| 色综合天天做天天爱| 91麻豆精品国产91久久久| 久久久久国产一区二区三区四区| 国产精品免费观看视频| 丝袜亚洲另类欧美| 成人av先锋影音| 欧美一级久久久| 亚洲欧美日韩电影| 精品一区二区三区久久| 91老师国产黑色丝袜在线| 欧美成人性战久久| 亚洲美女偷拍久久| 国内精品国产成人国产三级粉色| 欧日韩精品视频| 日本一区二区三区视频视频| 天天综合网天天综合色| 成人三级伦理片| 日韩三级av在线播放| 一区二区三区在线免费| 国产精品性做久久久久久| 欧美日韩高清一区二区不卡| 国产精品白丝在线| 韩国在线一区二区| 在线91免费看| 一区二区三区免费看视频| 国产综合色在线| 69堂国产成人免费视频| 亚洲欧美一区二区久久| 成人免费毛片aaaaa**| 精品久久久久久久久久久久久久久| 亚洲综合在线观看视频| 成人午夜电影网站| 久久亚洲一区二区三区四区| 日韩精品1区2区3区| 在线日韩av片| 亚洲天堂网中文字| 成人三级在线视频| 国产欧美一区二区三区在线看蜜臀| 奇米一区二区三区| 欧美一区二区三区免费观看视频| 亚洲精品中文字幕在线观看| 99久久夜色精品国产网站| 国产精品久久久久影院亚瑟| 高清在线成人网| 欧美精彩视频一区二区三区| 九九**精品视频免费播放| 337p亚洲精品色噜噜| 日韩经典一区二区| 91麻豆精品国产91久久久资源速度 | 福利一区福利二区| 精品理论电影在线观看| 久久99久久久久| 日韩亚洲欧美在线观看| 日韩av中文在线观看| 884aa四虎影成人精品一区| 亚洲成人动漫av| 91精品国产综合久久蜜臀| 日日嗨av一区二区三区四区| 51精品国自产在线|