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

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

?? obj_usbdesc.c

?? AT91rm9200的引導代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
		else
			pUsbDesc->GetStatus(recipient, pSetup->wIndex, pUsbDesc->pPrivateStandardData);
	}
	/* =================== Default state ================= */
	else
		/* Device behavior not specified */
		AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);
}

/* ************************************ */
/* AT91F_UsbDescSetAddress              */
/*                                      */
/* Arguments:                           */
/*     pSetup: pointer to setup datas   */
/* Return:                              */
/*     Nothing                          */
/* Description:                         */
/*     This request sets the device     */
/*     address for all device accesses  */
/* ************************************ */
void AT91F_UsbDescSetAddress(
	AT91PS_UsbDesc const pUsbDesc,  /* pointer to a AT91S_UsbDesc structure */
	AT91PS_UsbSetup      pSetup)    /* USB setup data Cf USB spec rev 1.1 */
{
	u_int usbState  = AT91F_UdpGetState(pUsbDesc->pUdp);

	/* Check request arguments */
	if ((pSetup->wValue >= 127) || pSetup->wIndex != 0 || pSetup->wLength != 0)
		/* Device behavior not specified */
		AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);

	/* ================ Configured state ================= */
	else if ( (usbState & UDP_CONFG) )
		/* Device behavior not specified */
		AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);
	/* ============ Address or Default state ============= */
	else {
		/* Enter the address state if the value != 0 */
		//AT91F_UdpEpEow(pUsbDesc->pUdp, pUsbDesc->epId);
		// Wait for TX Complete
		if (pUsbDesc->SetAddress)
			pUsbDesc->SetAddress(pSetup->wValue, pUsbDesc->pPrivateStandardData);
	}
}

/* ************************************ */
/* AT91F_UsbDescSetConfiguration        */
/*                                      */
/* Arguments:                           */
/*     pSetup: pointer to setup datas   */
/* Return:                              */
/*     Nothing                          */
/* Description:                         */
/*     This request sets the device     */
/*     configuration                    */
/* ************************************ */
void AT91F_UsbDescSetConfiguration(
	AT91PS_UsbDesc const pUsbDesc,  /* pointer to a AT91S_UsbDesc structure */
	AT91PS_UsbSetup      pSetup)    /* USB setup data Cf USB spec rev 1.1 */
{
	u_int usbState  = AT91F_UdpGetState(pUsbDesc->pUdp);

	/* Check request arguments */
	if ((pSetup->wValue & 0xFF00) || pSetup->wIndex != 0 || pSetup->wLength != 0)
		/* Device behavior not specified */
		AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);

	/* ================ Configured state ================= */
	else if ( (usbState & UDP_CONFG) ) {
		if (pSetup->wValue == 0) {
			/* Device enters Address State */
			AT91F_UdpSetState(pUsbDesc->pUdp, UDP_FADDEN);
			AT91F_UdpEpEow(pUsbDesc->pUdp, pUsbDesc->epId);
		}
		else {
			if (pUsbDesc->SetConfiguration)
				pUsbDesc->SetConfiguration(pSetup->wValue, pUsbDesc->pPrivateStandardData);
			else
				AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);
		}
	}
	/* =================== Address state ================= */
	else if ( (usbState & UDP_FADDEN) ) {
		if (pSetup->wValue == 0)
			/* Device remains in Address State */
			AT91F_UdpEpEow(pUsbDesc->pUdp, pUsbDesc->epId);
		else {
			if (pUsbDesc->SetConfiguration)
				pUsbDesc->SetConfiguration(pSetup->wValue, pUsbDesc->pPrivateStandardData);
			else
				AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);
		}
	}
	/* =================== Default state ================= */
	else
		/* Device behavior not specified */
		AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);
}

/* ************************************ */
/* AT91F_UsbDescSetDescriptor           */
/*                                      */
/* Arguments:                           */
/*     pSetup: pointer to setup datas   */
/* Return:                              */
/*     Nothing                          */
/* Description:                         */
/*     This request may be used to      */
/*     update existing descripotrs or   */
/*     new descriptors may be added     */
/* ************************************ */
void AT91F_UsbDescSetDescriptor(
	AT91PS_UsbDesc const pUsbDesc,  /* pointer to a AT91S_UsbDesc structure */
	AT91PS_UsbSetup      pSetup)    /* USB setup data Cf USB spec rev 1.1 */
{
	u_int usbState  = AT91F_UdpGetState(pUsbDesc->pUdp);

	/* ================ Configured or Address state ================= */
	if ( ((usbState & UDP_CONFG) || (usbState & UDP_FADDEN))) {
		if (pUsbDesc->SetDescriptor)
			pUsbDesc->SetDescriptor (
				(pSetup->wValue >> 8),   /* Descriptor type */
				(pSetup->wValue & 0xFF), /* Descriptor index */
				pSetup->wIndex,          /* Language ID */
				pSetup->wLength,         /* Desriptor length */
				pUsbDesc->pPrivateStandardData);
		else
			AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);
	}
	/* =================== Default state ================= */
	else
		/* Device behavior not specified */
		AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);

}

/* ************************************ */
/* AT91F_UsbDescSetFeature              */
/*                                      */
/* Arguments:                           */
/*     pSetup: pointer to setup datas   */
/* Return:                              */
/*     Nothing                          */
/* Description:                         */
/*     This request is used to set or   */
/*     enable a specific feature        */
/* ************************************ */
void AT91F_UsbDescSetFeature(
	AT91PS_UsbDesc const pUsbDesc,  /* pointer to a AT91S_UsbDesc structure */
	AT91PS_UsbSetup      pSetup)    /* USB setup data Cf USB spec rev 1.1 */
{
	u_int usbState = AT91F_UdpGetState(pUsbDesc->pUdp);
	u_int recipient = (pSetup->bmRequestType & 0x1F);

	/* Check request arguments */
	if (recipient > 2 || pSetup->wLength != 0)
		/* Device behavior not specified */
		AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);

	/* ================ Configured state ================= */
	else if ( (usbState & UDP_CONFG) ) {
		if (pUsbDesc->SetFeature)
			pUsbDesc->SetFeature (recipient, pSetup->wIndex, pSetup->wValue, pUsbDesc->pPrivateStandardData);
		else
			AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);
	}
	/* =================== Address state ================= */
	else if ( (usbState & UDP_FADDEN) ) {
		/* This request is valid in Address State only when reference endpoint 0 */
		if (recipient != 2 || pSetup->wIndex != 0)
			AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);
		else {
			if (pUsbDesc->SetFeature)
				pUsbDesc->SetFeature (recipient, pSetup->wIndex, pSetup->wValue, pUsbDesc->pPrivateStandardData);
			else
				AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);
		}
	}
	/* =================== Default state ================= */
	else
		/* Device behavior not specified */
		AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);
}

/* ************************************ */
/* AT91F_UsbDescSetInterface            */
/*                                      */
/* Arguments:                           */
/*     pSetup: pointer to setup datas   */
/* Return:                              */
/*     Nothing                          */
/* Description:                         */
/*     This request allows the host to  */
/*     select an alternate setting for  */
/*     the specified interface          */
/* ************************************ */
void AT91F_UsbDescSetInterface(
	AT91PS_UsbDesc const pUsbDesc,  /* pointer to a AT91S_UsbDesc structure */
	AT91PS_UsbSetup      pSetup)    /* USB setup data Cf USB spec rev 1.1 */
{
	u_int usbState = AT91F_UdpGetState(pUsbDesc->pUdp);

	/* Check request arguments */
	if (pSetup->wLength != 0)
		/* Device behavior not specified */
		AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);

	/* ================ Configured state ================= */
	else if ( (usbState & UDP_CONFG) ) {
		if (pUsbDesc->SetInterface)
			pUsbDesc->SetInterface (pSetup->wIndex, pSetup->wValue, pUsbDesc->pPrivateStandardData);
		else
			AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);
	}
	/* =================== Address state ================= */
	else if ( (usbState & UDP_FADDEN) )
		AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);
	/* =================== Default state ================= */
	else
		/* Device behavior not specified */
		AT91F_UdpEpEow(pUsbDesc->pUdp, pUsbDesc->epId);
}

/* ************************************ */
/* AT91F_UsbDescSynchFrame              */
/*                                      */
/* Arguments:                           */
/*     pSetup: pointer to setup datas   */
/* Return:                              */
/*     Nothing                          */
/* Description:                         */
/*     This request is used to set and  */
/*     then report an ep's synch.frame. */
/* ************************************ */
void AT91F_UsbDescSynchFrame(
	AT91PS_UsbDesc const pUsbDesc,  /* pointer to a AT91S_UsbDesc structure */
	AT91PS_UsbSetup      pSetup)    /* USB setup data Cf USB spec rev 1.1 */
{
	u_int usbState = AT91F_UdpGetState(pUsbDesc->pUdp);

	/* Check request arguments */
	if (pSetup->wValue != 0 || pSetup->wLength != 2)
		/* Device behavior not specified */
		AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);

	/* ================ Configured state ================= */
	else if ( (usbState & UDP_CONFG) ) {
		if (pUsbDesc->SynchFrame)
			pUsbDesc->SynchFrame (pSetup->wIndex, pUsbDesc->pPrivateStandardData);
		else
			AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);
	}
	/* =================== Address state ================= */
	else if ( (usbState & UDP_FADDEN) )
		AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);
	/* =================== Default state ================= */
	else
		/* Device behavior not specified */
		AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);
}

/* ************************************ */
/* AT91F_UdpConfigure                   */
/*                                      */
/* Arguments:                           */
/*     pEp:   pointer to endpoint       */
/*            standard USB descriptor   */
/* Return:                              */
/*     Nothing                          */
/* Description:                         */
/*     Configure USB endpoints according*/
/*     to the endpoint descriptor       */
/* ************************************ */
void AT91F_UdpConfigure(
	AT91PS_UsbDesc const pUsbDesc,  /* pointer to a AT91S_UsbDesc structure */
	AT91PS_UsbEndpoint const pEp)
{
	if (pEp->bEndpointAddress & (1 << 7)) {
		/* IN endpoint */
		switch (pEp->bmAttributes & 0x03) {
		case 0:  AT91F_UdpEpConfigure(pUsbDesc->pUdp, pUsbDesc->epId, UDP_EPDS | UDP_CONTROL);        break;
		case 1:  AT91F_UdpEpConfigure(pUsbDesc->pUdp, pUsbDesc->epId, UDP_EPDS | UDP_ISOCHRONOUS_IN); break;
		case 2:  AT91F_UdpEpConfigure(pUsbDesc->pUdp, pUsbDesc->epId, UDP_EPDS | UDP_BULK_IN);        break;
		default: AT91F_UdpEpConfigure(pUsbDesc->pUdp, pUsbDesc->epId, UDP_EPDS | UDP_INTERRUPT_IN);   break;
		}
	}
	else {
		/* OUT endpoint */
		switch (pEp->bmAttributes & 0x03) {
		case 0:  AT91F_UdpEpConfigure(pUsbDesc->pUdp, pUsbDesc->epId, UDP_EPDS | UDP_CONTROL);         break;
		case 1:  AT91F_UdpEpConfigure(pUsbDesc->pUdp, pUsbDesc->epId, UDP_EPDS | UDP_ISOCHRONOUS_OUT); break;
		case 2:  AT91F_UdpEpConfigure(pUsbDesc->pUdp, pUsbDesc->epId, UDP_EPDS | UDP_BULK_OUT);        break;
		default: AT91F_UdpEpConfigure(pUsbDesc->pUdp, pUsbDesc->epId, UDP_EPDS | UDP_INTERRUPT_OUT);   break;
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美丝袜自拍制服另类| 依依成人精品视频| 亚洲欧洲制服丝袜| 久久福利视频一区二区| 日本久久电影网| 精品久久久久久综合日本欧美| **欧美大码日韩| 黄色成人免费在线| 欧美日韩国产综合久久| 亚洲视频中文字幕| 国产一区二区三区香蕉 | 亚洲欧美色图小说| 国产一区二区成人久久免费影院| 欧美午夜电影在线播放| 国产精品免费视频观看| 激情欧美一区二区| 91精品国产高清一区二区三区蜜臀| 国产精品久久午夜夜伦鲁鲁| 精久久久久久久久久久| 欧美福利视频一区| 亚洲成人综合网站| 日本韩国欧美在线| 亚洲婷婷在线视频| 99精品视频在线免费观看| 久久久精品影视| 黄色资源网久久资源365| 精品视频1区2区| 一区二区三区在线观看欧美| 成人禁用看黄a在线| 久久久91精品国产一区二区三区| 日韩在线a电影| 欧美久久久一区| 亚洲成av人片一区二区梦乃| 在线看不卡av| 亚洲成a人v欧美综合天堂下载| 91丝袜呻吟高潮美腿白嫩在线观看| 国产精品久久久久天堂| 成人黄色大片在线观看| 国产精品入口麻豆原神| 成人蜜臀av电影| 亚洲日本电影在线| 91国偷自产一区二区开放时间| 日韩美女视频一区二区| 欧美午夜精品久久久| 性欧美大战久久久久久久久| 制服丝袜日韩国产| 精品一区二区三区日韩| 国产亚洲精品aa午夜观看| 成人毛片视频在线观看| 亚洲免费观看在线观看| 在线精品视频小说1| 天堂精品中文字幕在线| 欧美精品一区二区不卡| 福利电影一区二区三区| 亚洲天堂成人网| 99精品视频一区| 亚洲国产毛片aaaaa无费看| 欧美日韩一区不卡| 免费在线观看不卡| 国产精品素人一区二区| 91九色最新地址| 另类小说欧美激情| 中文字幕免费观看一区| 91免费视频网址| 日本亚洲最大的色成网站www| 精品国产乱码久久久久久老虎| 懂色av一区二区三区蜜臀| 艳妇臀荡乳欲伦亚洲一区| 7777精品伊人久久久大香线蕉完整版| 蜜桃av噜噜一区二区三区小说| 国产亚洲欧美激情| 欧美理论片在线| 成人一级视频在线观看| 日韩精品亚洲一区二区三区免费| 久久久不卡影院| 欧美日韩国产123区| 国产**成人网毛片九色 | 亚洲成人自拍网| www激情久久| 精品视频一区三区九区| 成人网页在线观看| 日本美女一区二区| 亚洲欧美在线视频| 欧美精品一区二| 欧美日韩精品是欧美日韩精品| 国产精品91一区二区| 亚洲国产视频一区二区| 中文字幕精品在线不卡| 欧美一区二区三区免费视频| 91同城在线观看| 久久97超碰色| 丝袜诱惑亚洲看片| 自拍偷拍亚洲综合| 国产欧美日韩一区二区三区在线观看| 欧美精品免费视频| 91成人国产精品| 成人av电影免费观看| 国产一区在线视频| 日本三级亚洲精品| 亚洲一区二区三区在线播放| 自拍偷拍亚洲激情| 日韩一区欧美小说| 久久久亚洲欧洲日产国码αv| 欧美高清激情brazzers| 欧美视频一区二区| 91福利小视频| 色综合天天视频在线观看| 国产不卡在线一区| 粉嫩欧美一区二区三区高清影视| 精品亚洲国产成人av制服丝袜| 另类小说视频一区二区| 日本va欧美va瓶| 麻豆成人久久精品二区三区小说| 亚洲成人动漫在线观看| 亚洲成人精品一区二区| 午夜久久福利影院| 一区二区不卡在线播放| 一区二区免费在线| 亚洲国产乱码最新视频 | 中文字幕中文在线不卡住| 久久久久久日产精品| 精品国产伦一区二区三区观看体验| 日韩欧美一二三四区| 日韩精品一区二区三区swag | 国产欧美日韩视频在线观看| 欧美精品一区二| 久久久久久夜精品精品免费| 国产欧美日韩在线看| 国产精品午夜电影| 亚洲欧美一区二区三区久本道91 | 99在线热播精品免费| 99精品黄色片免费大全| 色94色欧美sute亚洲13| 在线观看免费一区| 91精品国产综合久久久久久| 欧美大片顶级少妇| 中文字幕成人av| 亚洲伦理在线免费看| 日韩av一区二区三区四区| 理论片日本一区| 99久久精品国产精品久久| 91精品福利视频| 欧美一级精品在线| 欧美高清一级片在线观看| 一区二区三区在线视频观看58 | 综合久久久久综合| 亚洲国产人成综合网站| 久久精品国产77777蜜臀| 国产+成+人+亚洲欧洲自线| 日本丰满少妇一区二区三区| 欧美一区二区大片| 国产精品美女久久久久av爽李琼| 亚洲精品视频免费看| 男女男精品视频| 成人永久免费视频| 777色狠狠一区二区三区| 国产亚洲精品bt天堂精选| 亚洲福利一区二区三区| 国产乱色国产精品免费视频| 91日韩在线专区| 精品国产一区a| 亚洲精品精品亚洲| 黄色成人免费在线| 欧美色电影在线| 国产精品久久久久久户外露出| 视频一区二区三区中文字幕| 99热99精品| 欧美成人aa大片| 亚洲韩国精品一区| 成人蜜臀av电影| 精品sm在线观看| 亚洲成人激情社区| av在线播放不卡| 精品久久一区二区| 香蕉成人啪国产精品视频综合网 | 国产丝袜欧美中文另类| 亚洲一区二区三区视频在线| 成人听书哪个软件好| 精品久久久网站| 日本不卡高清视频| 欧美三级视频在线观看| 中文字幕一区在线| 国产精品一区专区| 日韩视频中午一区| 亚洲高清中文字幕| 91免费看`日韩一区二区| 久久久.com| 精品一区二区三区免费观看| 7799精品视频| 婷婷国产v国产偷v亚洲高清| 欧美做爰猛烈大尺度电影无法无天| 国产精品午夜在线| 高清不卡一区二区在线| 久久综合色一综合色88| 水野朝阳av一区二区三区| 欧美私人免费视频| 天天亚洲美女在线视频| 欧美日韩dvd在线观看| 五月综合激情日本mⅴ| 欧美天天综合网|