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

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

?? obj_usbdesc.c

?? at91rm9200的一級bootloader
?? C
?? 第 1 頁 / 共 2 頁
字號:
//*----------------------------------------------------------------------------

//*         ATMEL Microcontroller Software Support  -  ROUSSET  -

//*----------------------------------------------------------------------------

//* The software is delivered "AS IS" without warranty or condition of any

//* kind, either express, implied or statutory. This includes without

//* limitation any warranty or condition with respect to merchantability or

//* fitness for any particular purpose, or against the infringements of

//* intellectual property rights of others.

//*----------------------------------------------------------------------------

//* File Name           : obj_udpdesc.c

//* Object              : USB peripheral library.

//*

//* 1.0 07/23/01 ODi    : Creation

//*----------------------------------------------------------------------------

#include "services/obj_usbdesc.h"







/* ************************************ */

/* AT91F_OpenUsbDesc                    */

/*                                      */

/* Arguments:                           */

/* Return:                              */

/*     Pointer toAT91PS_UsbDesc object  */

/* Description:                         */

/* ************************************ */

AT91PS_UsbDesc AT91F_OpenUsbDesc(

	AT91PS_UsbDesc  pUsbDesc,  /* pointer to a AT91S_UsbDesc structure */

	AT91PS_UDP      pUdp,      /* Uregister structure */

	char            epId)      /* endpoint number */

{

	pUsbDesc->DispatchRequest = AT91F_UsbDescDispatchRequest;

	//pUsbDesc->DispatchClassRequest  = (AT91PF_DispatchClassRequest)  0;

	//pUsbDesc->DispatchVendorRequest = (AT91PF_DispatchVendorRequest) 0;

	//pUsbDesc->ClearFeature          = (AT91PF_ClearFeature)          0;

	//pUsbDesc->GetConfiguration      = (AT91PF_GetConfiguration)      0;

	//pUsbDesc->GetDescriptor         = (AT91PF_GetDescriptor)         0;

	//pUsbDesc->GetInterface          = (AT91PF_GetInterface)          0;

	//pUsbDesc->GetStatus             = (AT91PF_GetStatus)             0;

	//pUsbDesc->SetAddress            = (AT91PF_SetAddress)            0;

	//pUsbDesc->SetConfiguration      = (AT91PF_SetConfiguration)      0;

	//pUsbDesc->SetDescriptor         = (AT91PF_SetDescriptor)         0;

	//pUsbDesc->SetFeature            = (AT91PF_SetFeature)            0;

	//pUsbDesc->SetInterface          = (AT91PF_SetInterface)          0;

	//pUsbDesc->SynchFrame            = (AT91PF_SynchFrame)            0;



	pUsbDesc->pUdp = pUdp;

	pUsbDesc->epId = epId;

	return pUsbDesc;

}



/* ************************************ */

/* usbDescDispatchRequest               */

/*                                      */

/* Arguments:                           */

/*     pSetup: pointer to setup datas   */

/* Return:                              */

/*     Nothing                          */

/* Description:                         */

/*     This request handle standard     */

/*     request or call                  */

/*     usbDescDispatchClassRequest      */

/*     usbDescDispatchVendorRequest     */

/* ************************************ */

void AT91F_UsbDescDispatchRequest(

	AT91PS_UsbDesc const pDesc,  /* pointer to a AT91S_UsbDesc structure */

	AT91PS_UsbSetup      pSetup) /* USB setup data Cf USB spec rev 1.1 */

{

	switch ((pSetup->bmRequestType & (0x60)) >> 5) {

	case 0: /* Standard request */

		switch (pSetup->bRequest) {

		case USB_CLEAR_FEATURE:     AT91F_UsbDescClearFeature    (pDesc, pSetup); break;

		case USB_GET_CONFIGURATION: AT91F_UsbDescGetConfiguration(pDesc, pSetup); break;

		case USB_GET_DESCRIPTOR:    AT91F_UsbDescGetDescriptor   (pDesc, pSetup); break;

		case USB_GET_INTERFACE:     AT91F_UsbDescGetInterface    (pDesc, pSetup); break;

		case USB_GET_STATUS:        AT91F_UsbDescGetStatus       (pDesc, pSetup); break;

		case USB_SET_ADDRESS:       AT91F_UsbDescSetAddress      (pDesc, pSetup); break;

		case USB_SET_CONFIGURATION: AT91F_UsbDescSetConfiguration(pDesc, pSetup); break;

		case USB_SET_DESCRIPTOR:    AT91F_UsbDescSetDescriptor   (pDesc, pSetup); break;

		case USB_SET_FEATURE:       AT91F_UsbDescSetFeature      (pDesc, pSetup); break;

		case USB_SET_INTERFACE:     AT91F_UsbDescSetInterface    (pDesc, pSetup); break;

		case USB_SYNCH_FRAME:       AT91F_UsbDescSynchFrame      (pDesc, pSetup); break;

		default:                    AT91F_UdpEpStall             (pDesc->pUdp, pDesc->epId);                                      break;

		}

		break;

	case 1: /* Class request */

		if (pDesc->DispatchClassRequest)

			pDesc->DispatchClassRequest(pSetup, pDesc->pPrivateClassData);

		break;

	case 2: /* Vendor request */

		if (pDesc->DispatchVendorRequest)

			pDesc->DispatchVendorRequest(pSetup, pDesc->pPrivateVendorData);

		break;

	default: /* Reserved */

		AT91F_UdpEpStall(pDesc->pUdp, pDesc->epId);

		break;

	}

	return;

}



/* ************************************ */

/* AT91F_UsbDescClearFeature            */

/*                                      */

/* Arguments:                           */

/*     pSetup: pointer to setup datas   */

/* Return:                              */

/*     Nothing                          */

/* Description:                         */

/*     This request is used to clear or */

/*     disable a specific feature       */

/* ************************************ */

void AT91F_UsbDescClearFeature(

	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 an application handler exists, transmit the request */

		if (pUsbDesc->ClearFeature)

			pUsbDesc->ClearFeature(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 != 0 && pSetup->wIndex != 0)

			AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);

		else {

		/* If an application handler exists, transmit the request */

			if (pUsbDesc->ClearFeature )

				pUsbDesc->ClearFeature(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_UsbDescGetConfiguration        */

/*                                      */

/* Arguments:                           */

/*     pSetup: pointer to setup datas   */

/* Return:                              */

/*     Nothing                          */

/* Description:                         */

/*     This request returns the current */

/*     device configuration value       */

/* ************************************ */

void AT91F_UsbDescGetConfiguration(

	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->wIndex != 0 || pSetup->wLength != 1)

		/* Device behavior not specified */

		AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);



	/* ================ Configured state ================= */

	else if ( (usbState & UDP_CONFG) ) {

		/* If an application handler exists, transmit the request */

		if (pUsbDesc->GetConfiguration )

			pUsbDesc->GetConfiguration(pUsbDesc->pPrivateStandardData);

		else

			AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);

	}

	/* =================== Address state ================= */

	else if ( (usbState & UDP_FADDEN) ) {

		/* Return a 0 value */

		AT91F_UdpEpWrite(pUsbDesc->pUdp, pUsbDesc->epId, "\0x00", 1);

		AT91F_UdpEpEow(pUsbDesc->pUdp, pUsbDesc->epId);

	}

	/* =================== Default state ================= */

	else

		/* Device behavior not specified */

		AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);

}



/* ************************************ */

/* AT91F_UsbDescGetDescriptor           */

/*                                      */

/* Arguments:                           */

/*     pSetup: pointer to setup datas   */

/* Return:                              */

/*     Nothing                          */

/* Description:                         */

/*     This request returns the         */

/*     specified descriptor if the      */

/*     descriptor exists                */

/* ************************************ */

void AT91F_UsbDescGetDescriptor(

	AT91PS_UsbDesc const pUsbDesc,  /* pointer to a AT91S_UsbDesc structure */

	AT91PS_UsbSetup      pSetup)    /* USB setup data Cf USB spec rev 1.1 */

{

	/* This request is valid in all states */

	if (pUsbDesc->GetDescriptor)

		pUsbDesc->GetDescriptor (

			((pSetup->wValue) >> 8),   /* Descriptor type */

			((pSetup->wValue) & 0xFF), /* Descriptor Index */

			pSetup->wIndex,            /* Language ID */

			pSetup->wLength,           /* Descripotr Length */

			pUsbDesc->pPrivateStandardData);

	else

		AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);



}



/* ************************************ */

/* AT91F_UsbDescGetInterface            */

/*                                      */

/* Arguments:                           */

/*     pSetup: pointer to setup datas   */

/* Return:                              */

/*     Nothing                          */

/* Description:                         */

/*     This request returns the         */

/*     selected alternate setting for   */

/*     the specified interface          */

/* ************************************ */

void AT91F_UsbDescGetInterface(

	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 != 1)

		/* Device behavior not specified */

		AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);



	/* ================ Configured state ================= */

	else if ( (usbState & UDP_CONFG) ) {

		/* If an application handler exists, transmit the request */

		if (pUsbDesc->GetInterface)

			pUsbDesc->GetInterface(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_UsbDescGetStatus               */

/*                                      */

/* Arguments:                           */

/*     pSetup: pointer to setup datas   */

/* Return:                              */

/*     Nothing                          */

/* Description:                         */

/*     This request returns status for  */

/*     the specified endpoint           */

/* ************************************ */

void AT91F_UsbDescGetStatus(

	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->wValue != 0 || pSetup->wLength != 2)

		/* Device behavior not specified */

		AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);

	else if (recipient == 0 && pSetup->wIndex != 0)

		/* Device behavior not specified */

		AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);



	/* ================ Configured state ================= */

	else if ( (usbState & UDP_CONFG) ) {

		if (pUsbDesc->GetStatus)

			pUsbDesc->GetStatus(recipient, pSetup->wIndex, pUsbDesc->pPrivateStandardData);

		else

			AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);

	}

	/* =================== Address state ================= */

	else if ( (usbState & UDP_FADDEN) ) {

		if (pSetup->wIndex != 0 || !(pUsbDesc->GetStatus))

			AT91F_UdpEpStall(pUsbDesc->pUdp, pUsbDesc->epId);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久看| av网站免费线看精品| 国产精品美女久久久久av爽李琼 | 欧美一区午夜精品| 欧美亚洲国产怡红院影院| 色婷婷综合视频在线观看| 成人h动漫精品| 91在线一区二区三区| 91视频国产观看| 欧美色视频在线观看| 欧美精三区欧美精三区| 91精品麻豆日日躁夜夜躁| 欧美一区二区三区白人| 日韩三级高清在线| 国产欧美日韩另类视频免费观看| 国产亚洲精久久久久久| 中文字幕在线观看一区二区| 亚洲同性同志一二三专区| 亚洲精品成人在线| 五月天婷婷综合| 国产精一品亚洲二区在线视频| 国产精品一区二区在线观看不卡| 床上的激情91.| 欧亚一区二区三区| 欧美精品一区二区三区蜜桃| 国产日韩欧美a| 亚洲综合在线第一页| 奇米精品一区二区三区在线观看 | 亚洲黄色片在线观看| 亚洲bdsm女犯bdsm网站| 国产一区亚洲一区| 91美女片黄在线| 日韩三级免费观看| 亚洲三级在线看| 六月丁香综合在线视频| 不卡av在线网| 日韩欧美一区二区久久婷婷| 中文字幕免费不卡| 日韩va亚洲va欧美va久久| 成人午夜碰碰视频| 日韩欧美精品三级| 亚洲午夜电影网| 国产宾馆实践打屁股91| 欧美一级电影网站| 亚洲精品水蜜桃| 国产成人自拍在线| 制服丝袜激情欧洲亚洲| 亚洲欧美一区二区视频| 久久激五月天综合精品| 欧美视频一区在线| 国产精品入口麻豆原神| 精品一区二区三区免费观看| 欧美三级视频在线播放| 欧美国产1区2区| 蜜臀91精品一区二区三区| 色哟哟在线观看一区二区三区| 久久久精品国产免费观看同学| 日本大胆欧美人术艺术动态| 91麻豆自制传媒国产之光| 久久精品亚洲一区二区三区浴池| 日日夜夜精品视频免费| 欧美亚一区二区| 亚洲精品中文在线影院| 波多野结衣一区二区三区| 久久这里只有精品6| 日韩av不卡一区二区| 欧美三级日韩在线| 一区二区三区中文在线| 97久久精品人人爽人人爽蜜臀 | 成人免费va视频| 久久精品日韩一区二区三区| 美女视频黄频大全不卡视频在线播放| 欧美在线观看视频一区二区三区| 亚洲视频狠狠干| 91视频国产资源| 伊人一区二区三区| 在线国产电影不卡| 亚洲一区在线视频| 欧美三级在线播放| 日韩成人一区二区| 日韩欧美你懂的| 国内精品伊人久久久久av影院| 欧美岛国在线观看| 国产一区二区0| 中文在线一区二区| 色综合色综合色综合| 一区二区三区精品久久久| 色哟哟国产精品| 性做久久久久久久免费看| 91精品国产色综合久久| 欧美aa在线视频| 久久久久99精品一区| www.亚洲精品| 亚洲成人午夜电影| 26uuu国产日韩综合| 丁香另类激情小说| 亚洲综合色在线| 欧美一二三四区在线| 国产一区二区三区蝌蚪| 国产精品久久久久久亚洲毛片 | 日本道精品一区二区三区| 亚洲欧美激情在线| 欧美精品一二三| 国内精品伊人久久久久av一坑| 中文字幕欧美区| 欧美美女视频在线观看| 国产成人亚洲综合a∨猫咪| 亚洲欧洲日韩综合一区二区| 欧美电影一区二区三区| 国产福利视频一区二区三区| 亚洲精品久久7777| 日韩欧美专区在线| 99久久国产综合精品女不卡| 日本不卡视频一二三区| 国产精品久久久久久久久动漫 | 免费亚洲电影在线| 国产精品美女久久久久久| 在线成人免费视频| 成人午夜激情片| 日本成人在线一区| 一区免费观看视频| 久久五月婷婷丁香社区| 欧美午夜电影网| 高清成人免费视频| 久久99精品久久久| 亚洲一二三四区| 中文字幕精品一区二区精品绿巨人| 在线精品视频免费播放| 国产成人精品影院| 蜜桃视频第一区免费观看| 一区二区三区日韩欧美| 欧美激情一区不卡| 久久影院午夜论| 日韩视频一区二区在线观看| 欧洲av一区二区嗯嗯嗯啊| 成人午夜激情影院| 国产成人免费视频一区| 青青草国产成人av片免费| 一区二区激情小说| 国产精品成人一区二区艾草| wwwwww.欧美系列| 精品美女一区二区| 8x福利精品第一导航| 欧美视频完全免费看| 色激情天天射综合网| 91视频免费播放| 一本色道久久综合亚洲91| 成人午夜看片网址| 成人午夜电影小说| 成人精品电影在线观看| 国产成人高清视频| 国产成人亚洲综合a∨猫咪| 国产精品自拍毛片| 高清不卡在线观看| 成人免费毛片aaaaa**| 成av人片一区二区| 一本高清dvd不卡在线观看| 一本大道综合伊人精品热热| 99vv1com这只有精品| 色综合夜色一区| 欧美视频一区在线观看| 欧美日韩免费视频| 日韩一级欧美一级| 久久影院视频免费| 自拍偷拍国产精品| 亚洲一区在线观看视频| 日韩中文字幕亚洲一区二区va在线 | 精品国产露脸精彩对白| 日韩视频在线永久播放| 久久午夜色播影院免费高清| 欧美激情一区三区| 亚洲精品国产成人久久av盗摄| 亚洲综合激情小说| 久久99热99| 91女神在线视频| 欧美猛男超大videosgay| www日韩大片| 一区二区三区中文字幕电影| 奇米在线7777在线精品| 成人黄色大片在线观看| 日本电影欧美片| 日韩精品在线一区| 国产精品国产a级| 亚洲成人av电影在线| 国产精品中文有码| 欧美日韩一二三| 久久久99精品免费观看不卡| 亚洲精品中文在线| 国产一区二区在线电影| 91久久精品日日躁夜夜躁欧美| 欧美一区永久视频免费观看| 中文字幕中文字幕中文字幕亚洲无线| 亚洲人成在线播放网站岛国| 免费的成人av| 91视频www| 欧美精品一区二区三区很污很色的| 亚洲欧美日韩精品久久久久| 国产一区二三区| 欧美精品丝袜久久久中文字幕| 中文字幕在线不卡一区二区三区|