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

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

?? at91_svc_usbout.c

?? hyesco usb devce driver
?? C
字號:
//*----------------------------------------------------------------------------
//*      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           : AT91_SVC_USBOUT.c
//* Object              : DMA service for UDP peripheral
//*
//* 1.0 Jul 30 2002 	: ODi Creation
//*----------------------------------------------------------------------------
#include "AT91_SVC_USBOUT.h"
#include "lib_AT91RM9200.h"

//*----------------------------------------------------------------------------
//* \fn    AT91F_SVC_USBOUT_Open
//* \brief Open USBOUT service.
//*----------------------------------------------------------------------------
AT91PS_SVC_USBOUT AT91F_SVC_USBOUT_Open(
	AT91PS_SVC_USBOUT pSvcUdp,  // \arg Pointer to an USBOUT service previously allocated
	AT91PS_UDP pUdp,            // \arg Pointer to UDP registers
	unsigned char epNb,         // \arg Endpoint Number
	unsigned char epSize,       // \arg Endpoint Size
	unsigned char nbBanks)      // \arg UDP DPR banks
{
	pSvcUdp->Handler = AT91F_SVC_USBOUT_Handler;
	pSvcUdp->Read    = AT91F_SVC_USBOUT_Read;

	pSvcUdp->RxComplete    = (AT91PF_SVC_SVCUSBOUT_RxComplete) 0;

	pSvcUdp->clrFlag = AT91C_UDP_RX_DATA_BK0;

	pSvcUdp->pBuffer = (char *) 0;
	pSvcUdp->bufferSize = 0;

	pSvcUdp->pUdp = pUdp;
	pSvcUdp->epNb = epNb;
	pSvcUdp->epSize = epSize;
	pSvcUdp->nbBank = nbBanks;


	return pSvcUdp;
}


//*----------------------------------------------------------------------------
//* \fn    AT91F_SVC_USBOUT_DataOut
//* \brief
//*----------------------------------------------------------------------------
__inline void AT91F_SVC_USBOUT_DataOut(
	AT91PS_SVC_USBOUT pSvcUdp,     // \arg Pointer to an USBOUT service
	AT91PS_UDP pUdp,               // \arg Pointer to UDP registers
	char epNb,                     // \arg Pointer to an endpoint number
	unsigned int epCsr)            // \arg Value of the endpoint CSR
{
	unsigned int bytesReceived, nbBytes;

	// Copy bytes received to the client buffer, check overrun
	bytesReceived = (epCsr & AT91C_UDP_RXBYTECNT) >> 16;
	while (bytesReceived > pSvcUdp->epSize) {
		AT91F_UDP_EpRead(pUdp, epNb);
		--bytesReceived;
	}
	if (bytesReceived > pSvcUdp->bufferSize) {
		bytesReceived = pSvcUdp->bufferSize;
	}

	/*if (bytesReceived > pSvcUdp->epSize)
		bytesReceived = pSvcUdp->epSize;
	*/
		
	pSvcUdp->bufferSize -= bytesReceived;
	nbBytes = bytesReceived;
	while (nbBytes--)
		*(pSvcUdp->pBuffer)++ = AT91F_UDP_EpRead(pUdp, epNb);


	// Clear AT91C_UDP_RX_DATA_BK0 or AT91C_UDP_RX_DATA_BK1 flag
	AT91F_UDP_EpClear(pUdp, epNb, pSvcUdp->clrFlag);
	pSvcUdp->clrFlag = ((pSvcUdp->nbBank > 1) && (pSvcUdp->clrFlag == AT91C_UDP_RX_DATA_BK0)) ?
		AT91C_UDP_RX_DATA_BK1 :
		AT91C_UDP_RX_DATA_BK0;

	// Notify the end of Reception if buffer is full or nb of bytes received < epSize
	if (  (!pSvcUdp->bufferSize) || (bytesReceived < pSvcUdp->epSize) ) {
		AT91F_UDP_DisableIt(pUdp, (1 << epNb));
		if (pSvcUdp->RxComplete)
			pSvcUdp->RxComplete(pSvcUdp);
	}
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_SVC_USBOUT_Handler
//* \brief
//*----------------------------------------------------------------------------
void AT91F_SVC_USBOUT_Handler(
	AT91PS_SVC_USBOUT pSvcUdp)     // \arg Pointer to an USBOUT service
{
	AT91PS_UDP    pUdp = pSvcUdp->pUdp; // Pointer to UDP registers
	unsigned char epNb = pSvcUdp->epNb; // Endpoint number
	unsigned int  epCsr =  AT91F_UDP_EpStatus(pUdp, epNb);

	// test if any DATA OUT occured
	if (epCsr & (AT91C_UDP_RX_DATA_BK0 | AT91C_UDP_RX_DATA_BK1)) {
		AT91F_SVC_USBOUT_DataOut(pSvcUdp, pUdp, epNb, epCsr);
	}

	// Test if a STALL has been acknowledged...
	else if (epCsr) { // !!!!! Should be: AT91C_UDP_STALLSENT) {
		AT91F_UDP_EpClear(pUdp, epNb, (epCsr));
	}

}

//*----------------------------------------------------------------------------
//* \fn    AT91F_SVC_USBOUT_Read
//* \brief
//*----------------------------------------------------------------------------
void AT91F_SVC_USBOUT_Read(
	AT91PS_SVC_USBOUT pSvcUdp,     // \arg Pointer to an USBOUT service
	char *pBuffer,                 // \arg Pointer to the client buffer to fill
	unsigned int bufferSize,       // \arg Client buffer size
	AT91PF_SVC_SVCUSBOUT_RxComplete Callback) // \arg Callback to invoke when buffer is Full
{
	pSvcUdp->bufferSize = bufferSize;
	pSvcUdp->pBuffer    = pBuffer;
	pSvcUdp->RxComplete = Callback;
	// Enable endpoint 1 & 2 interrupts
	AT91F_UDP_EnableIt(pSvcUdp->pUdp, (1 << pSvcUdp->epNb));
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久精品免费看| 亚洲chinese男男1069| 亚洲国产人成综合网站| 91福利视频网站| 26uuu色噜噜精品一区二区| 免费成人美女在线观看.| 欧美日韩日本视频| 亚洲午夜久久久久中文字幕久| 91同城在线观看| 天天综合色天天综合色h| 欧美精品一区二区三区四区| 韩国三级在线一区| 亚洲欧美国产高清| 欧美一区二区三区视频在线观看| 成人欧美一区二区三区黑人麻豆| 国产人成亚洲第一网站在线播放| 欧洲在线/亚洲| 日韩av中文字幕一区二区| 国产日产精品1区| 欧洲一区二区三区免费视频| 最新国产精品久久精品| 久久综合久久99| 欧美日免费三级在线| 日韩国产成人精品| 亚洲天堂福利av| 欧美国产日本韩| 久久亚洲二区三区| 日韩一卡二卡三卡国产欧美| 色妹子一区二区| 国产一区二区三区免费观看| 亚洲欧洲日韩在线| 亚洲三级在线观看| 中文字幕欧美三区| 日韩一区二区在线看| 国产精品欧美久久久久无广告 | 国产一区二区三区四区五区入口| 一区二区三区 在线观看视频| 久久综合色8888| 国产视频亚洲色图| 久久精品人人做人人爽人人| 久久久久久久久伊人| 午夜精品福利在线| 肉丝袜脚交视频一区二区| 一区二区三区四区av| 国产精品免费av| 亚洲欧美日韩国产手机在线 | 91小视频在线| 欧美日韩激情在线| 欧美在线播放高清精品| 精品成a人在线观看| 精品国产不卡一区二区三区| 亚洲欧洲在线观看av| 日韩电影免费在线| 人人精品人人爱| 国产成人在线免费观看| 99精品视频在线观看免费| 99久久精品国产一区| 欧美日本在线观看| 懂色一区二区三区免费观看| 欧美日韩一区二区三区高清| 日韩欧美国产综合一区| 中文字幕在线一区免费| 免费一级片91| 日本韩国一区二区三区| 欧美精品1区2区| 91在线无精精品入口| 欧美一区二区三区人| 久久久久久久久久久黄色| 欧美日韩综合在线| 国产精品丝袜黑色高跟| 美腿丝袜亚洲一区| 91精品国产一区二区三区香蕉| 国产精品久久久久久福利一牛影视| 91精品综合久久久久久| 国产精品视频线看| 国产成人日日夜夜| 久久久久国产精品麻豆ai换脸| 全国精品久久少妇| 欧美日韩你懂的| 日韩黄色小视频| 欧美电视剧免费观看| 精品免费国产一区二区三区四区| 一区二区三区蜜桃| 欧美日本在线视频| 国产一区二区免费看| 精品国内二区三区| 成人av先锋影音| 亚洲自拍偷拍综合| 日韩视频永久免费| 久久综合色综合88| av在线综合网| 成人精品国产免费网站| 亚洲 欧美综合在线网络| 欧美三级三级三级| 精品中文字幕一区二区| 亚洲日本丝袜连裤袜办公室| 欧美美女bb生活片| 成人动漫av在线| 偷拍日韩校园综合在线| 国产精品美女久久福利网站| 欧美日韩一区二区电影| 香港成人在线视频| 国产欧美日产一区| 欧美三级韩国三级日本一级| 久久99久久99精品免视看婷婷 | 国产福利一区在线观看| 国产三级一区二区三区| 色婷婷av久久久久久久| 国模套图日韩精品一区二区| 亚洲成av人影院在线观看网| 日韩亚洲欧美成人一区| 国产欧美精品在线观看| 9191成人精品久久| 日韩精品一区在线观看| 在线播放视频一区| 在线不卡a资源高清| 欧美视频在线一区二区三区 | 亚洲线精品一区二区三区| 国产精品久久国产精麻豆99网站| 91精品在线免费观看| 欧美色图在线观看| 欧美精品 日韩| 欧美日韩在线播放一区| 欧美电影影音先锋| 欧美日韩在线播放三区四区| 日韩影院免费视频| 蜜臀国产一区二区三区在线播放 | 久久亚洲捆绑美女| 日韩免费视频一区二区| 国产欧美日韩视频一区二区 | 紧缚捆绑精品一区二区| 久久精品久久综合| aaa亚洲精品| 精品剧情v国产在线观看在线| 亚洲另类春色国产| ●精品国产综合乱码久久久久| 中文字幕国产一区二区| 舔着乳尖日韩一区| 亚洲成人中文在线| 国产欧美1区2区3区| 久久久久久免费网| 亚洲va国产va欧美va观看| 狠狠色综合播放一区二区| 白白色 亚洲乱淫| 欧美亚洲丝袜传媒另类| 精品嫩草影院久久| 日本视频一区二区| 日本道精品一区二区三区| 日韩一区二区三区在线| 亚洲欧美日韩在线播放| 国产99久久久国产精品| 欧美mv日韩mv国产网站| 午夜激情综合网| 欧美亚洲愉拍一区二区| 亚洲乱码国产乱码精品精98午夜| 国产伦精品一区二区三区视频青涩 | 欧美亚洲动漫制服丝袜| 日本一区二区久久| 国产河南妇女毛片精品久久久| 日韩欧美在线综合网| 国产精品动漫网站| 亚洲色图欧美激情| 99re热这里只有精品免费视频| 精品国精品自拍自在线| 国产精品123区| 日韩一区在线看| 91在线免费播放| 午夜av区久久| 久久久久久免费| 在线观看日韩一区| 日韩中文字幕区一区有砖一区| 久久久久久久综合色一本| 成人一区二区三区在线观看| 亚洲图片欧美一区| 制服丝袜亚洲网站| 精品一区二区三区在线播放| 中文字幕一区二区三区不卡| 欧美日韩日日摸| 91丨九色丨国产丨porny| 亚洲精品免费在线观看| 69久久夜色精品国产69蝌蚪网| 青青草原综合久久大伊人精品优势| 久久久午夜电影| 在线精品国精品国产尤物884a| 日韩国产精品久久| 国产精品成人一区二区艾草| 日韩电影免费在线观看网站| 亚洲日本免费电影| 欧美电影免费提供在线观看| 91黄色小视频| 成人午夜免费av| 成人综合激情网| 久久91精品国产91久久小草| 亚洲天堂福利av| 日韩欧美国产麻豆| 午夜免费久久看| 亚洲素人一区二区| 国产精品福利在线播放| 欧美精品一区视频| 久久青草欧美一区二区三区|