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

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

?? usbuart.c

?? RDC R2886 USB Ehci ohc測試源碼,paradigm c++上運行測試
?? C
字號:
// USB Host Controller OHCI test pattern file
// 08/25/2003    Jeff

#include <systypes.h>					/* Paradigm C++ standard types */
#include <stdio.h>
#include <dos.h>
#include <alloc.h>
#include <embedded.h>
#include <string.h>
#include <conio.h>
#include "..\Include\USBHost.h"

/* +++++++++++++++++++++ USBLib.c +++++++++++++++++++++++++ */
unsigned int UpperAddr (void far *p);
unsigned int LowerAddr (void far *p);

extern BOOL HighSpeed_Owner;

char* Num_ASCII_B(char *p, int Data, BOOL AddPoint)
{
	int temp;
	
	temp = (Data >> 4) & 0x0F;
	if(temp > 0x09)
		temp += 0x37;
	else
		temp += 0x30;
	*p++ = temp;
	temp = (Data & 0x0F);
	if(temp > 0x09)
		temp += 0x37;
	else
		temp += 0x30;
	*p++ = temp;
	
	if(AddPoint)
		*p++ = 0x2C;
	
	return p;
}

char* Num_ASCII_W(char *p, int Data, BOOL AddPoint)
{
	int temp;

	temp = (Data >> 12) & 0x0F;
	if(temp > 0x09)
		temp += 0x37;
	else
		temp += 0x30;
	*p++ = temp;

	temp = (Data >> 8) & 0x0F;
	if(temp > 0x09)
		temp += 0x37;
	else
		temp += 0x30;
	*p++ = temp;

	temp = (Data >> 4) & 0x0F;
	if(temp > 0x09)
		temp += 0x37;
	else
		temp += 0x30;
	*p++ = temp;
	temp = (Data & 0x0F);
	if(temp > 0x09)
		temp += 0x37;
	else
		temp += 0x30;
	*p++ = temp;
	
	if(AddPoint)
		*p++ = 0x2C;
		
	return p;
}

void UART_SendData(char* buf, int size)
{
	//Wait Send buffer empty
	do{} while((inport(PCBBase+LSR) & nTEMT) == 0);
		
	//DMA0
	//Count
	outport(PCBBase+0xC8, size);
	
	//Mem Src Address
	outport(PCBBase+0xC2, UpperAddr(buf));
	outport(PCBBase+0xC0, LowerAddr(buf));
	
	//IO Des Address
	outport(PCBBase+0xC6, 0);
	outport(PCBBase+0xC4, PCBBase+THR);
	
	outport(PCBBase+0xCA,SM+DIO+SINC+TC+DesSYN+DMAST+CHG);	
}

void Test_Mode_operate()
{
	char *q;
	int i;
	
	static char buf[550];
	char buf1[50] = {"USB Test mode enable sequence +++++++++++++++++++"};
	char buf2[24] = {"sx = enable x test mode"};
	char buf3[20] = {"x=1 => Test J_STATE"};
	char buf4[20] = {"x=2 => Test K_STATE"};
	char buf5[20] = {"x=3 => Test SE0_NAK"};
	char buf6[19] = {"x=4 => Test Packet"};
	char buf7[25] = {"x=5 => Test FORCE_ENABLE"};
	char buf8[22] = {"e = disable test mode"};
	char buf9[29] = {"cst = Control transfer Start"};
	char buf10[28] = {"csp = Control transfer Stop"};
	char buf11[40] = {"bsst = Bulk SCSI Command transfer Start"};
	char buf12[39] = {"bssp = Bulk SCSI Command transfer Stop"};
   char buf13[30] = {"ist = Interrupt transfer Start"};
   char buf14[29] = {"isp = Interrupt transfer Stop"};
   char buf15[32] = {"isos = Isochronus transfer Start"};
   char buf16[31] = {"isop = Isochronus transfer Stop"};

	q = buf;
	
	//New Line
	*q++ = 10;
	*q++ = 13;
	*q++ = 10;
	*q++ = 13;
	for(i=0;i<sizeof(buf1);i++)
		*q++ = buf1[i];
	*q++ = 10;
	*q++ = 13;
	for(i=0;i<sizeof(buf2);i++)
		*q++ = buf2[i];
	*q++ = 10;
	*q++ = 13;
	for(i=0;i<sizeof(buf3);i++)
		*q++ = buf3[i];
	*q++ = 10;
	*q++ = 13;
	for(i=0;i<sizeof(buf4);i++)
		*q++ = buf4[i];
	*q++ = 10;
	*q++ = 13;
	for(i=0;i<sizeof(buf5);i++)
		*q++ = buf5[i];
	*q++ = 10;
	*q++ = 13;
	for(i=0;i<sizeof(buf6);i++)
		*q++ = buf6[i];
	*q++ = 10;
	*q++ = 13;
	for(i=0;i<sizeof(buf7);i++)
		*q++ = buf7[i];
	*q++ = 10;
	*q++ = 13;
	for(i=0;i<sizeof(buf8);i++)
		*q++ = buf8[i];
	*q++ = 10;
	*q++ = 13;
	for(i=0;i<sizeof(buf9);i++)
		*q++ = buf9[i];
	*q++ = 10;
	*q++ = 13;
	for(i=0;i<sizeof(buf10);i++)
		*q++ = buf10[i];
	*q++ = 10;
	*q++ = 13;
	for(i=0;i<sizeof(buf11);i++)
		*q++ = buf11[i];
	*q++ = 10;
	*q++ = 13;
	for(i=0;i<sizeof(buf12);i++)
		*q++ = buf12[i];
	*q++ = 10;
	*q++ = 13;
   for(i=0;i<sizeof(buf13);i++)
		*q++ = buf13[i];
	*q++ = 10;
	*q++ = 13;
   for(i=0;i<sizeof(buf14);i++)
		*q++ = buf14[i];
	*q++ = 10;
	*q++ = 13;
   for(i=0;i<sizeof(buf15);i++)
		*q++ = buf15[i];
	*q++ = 10;
	*q++ = 13;
   for(i=0;i<sizeof(buf16);i++)
		*q++ = buf16[i];
	*q++ = 10;
	*q++ = 13;
	for(i=0;i<50;i++)
		*q++ = '.';
	*q++ = 10;
	*q++ = 13;
	
	UART_SendData(buf, sizeof(buf));
}

void UART_Device_Descriptor(std_dev_des __far *p)
{
	char *q;
	int i, temp;
	static char buf[200];
	char buf1[50] = {"EHCI Control Transfer +++++++++++++++++++++++++++"};
	char buf2[50] = {"OHCI Control Transfer +++++++++++++++++++++++++++"};
	char buf3[17] = {"Device Descriptor"};
	
	q = buf;

	//New Line
	*q++ = 10;
	*q++ = 13;
	*q++ = 10;
	*q++ = 13;
	if(HighSpeed_Owner == TRUE)
		for(i=0;i<sizeof(buf1);i++)
			*q++ = buf1[i];
	else
		for(i=0;i<sizeof(buf2);i++)
			*q++ = buf2[i];
	*q++ = 10;
	*q++ = 13;
	for(i=0;i<sizeof(buf3);i++)
		*q++ = buf3[i];
	*q++ = 10;
	*q++ = 13;
	
	temp = p->bLength;		q=Num_ASCII_B(q, temp, TRUE);
	temp = p->bDescriptorType;	q=Num_ASCII_B(q, temp, TRUE);
	temp = p->bcdUSB;		q=Num_ASCII_W(q, temp, TRUE);
	temp = p->bDeviceClass;		q=Num_ASCII_B(q, temp, TRUE);
	temp = p->bDeviceSubClass;	q=Num_ASCII_B(q, temp, TRUE);
	temp = p->bDeviceProtocal;	q=Num_ASCII_B(q, temp, TRUE);
	temp = p->bMaxPacketSize;	q=Num_ASCII_B(q, temp, TRUE);
	temp = p->idVendor;		q=Num_ASCII_W(q, temp, TRUE);
	temp = p->idProduct;		q=Num_ASCII_W(q, temp, TRUE);
	temp = p->bcdDevice;		q=Num_ASCII_W(q, temp, TRUE);
	temp = p->iManufacturer;	q=Num_ASCII_B(q, temp, TRUE);
	temp = p->iProduct;		q=Num_ASCII_B(q, temp, TRUE);
	temp = p->iSerialNumber;	q=Num_ASCII_B(q, temp, TRUE);
	temp = p->bNumConfigurations;	q=Num_ASCII_B(q, temp, FALSE);
	
	UART_SendData(buf, sizeof(buf));
}

void UART_Configuration_Descriptor(std_cfg_des __far *p)
{
	char *q;
	int i, temp;
	static char buf[200];
	char buf1[24] = {"Configuration Descriptor"};
	
	q = buf;
	
	//New Line
	*q++ = 10;
	*q++ = 13;
	for(i=0;i<sizeof(buf1);i++)
		*q++ = buf1[i];
	*q++ = 10;
	*q++ = 13;

	temp = p->bLength;		q=Num_ASCII_B(q, temp, TRUE);
	temp = p->bDescriptorType;	q=Num_ASCII_B(q, temp, TRUE);
	temp = p->wTotalLength;		q=Num_ASCII_W(q, temp, TRUE);
	temp = p->bNumInterfaces;	q=Num_ASCII_B(q, temp, TRUE);
	temp = p->bConfigurationValue;	q=Num_ASCII_B(q, temp, TRUE);
	temp = p->iConfiguration;	q=Num_ASCII_B(q, temp, TRUE);
	temp = p->bmAttributes;		q=Num_ASCII_B(q, temp, TRUE);
	temp = p->MaxPower;		q=Num_ASCII_B(q, temp, FALSE);
	
	UART_SendData(buf, sizeof(buf));
}

void UART_Interface_Descriptor(std_if_des __far *p)
{
	char *q;
	int i, temp;
	static char buf[200];
	char buf1[20] = {"Interface Descriptor"};
	
	q = buf;
	
	//New Line
	*q++ = 10;
	*q++ = 13;
	for(i=0;i<sizeof(buf1);i++)
		*q++ = buf1[i];
	*q++ = 10;
	*q++ = 13;

	temp = p->bLength;		q=Num_ASCII_B(q, temp, TRUE);
	temp = p->bDescriptorType;	q=Num_ASCII_B(q, temp, TRUE);
	temp = p->bInterfaceNumber;	q=Num_ASCII_B(q, temp, TRUE);
	temp = p->bAlternateSetting;	q=Num_ASCII_B(q, temp, TRUE);
	temp = p->bNumEndpoints;	q=Num_ASCII_B(q, temp, TRUE);
	temp = p->bInterfaceClass;	q=Num_ASCII_B(q, temp, TRUE);
	temp = p->bInterfaceSubClass;	q=Num_ASCII_B(q, temp, TRUE);
	temp = p->bInterfaceProtocol;	q=Num_ASCII_B(q, temp, TRUE);
	temp = p->iInterface;		q=Num_ASCII_B(q, temp, FALSE);
	
	UART_SendData(buf, sizeof(buf));
}

void UART_Endpoint_Descriptor(std_edp_des __far *p, int num)
{
	char *q;
	int i, temp;
	static char buf[200];
	char buf1[21] = {"Endpoint x Descriptor"};

	//Wait Send buffer empty
	do{} while((inport(PCBBase+LSR) & nTEMT) == 0);
	
	if(num == 1)
		buf1[9] = '1';
	else if(num == 2)
		buf1[9] = '2';
	else
		buf1[9] = '3';
	
	q = buf;
	
	//New Line
	*q++ = 10;
	*q++ = 13;
	for(i=0;i<sizeof(buf1);i++)
		*q++ = buf1[i];
	*q++ = 10;
	*q++ = 13;

	temp = p->bLength;		q=Num_ASCII_B(q, temp, TRUE);
	temp = p->bDescriptorType;	q=Num_ASCII_B(q, temp, TRUE);
	temp = p->bEndpointAddress;	q=Num_ASCII_B(q, temp, TRUE);
	temp = p->bmAttributes;		q=Num_ASCII_B(q, temp, TRUE);
	temp = p->wMaxPacketSize;	q=Num_ASCII_W(q, temp, TRUE);
	temp = p->bInterval;		q=Num_ASCII_B(q, temp, FALSE);
	
	UART_SendData(buf, sizeof(buf));
}

void UART_String_Descriptor(char *p, int string_num, int size)
{
	char *q;
	int i, temp;
	static char buf[200];
	static char buf1[28] = {"String Descriptor -- "};

	//Wait Send buffer empty
	do{} while((inport(PCBBase+LSR) & nTEMT) == 0);
	
	if(string_num == 0){
		buf1[21] = 'L';
		buf1[22] = 'A';
		buf1[23] = 'N';
		buf1[24] = 'G';
		buf1[25] = 'I';
		buf1[26] = 'D';
		buf1[27] = ' ';
	}
	else{
		buf1[21] = 'i';
		buf1[22] = 'n';
		buf1[23] = 'd';
		buf1[24] = 'e';
		buf1[25] = 'x';
		buf1[26] = ' ';
		
		if(string_num == 1)
			buf1[27] = '1';
		else if(string_num == 2)
			buf1[27] = '2';
		else if(string_num == 3)
			buf1[27] = '3';
	}
	
	q = buf;
	
	//New Line
	*q++ = 10;
	*q++ = 13;
	for(i=0;i<sizeof(buf1);i++)
		*q++ = buf1[i];
	*q++ = 10;
	*q++ = 13;
	
	if(string_num == 0){
		for(i=0;i<size;i++){
			temp = *p++;
			if(i<(size-1))
				q=Num_ASCII_B(q, temp, TRUE);
			else
				q=Num_ASCII_B(q, temp, FALSE);
		}
		for(i=0;i<(172-size);i++)
			*q++ = 0;
	}
	else{
		temp = *p++;
		q=Num_ASCII_B(q, temp, TRUE);
		temp = *p++;
		q=Num_ASCII_B(q, temp, TRUE);
		for(i=0;i<((size-2)/2);i++){
			*q++ = *p++;
			p++;			
		}
		for(i=0;i<(172-(size/2));i++)
			*q++ = 0;
	}
	
	UART_SendData(buf, sizeof(buf));
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
93久久精品日日躁夜夜躁欧美| 日韩欧美成人激情| 7777精品伊人久久久大香线蕉的 | 国产欧美一区二区三区鸳鸯浴| 18成人在线观看| 久久99日本精品| 欧美亚一区二区| 亚洲欧洲成人自拍| 国产馆精品极品| 精品成人a区在线观看| 一区二区三区在线视频免费| 国产精品综合视频| 欧美一区二区三区四区在线观看| 亚洲精品成人少妇| 成人av电影观看| 国产精品天天摸av网| 精品无码三级在线观看视频| 欧美日韩免费视频| 亚洲黄色性网站| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 色综合久久久久网| 国产午夜精品一区二区三区四区| 麻豆精品一区二区综合av| 91极品视觉盛宴| 一区二区三区免费观看| gogogo免费视频观看亚洲一| 久久久久久久久久久久电影| 麻豆91精品视频| 精品精品国产高清a毛片牛牛| 视频一区二区欧美| 在线播放视频一区| 亚洲成人自拍一区| 欧美色国产精品| 亚洲国产一区二区三区| 欧美性感一区二区三区| 亚洲激情校园春色| 色8久久精品久久久久久蜜| 亚洲精品老司机| 欧美综合一区二区| 亚洲第一精品在线| 欧美一区二区精品| 激情综合色综合久久| 精品乱人伦小说| 国产精品香蕉一区二区三区| 国产欧美一区视频| 91啪九色porn原创视频在线观看| 亚洲人成亚洲人成在线观看图片| 91九色02白丝porn| 日韩经典一区二区| 日韩精品一区在线| 福利一区在线观看| 亚洲精品综合在线| 欧美日韩在线播| 国内国产精品久久| 亚洲人吸女人奶水| 欧美日韩国产另类一区| 免费观看91视频大全| 国产精品视频一二三| 91久久免费观看| 久久er99精品| 中文字幕一区日韩精品欧美| 欧美亚洲丝袜传媒另类| 蜜臀精品一区二区三区在线观看| 欧美国产一区二区在线观看| 欧美天堂一区二区三区| 久久国产婷婷国产香蕉| 国产精品国模大尺度视频| 欧美巨大另类极品videosbest | 亚洲第一福利视频在线| 日韩一区二区三区视频在线观看| 成人小视频在线观看| 天天影视网天天综合色在线播放| 精品成人佐山爱一区二区| 91在线观看地址| 国产主播一区二区三区| 日韩理论在线观看| 日韩欧美高清dvd碟片| 色老汉av一区二区三区| 国产麻豆91精品| 婷婷久久综合九色国产成人| 国产精品日韩成人| 日韩精品一区国产麻豆| 欧美午夜寂寞影院| 成人h版在线观看| 麻豆91在线播放| 亚洲高清免费在线| 国产精品理伦片| 26uuu国产日韩综合| 欧美高清视频一二三区| 成人免费视频一区| 免费成人美女在线观看.| 国产精品久久久久久户外露出| 91麻豆精品国产无毒不卡在线观看| av一区二区三区四区| 国产成人精品免费一区二区| 麻豆国产一区二区| 水蜜桃久久夜色精品一区的特点| 中文字幕一区二区视频| 久久人人爽人人爽| 日韩女优视频免费观看| 欧美一区二区在线免费观看| 在线观看日韩毛片| 色综合天天综合狠狠| 成人福利视频在线看| 国产精品一区二区视频| 久久 天天综合| 精品亚洲成av人在线观看| 午夜不卡av免费| 亚洲一区二区三区在线| 亚洲欧美偷拍另类a∨色屁股| 中文字幕一区三区| 18成人在线观看| 亚洲男同性恋视频| 亚洲柠檬福利资源导航| 亚洲精品精品亚洲| 亚洲精品视频一区| 一区二区日韩电影| 亚洲综合一区二区精品导航| 亚洲午夜电影网| 一级精品视频在线观看宜春院 | 欧美日韩综合色| 欧美视频日韩视频| 欧美剧情片在线观看| 91精品国产色综合久久不卡蜜臀| 欧美精品九九99久久| 7777精品伊人久久久大香线蕉| 欧美日韩三级在线| 91精品国产91热久久久做人人| 91麻豆精品国产91久久久| 日韩网站在线看片你懂的| 欧美大度的电影原声| 国产午夜亚洲精品不卡| 中文字幕亚洲视频| 亚洲激情av在线| 日韩国产精品大片| 激情伊人五月天久久综合| 国产一区二区三区四区在线观看| 国产一区二区视频在线| 91碰在线视频| 91精品国产手机| 国产精品嫩草久久久久| 亚洲一区二区三区激情| 久久精品免费观看| 成人一区二区三区视频在线观看 | 91精品国模一区二区三区| 日韩一级视频免费观看在线| 久久久久88色偷偷免费| 亚洲欧美激情一区二区| 日本欧美在线看| 成人免费毛片a| 欧美日韩在线播放一区| 国产视频一区二区三区在线观看 | 免费在线观看精品| 成人污污视频在线观看| 欧美日韩日日摸| 国产日韩欧美制服另类| 亚洲国产精品一区二区www在线 | 在线免费观看成人短视频| 精品欧美乱码久久久久久1区2区 | 欧美午夜电影在线播放| 久久免费看少妇高潮| 一区2区3区在线看| 国产精品1区2区| 91麻豆精品国产综合久久久久久| 中文字幕乱码一区二区免费| 日韩电影在线免费看| 成人av片在线观看| 精品国产网站在线观看| 一区二区三区在线观看国产| 国产一区亚洲一区| 91精品国模一区二区三区| 日韩理论片中文av| 国产精品亚洲а∨天堂免在线| 91麻豆精品国产自产在线| 18涩涩午夜精品.www| 国产一区二区网址| 欧美一区二区视频在线观看| 亚洲理论在线观看| 成人精品小蝌蚪| 久久一区二区三区国产精品| 三级影片在线观看欧美日韩一区二区| 99久久综合99久久综合网站| 欧美成人伊人久久综合网| 五月综合激情网| 欧美视频日韩视频在线观看| 亚洲精品免费电影| 成人成人成人在线视频| 亚洲精品在线三区| 韩国三级电影一区二区| 51久久夜色精品国产麻豆| 亚洲成av人片一区二区三区| 91首页免费视频| 自拍视频在线观看一区二区| 懂色av中文字幕一区二区三区| 久久综合色8888| 国产一区二区三区综合| 久久夜色精品国产噜噜av| 国产麻豆午夜三级精品| 26uuu精品一区二区| 国产丶欧美丶日本不卡视频|