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

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

?? ch375_host_int_para.c

?? CH375測試程續
?? C
?? 第 1 頁 / 共 2 頁
字號:
	issue_token(( 0 << 4 ) | DEF_USB_PID_SETUP);status=wait_interrupt();
	if(status==USB_INT_SUCCESS)/* SETUP階段操作成功 */
	{	toggle_send();
		Request.Req_buf[0]=0x01;
		wr_usb_data(1,Request.Req_buf);
		issue_token(( 0 << 4 ) | DEF_USB_PID_OUT);status=wait_interrupt();
		if(status==USB_INT_SUCCESS) /* DATA階段操作成功 */
		{	endp6_mode=0xc0;
			toggle_recv();
			issue_token(( 0 << 4 ) | DEF_USB_PID_IN);status=wait_interrupt();
			if(status==USB_INT_SUCCESS)/* 狀態階段操作成功 */
			{	if(rd_usb_data(data_buf)!=0)
				return(0);
			}
			else return(0);
		}
		else return(0);
	}	
	else return(0);
	
	
	return(1);
}
unsigned char get_descr_ex()
{	unsigned char descr_len;
	unsigned char *p=data_buf;
	endp7_mode=0x80;
	toggle_send();
	wr_usb_data(8,Request.Req_buf);
	issue_token(( 0 << 4 ) | DEF_USB_PID_SETUP);status=wait_interrupt();
	if(status==USB_INT_SUCCESS)/* SETUP階段操作成功 */
	{	endp6_mode=0xc0;
		toggle_recv();
	}
	else return(0);
	issue_token(( 0 << 4 ) | DEF_USB_PID_IN);status=wait_interrupt();
	if(status==USB_INT_SUCCESS)/* DATA階段操作成功 */
	{	if(flag_config_2)descr_len=data_buf[2]-rd_usb_data(data_buf);
		else descr_len=data_buf[0]-rd_usb_data(data_buf);	
		while(descr_len>0)
		{	toggle_recv();
			p+=0x08;
			issue_token(( 0 << 4 ) | DEF_USB_PID_IN);status=wait_interrupt();
			if(status==USB_INT_SUCCESS)	/* DATA階段操作成功 */
				descr_len-=rd_usb_data(p);	
			else return(0);
			
		}
	}
	else return(0);
	endp7_mode=0xc0;
	toggle_send();
	wr_usb_data(0,Request.Req_buf);
	issue_token(( 0 << 4 ) | DEF_USB_PID_OUT);status=wait_interrupt();
	if(status==USB_INT_SUCCESS)/* 狀態階段操作成功 */
		return(1);	
	else return(0);
}
unsigned char get_report_descr_ex()		
{	unsigned char descr_len;
	unsigned char *p=data_buf;
	unsigned char report_cou_temp=0;
	report_cou=0;
	endp7_mode=0x80;					
	toggle_send();						
	wr_usb_data(8,Request.Req_buf);		
	issue_token(( 0 << 4 ) | DEF_USB_PID_SETUP);status=wait_interrupt();	
	if(status==USB_INT_SUCCESS)/* SETUP階段操作成功 */
	{	endp6_mode=0xc0;	
		toggle_recv();
	}
	else return(0);
	issue_token(( 0 << 4 ) | DEF_USB_PID_IN);status=wait_interrupt();
	if(status==USB_INT_SUCCESS)/* DATA階段操作成功 */
	{	rd_usb_data(data_buf);
		report_cou+=8;	
		descr_len=Request.Req_buf[6]-0x08;/*剩余描述符長度計算*/
		while(descr_len>0)
		{	toggle_recv();
			p+=0x08;
			issue_token(( 0 << 4 ) | DEF_USB_PID_IN);status=wait_interrupt();
			if(status==USB_INT_SUCCESS)	/* DATA階段操作成功 */
			{	report_cou_temp=rd_usb_data(p);
				if(report_cou_temp!=0x08){report_cou+=report_cou_temp;break;}
				else {descr_len-=0x08;report_cou+=8;}
			}
			else return(0);
			
		}
	}
	else return(0);
	endp7_mode=0xc0;
	toggle_send();
	wr_usb_data(0,Request.Req_buf);
	issue_token(( 0 << 4 ) | DEF_USB_PID_OUT);status=wait_interrupt();
	if(status==USB_INT_SUCCESS)/* 狀態階段操作成功 */
		return(1);	
	else return(0);
}
void get_int_in()
{	endp6_mode=0x80;
	toggle_recv();
	issue_token(( endp_int << 4 ) | DEF_USB_PID_IN);//status=wait_interrupt();
}
void reset_device()
{	
/* USB規范中未要求在USB設備插入后必須復位該設備,但是計算機的WINDOWS總是這樣做,所以有些USB設備也要求在插入后必須先復位才能工作 */
	set_usb_mode( 7 );  /* 復位USB設備,CH375向USB信號線的D+和D-輸出低電平 */
	delayms(10);
	set_usb_mode( 6 );  /* 結束復位 */
	while ( wait_interrupt()!=USB_INT_CONNECT );  /* 等待復位之后的設備端再次連接上來 */

}
unsigned char get_descr( unsigned char type ) {  /* 從設備端獲取描述符 */
	status=0xff;
	CH375_WR_CMD_PORT( CMD_GET_DESCR );
	CH375_WR_DAT_PORT( type );  /* 描述符類型, 只支持1(設備)或者2(配置) */
	status=wait_interrupt();  /* 等待CH375操作完成 */
	if ( status==USB_INT_SUCCESS ) {  /* 操作成功 */
		unsigned char i, len;
		len=rd_usb_data( data_buf );
		printf( "%s描述符是:", type==1?"設備":"配置" );
		for ( i=0; i!=len; i++ ) printf( "%02x ", (unsigned int)data_buf[i] );
		printf( "\n" );
	}
	return( status );
}
unsigned char set_addr( unsigned char addr ) {  /* 設置設備端的USB地址 */
	unsigned char status;
	CH375_WR_CMD_PORT( CMD_SET_ADDRESS );  /* 設置USB設備端的USB地址 */
	CH375_WR_DAT_PORT( addr );  /* 地址, 從1到127之間的任意值, 常用2到20 */
	status=wait_interrupt();  /* 等待CH375操作完成 */
	if ( status==USB_INT_SUCCESS ) {  /* 操作成功 */
		CH375_WR_CMD_PORT( CMD_SET_USB_ADDR );  /* 設置USB主機端的USB地址 */
		CH375_WR_DAT_PORT( addr );  /* 當目標USB設備的地址成功修改后,應該同步修改主機端的USB地址 */
	}
	return( status );
}
unsigned char set_config( unsigned char cfg ) {  /* 設置設備端的USB配置 */
	CH375_WR_CMD_PORT( CMD_SET_CONFIG );  /* 設置USB設備端的配置值 */
	CH375_WR_DAT_PORT( cfg );  /* 此值取自USB設備的配置描述符中 */
	return( wait_interrupt() );  /* 等待CH375操作完成 */
}
void parse_config_descr()
{	unsigned char i;
	num_interfaces=data_buf[4];		//保存接口數
	config_value=data_buf[5];		//保存配置值
	for(i=0;i!=data_buf[2];i++)
	{	if((data_buf[i]==0x09)&&(data_buf[i+1]==0x04))//接口描述符
		{	}
		if((data_buf[i]==0x09)&&(data_buf[i+1]==0x21))//HID描述符
		{	report_descr_len=data_buf[i+7];}			//REPORT描述符長度
		if((data_buf[i]==0x07)&&(data_buf[i+1]==0x05))//端點描述符
		{	endp_int=data_buf[i+2]&0x0f;}				//中斷端點號
	}	
}
void main() {
	unsigned char i;
	mInitSTDIO( );
	delayms(250);
	set_usb_mode( 6 );  /* 設置USB主機模式, 如果設備端是CH37X, 那么5和6均可 */
#ifdef	TEST_LOW_SPEED
	set_freq( );	       //使375B進入低速模式
#endif
	while(1)
	{	while ( wait_interrupt()!=USB_INT_CONNECT );  /* 等待設備端連接上來 */
		delayms(5);
		reset_device();
		delayms(5);
        set_freq( );       //使375B進入低速模式

//	get_descr(0x01);//獲取設備描述符
//	printf("device\n");
	Request.Req.bmRequestType=0x80;
	Request.Req.bRequest=0x06;
	Request.Req.wValue=0x0001;
	Request.Req.wIndex=0x0000;
	Request.Req.wLength=0x1200;
	if(get_descr_ex()==1)
	{	for(i=0;i!=data_buf[0];i++)
			printf("%02x ",(unsigned int)data_buf[i]);	
		printf("\n");
	}
	else printf("get device descr failed\n");
		
	set_addr(5);//設置地址

//	get_descr(0x02);//獲取配置描述符
	printf("config\n");
	Request.Req.bmRequestType=0x80;
	Request.Req.bRequest=0x06;
	Request.Req.wValue=0x0002;
	Request.Req.wIndex=0x0000;
	Request.Req.wLength=0x0900;
	if(get_descr_ex()==1)
	{	for(i=0;i!=data_buf[0];i++)
			printf("%02x ",(unsigned int)data_buf[i]);	
		printf("\n");
        if(data_buf[4]!=0x01)flag_interface_2=1;//有多個接口
	}
	else printf("get config descr failed\n");
		
	printf("config 2\n");
	if(data_buf[2]>0x09)
	{	flag_config_2=1;
		Request.Req.bmRequestType=0x80;
		Request.Req.bRequest=0x06;
		Request.Req.wValue=0x0002;
		Request.Req.wIndex=0x0000;
		Request.Req.wLength=0x0000|((unsigned int)data_buf[2]<<8);
		if(get_descr_ex()==1)
		{	for(i=0;i!=data_buf[2];i++)
				printf("%02x ",(unsigned int)data_buf[i]);	
			printf("\n");
			flag_config_2=0;
		}	
		else printf("get device descr again failed\n");
	}

	parse_config_descr();//保存描述符中一些值

	set_config(config_value);//設置配置
//	printf("set config\n");
//	if(set_config_ex()!=1)printf("set config failed\n");
	
	printf("set idle\n");
	if(set_idle()!=1)printf("set idle failed\n");
	
	printf("report\n");
	Request.Req.bmRequestType=0x81;
	Request.Req.bRequest=0x06;
	Request.Req.wValue=0x0022;
	Request.Req.wIndex=0x0000;
	Request.Req.wLength=0x0000|((unsigned int)(report_descr_len+0x40)<<8);
	if(get_report_descr_ex()==1)
	{	for(i=0;i!=report_cou;i++)
			printf("%02x ",(unsigned int)data_buf[i]);	
		printf("\n");
	}
	else printf("get report descr failed\n");
	
	printf("set report\n");		//對于鍵盤這一步,是點亮指示燈
	if(set_report()!=1)printf("set report failed\n");
	
	delayms(250);
	EA=1;			//打開中斷,從中斷端點接收數據
	get_int_in();	//發送從中斷端點讀數據的令牌
	do{	
		if(flag_output==1)
		{	for(i=0;i!=8;i++)printf("%02x ",(unsigned int)data_in[i]);
			printf("\n");
			flag_output=0;
		}
	}while(1);
	while ( wait_interrupt()!=USB_INT_DISCONNECT );  /* 等待設備端連接上來 */
}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩视频一区二区三区在线播放 | 久久成人av少妇免费| 国产精品国产三级国产有无不卡 | 高清视频一区二区| 欧美日韩成人综合| 亚洲欧洲无码一区二区三区| 久久9热精品视频| 欧美午夜精品电影| 亚洲人成精品久久久久久 | 91丨porny丨中文| www精品美女久久久tv| 无码av免费一区二区三区试看 | 久久久久久久久久看片| 日本中文在线一区| 欧美亚洲自拍偷拍| 亚洲欧美一区二区久久| 不卡的av网站| 国产精品嫩草99a| 国产精品中文字幕日韩精品| 日韩欧美激情在线| 麻豆免费看一区二区三区| 欧美美女网站色| 亚洲高清在线视频| 欧美色手机在线观看| 一区二区三区日韩精品视频| 色综合久久综合| 一区二区三区中文字幕电影| 色偷偷久久一区二区三区| 亚洲欧美激情在线| 色婷婷av久久久久久久| 综合婷婷亚洲小说| 色999日韩国产欧美一区二区| 亚洲欧洲成人精品av97| 91在线你懂得| 亚洲精品视频在线观看免费| 波多野洁衣一区| 综合久久国产九一剧情麻豆| av一区二区三区四区| 综合在线观看色| 欧美亚洲国产一卡| 日韩va亚洲va欧美va久久| 精品久久99ma| 粉嫩av一区二区三区| 国产精品久久久久精k8| 在线免费观看日韩欧美| 日本成人中文字幕在线视频| 精品粉嫩超白一线天av| 成人免费视频视频| 亚洲精品国久久99热| 欧美日韩国产综合视频在线观看 | 国产成人精品在线看| 国产精品久久毛片av大全日韩| 91丨九色丨黑人外教| 亚洲一区二区三区三| 欧美一二三区在线| 粉嫩av一区二区三区在线播放| 亚洲女人的天堂| 日韩一区二区在线观看视频| 国产一区三区三区| 亚洲欧美视频在线观看视频| 欧美日韩和欧美的一区二区| 国产一区二三区好的| 亚洲欧美一区二区三区孕妇| 91麻豆精品国产91久久久资源速度| 蜜臀91精品一区二区三区 | 一本一本久久a久久精品综合麻豆| 亚洲午夜在线电影| 欧美精品一区二区三| 94-欧美-setu| 蜜臀久久99精品久久久久久9| 欧美高清在线一区| 91精品欧美一区二区三区综合在| 国产精品伊人色| 亚洲成人免费观看| 国产精品私人自拍| 欧美一区二区三区日韩| 成人午夜av影视| 美女视频黄 久久| 亚洲日本乱码在线观看| 亚洲精品在线一区二区| 日本伦理一区二区| 国产不卡视频在线播放| 日本欧美在线观看| 亚洲色图另类专区| 国产亚洲午夜高清国产拍精品| 欧美三级视频在线| 成人的网站免费观看| 欧美a一区二区| 亚洲妇女屁股眼交7| 国产精品久久久久婷婷二区次| 日韩欧美国产综合在线一区二区三区| 成人av网站大全| 韩日av一区二区| 天天av天天翘天天综合网色鬼国产| 中文字幕电影一区| 久久久av毛片精品| 精品国产三级a在线观看| 欧美日韩国产综合久久| 91麻豆自制传媒国产之光| 国产黄色精品网站| 国产在线精品不卡| 久久国产精品一区二区| 三级精品在线观看| 亚洲第一狼人社区| 一个色妞综合视频在线观看| 亚洲视频一区二区在线| 久久精子c满五个校花| 精品国产乱码久久| 日韩亚洲欧美在线| 日韩丝袜情趣美女图片| 欧美一二三四在线| 日韩视频一区二区在线观看| 日韩一区二区在线观看视频播放| 欧美日本国产视频| 欧美精品日韩一区| 51精品秘密在线观看| 欧美丰满少妇xxxbbb| 欧美一区二区三区四区在线观看 | 欧美国产精品一区二区| 欧美成人猛片aaaaaaa| 欧美一卡2卡3卡4卡| 欧美电影免费观看高清完整版在线 | 亚洲免费观看高清完整| 亚洲激情六月丁香| 亚洲成人av福利| 久久精品久久精品| 国产精品91一区二区| 暴力调教一区二区三区| 色综合久久综合| 777xxx欧美| 久久亚洲精精品中文字幕早川悠里 | 亚洲人成影院在线观看| 亚洲永久免费av| 免费久久99精品国产| 国产精品资源在线| 一本一道久久a久久精品综合蜜臀| 欧美午夜精品久久久| 日韩精品中文字幕在线一区| 国产肉丝袜一区二区| 综合在线观看色| 日韩不卡在线观看日韩不卡视频| 国产一区二区三区免费观看| 成a人片亚洲日本久久| 在线观看免费一区| 欧美一级二级三级蜜桃| 国产精品美女久久福利网站| 亚洲一区二区美女| 国产综合久久久久久鬼色| 色综合天天综合在线视频| 4438成人网| 国产精品剧情在线亚洲| 午夜日韩在线电影| 国产寡妇亲子伦一区二区| 色综合久久88色综合天天6| 日韩一区二区免费高清| 国产精品成人免费| 日本不卡一区二区| 97精品国产露脸对白| 9191久久久久久久久久久| 国产欧美日韩在线观看| 日韩国产在线一| 成人av电影免费观看| 日韩一二三区视频| 最好看的中文字幕久久| 国产米奇在线777精品观看| 一本大道久久a久久精品综合| 欧美成人福利视频| 亚洲美女精品一区| 国产成人综合视频| 日韩一区二区精品葵司在线| 一区二区三区中文字幕在线观看| 国产高清不卡一区二区| 日韩一区二区在线观看视频| 亚洲美女屁股眼交3| 成人性色生活片| 精品国产一区二区三区忘忧草| 夜夜爽夜夜爽精品视频| 成人天堂资源www在线| 精品伦理精品一区| 日韩高清不卡在线| 欧美视频日韩视频在线观看| 亚洲人成精品久久久久久| 成人免费视频一区二区| 国产午夜精品一区二区三区嫩草| 日本欧美韩国一区三区| 欧美日韩一区二区三区四区五区 | 欧美性色黄大片| **网站欧美大片在线观看| 国产高清亚洲一区| 精品va天堂亚洲国产| 日韩精品乱码免费| 欧美日韩dvd在线观看| 亚洲女人的天堂| 91久久线看在观草草青青| 亚洲视频每日更新| 色哟哟在线观看一区二区三区| 亚洲欧洲99久久| 一本一道波多野结衣一区二区| 亚洲色图19p| 色国产精品一区在线观看|