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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? obj_sbuffer.c

?? 該源碼是AT91RM9200處理器的loader文件
?? 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           : obj_sbuffer.c//* Object              : SimpleBuffer implementation (specialization of SBuffer)//*//* 1.0 23/03/01 	    : HI Creation//* 1.0 20/06/01 	    : ODi Adaptation for DFU//*----------------------------------------------------------------------------#include "lib_debug.h"#include "services\obj_sbuffer.h"#include "services\obj_pipe.h"#ifdef DBG_DRV_BUFFER#include <assert.h>const char *SBufferErrMsg[] = {	"Buffer Success",	"Periph has written more bytes than there is in the buffer",	"Read buffer full",	"Pipe Unknown error"};#endif//*----------------------------------------------------------------------------//* Function Name       : OpenSimpleBuffer()//* Object              ://* Input Parameters    ://* Output Parameters   ://*----------------------------------------------------------------------------AT91PS_Buffer AT91F_OpenSBuffer(	AT91PS_SBuffer pSimpleBuffer){	AT91PS_Buffer pBuffer = &(pSimpleBuffer->parent);#ifdef DBG_DRV_BUFFER	assert(pSimpleBuffer);	assert(pBuffer);#endif	// Init the base class members	pBuffer->pPipe = (AT91PS_Pipe) 0;	// Functions invoked by the pipe	pBuffer->SetRdBuffer    = AT91F_SbSetRdBuffer;	pBuffer->SetWrBuffer    = AT91F_SbSetWrBuffer;	pBuffer->RstRdBuffer    = AT91F_SbRstRdBuffer;	pBuffer->RstWrBuffer    = AT91F_SbRstWrBuffer;	pBuffer->MsgWritten     = AT91F_SbMsgWritten;	pBuffer->MsgRead        = AT91F_SbMsgRead;	// Functions invoked by the peripheral	pBuffer->GetWrBuffer    = AT91F_SbGetWrBuffer;	pBuffer->GetRdBuffer    = AT91F_SbGetRdBuffer;	pBuffer->EmptyWrBuffer  = AT91F_SbEmptyWrBuffer;	pBuffer->FillRdBuffer   = AT91F_SbFillRdBuffer;	pBuffer->pChild         = pSimpleBuffer;	// Init class members	pSimpleBuffer->szRdBuffer = 0;	pSimpleBuffer->szWrBuffer = 0;	pSimpleBuffer->pRdBuffer  = (char *) 0;	pSimpleBuffer->pWrBuffer  = (char const *)0;	return pBuffer;}//*----------------------------------------------------------------------------//* Function Name       : AT91F_SbSetRdBuffer()//* Object              : Prepare a new read buffer//* Input Parameters    ://* Output Parameters   ://*----------------------------------------------------------------------------AT91S_BufferStatus AT91F_SbSetRdBuffer(	AT91PS_Buffer  pBuffer,	char           *pData,	unsigned int   dataSize){	AT91PS_SBuffer pSBuffer = (AT91PS_SBuffer)(pBuffer->pChild);#ifdef DBG_DRV_BUFFER	assert(pSBuffer);#endif	pSBuffer->pRdBuffer  = pData;	pSBuffer->szRdBuffer = dataSize;	return AT91C_BUFFER_SUCCESS;}//*----------------------------------------------------------------------------//* Function Name       : AT91F_SbSetWrBuffer()//* Object              : Prepare a new write buffer//* Input Parameters    ://* Output Parameters   ://*----------------------------------------------------------------------------AT91S_BufferStatus AT91F_SbSetWrBuffer(	AT91PS_Buffer pBuffer,	char const    *pData,	unsigned int  dataSize){	AT91PS_SBuffer pSBuffer = (AT91PS_SBuffer)(pBuffer->pChild);#ifdef DBG_DRV_BUFFER	assert(pSBuffer);#endif	pSBuffer->pWrBuffer  = pData;	pSBuffer->szWrBuffer = dataSize;	return AT91C_BUFFER_SUCCESS;}//*----------------------------------------------------------------------------//* Function Name       : AT91F_SbRstRdBuffer()//* Object              : Empty the read buffer//* Input Parameters    ://* Output Parameters   ://*----------------------------------------------------------------------------AT91S_BufferStatus AT91F_SbRstRdBuffer(	AT91PS_Buffer pBuffer){		AT91PS_SBuffer pSBuffer = (AT91PS_SBuffer)(pBuffer->pChild);	#ifdef DBG_DRV_BUFFER		assert(pSBuffer);	#endif		pSBuffer->pRdBuffer  = 0;		pSBuffer->szRdBuffer = 0;		return AT91C_BUFFER_SUCCESS;}//*----------------------------------------------------------------------------//* Function Name       : AT91F_SbRstWrBuffer()//* Object              : Empty the write buffer//* Input Parameters    ://* Output Parameters   ://*----------------------------------------------------------------------------AT91S_BufferStatus AT91F_SbRstWrBuffer(	AT91PS_Buffer pBuffer){		AT91PS_SBuffer pSBuffer = (AT91PS_SBuffer)(pBuffer->pChild);	#ifdef DBG_DRV_BUFFER		assert(pSBuffer);	#endif		pSBuffer->pWrBuffer = (char *) 0;		pSBuffer->szWrBuffer = 0;		return AT91C_BUFFER_SUCCESS;}//*----------------------------------------------------------------------------//* Function Name       : AT91F_SbMsgWritten()//* Object              : Check that the message has been written//* Input Parameters    ://* Output Parameters   ://*----------------------------------------------------------------------------char AT91F_SbMsgWritten(	AT91PS_Buffer pBuffer,	char const *pMsg){	AT91PS_SBuffer pSBuffer = (AT91PS_SBuffer)(pBuffer->pChild);	#ifdef DBG_DRV_BUFFER		assert(pSBuffer);	#endif	return ( !(pSBuffer->szWrBuffer > 0) );}//*----------------------------------------------------------------------------//* Function Name       : AT91F_SbMsgRead()//* Object              : Check that the message has been read//* Input Parameters    ://* Output Parameters   ://*----------------------------------------------------------------------------char AT91F_SbMsgRead(	AT91PS_Buffer pBuffer,	char const *pMsg){	AT91PS_SBuffer pSBuffer = (AT91PS_SBuffer)(pBuffer->pChild);	#ifdef DBG_DRV_BUFFER		assert(pSBuffer);	#endif	return ( !(pSBuffer->szRdBuffer > 0) );}//*----------------------------------------------------------------------------//* Function Name       : AT91F_SbGetWrBuffer()//* Object              : Check that the message has been read//* Input Parameters    ://* Output Parameters   ://*----------------------------------------------------------------------------AT91S_BufferStatus AT91F_SbGetWrBuffer(	AT91PS_Buffer pBuffer,	char const ** pData,	unsigned int  *pSize){	AT91PS_SBuffer pSBuffer = (AT91PS_SBuffer)(pBuffer->pChild);	#ifdef DBG_DRV_BUFFER		assert(pSBuffer);	#endif	*pData = pSBuffer->pWrBuffer;	*pSize = pSBuffer->szWrBuffer;	return AT91C_BUFFER_SUCCESS;}//*----------------------------------------------------------------------------//* Function Name       : AT91F_SbGetRdBuffer()//* Object              : Check that the message has been read//* Input Parameters    ://* Output Parameters   ://*----------------------------------------------------------------------------AT91S_BufferStatus AT91F_SbGetRdBuffer(	AT91PS_Buffer pBuffer,	char          **pData,	unsigned int  *pSize){	AT91PS_SBuffer pSBuffer = (AT91PS_SBuffer)(pBuffer->pChild);	#ifdef DBG_DRV_BUFFER		assert(pSBuffer);	#endif	*pData = pSBuffer->pRdBuffer;	*pSize = pSBuffer->szRdBuffer;	return AT91C_BUFFER_SUCCESS;}//*----------------------------------------------------------------------------//* Function Name       : AT91F_SbEmptyWrBuffer()//* Object              : A message has been written//* Input Parameters    ://* Output Parameters   ://*----------------------------------------------------------------------------AT91S_BufferStatus AT91F_SbEmptyWrBuffer(	AT91PS_Buffer pBuffer,	unsigned int size){	AT91PS_SBuffer pSBuffer = (AT91PS_SBuffer)(pBuffer->pChild);	AT91PS_Pipe    pPipe;	AT91S_BufferStatus status    = AT91C_BUFFER_SUCCESS;	#ifdef DBG_DRV_BUFFER		assert(pSBuffer);	#endif	// Update data pointer	pSBuffer->pWrBuffer += size;	// Update data counter	if (pSBuffer->szWrBuffer < size) {		pSBuffer->szWrBuffer = 0;		status =  AT91C_BUFFER_UNDERRUN;	}	else {		pSBuffer->szWrBuffer -= size;	}	// Invoke the callback	if (pSBuffer->szWrBuffer == 0) {		pPipe = pBuffer->pPipe;		if (pPipe->WriteCallback)			pPipe->WriteCallback(status, pPipe->pPrivateWriteData);	}	return status;}//*----------------------------------------------------------------------------//* Function Name       : AT91F_SbFillRdBuffer()//* Object              : A message has been read//* Input Parameters    ://* Output Parameters   ://*----------------------------------------------------------------------------AT91S_BufferStatus AT91F_SbFillRdBuffer(	AT91PS_Buffer pBuffer,	unsigned int  size){	AT91PS_SBuffer pSBuffer = (AT91PS_SBuffer)(pBuffer->pChild);	AT91PS_Pipe    pPipe;	AT91S_BufferStatus status = AT91C_BUFFER_SUCCESS;	#ifdef DBG_DRV_BUFFER		assert(pSBuffer);	#endif	// Update data pointer	pSBuffer->pRdBuffer += size;	// Update data counter	if (pSBuffer->szRdBuffer < size) {		pSBuffer->szRdBuffer = 0;		status = AT91C_BUFFER_OVERFLOW;	}	else		pSBuffer->szRdBuffer -= size;	// Invoke the callback	if (pSBuffer->szRdBuffer == 0) {		pPipe = pBuffer->pPipe;		if (pPipe->ReadCallback)			pPipe->ReadCallback(status, pPipe->pPrivateReadData);	}	return status;}//*----------------------------------------------------------------------------//* Function Name       : SbGetRdBuffer()//* Object              : Check that the message has been read//* Input Parameters    ://* Output Parameters   ://*----------------------------------------------------------------------------#ifdef DBG_DRV_BUFFERchar const *AT91F_SbGetError(AT91S_BufferStatus errorNumber){	switch(errorNumber & AT91C_BUFFER_ERROR) {	case AT91C_BUFFER_SUCCESS:  return (SBufferErrMsg[0]);	case AT91C_BUFFER_UNDERRUN: return (SBufferErrMsg[1]);	case AT91C_BUFFER_OVERFLOW: return (SBufferErrMsg[2]);	default:                    return (SBufferErrMsg[3]);	}}//*----------------------------------------------------------------------------//* Function Name       : AT91F_SbIsWrEmpty()//* Object              : Check that the message has been written//* Input Parameters    ://* Output Parameters   ://*----------------------------------------------------------------------------char AT91F_SbIsWrEmpty(	AT91PS_Buffer pBuffer){	AT91PS_SBuffer pSBuffer = (AT91PS_SBuffer)(pBuffer->pPrivateData);	#ifdef DBG_DRV_BUFFER		assert(pSBuffer);	#endif	return ( !(pSBuffer->szWrBuffer > 0) );}//*----------------------------------------------------------------------------//* Function Name       : AT91F_SbIsRdFull()//* Object              : Check that the message has been read//* Input Parameters    ://* Output Parameters   ://*----------------------------------------------------------------------------char AT91F_SbIsRdFull(	AT91PS_Buffer pBuffer){	AT91PS_SBuffer pSBuffer = (AT91PS_SBuffer)(pBuffer->pPrivateData);	#ifdef DBG_DRV_BUFFER		assert(pSBuffer);	#endif	return ( !(pSBuffer->szRdBuffer > 0) );}#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久久久免费看 | 天天综合色天天| 国产人成亚洲第一网站在线播放| 91麻豆精品国产91久久久久久 | 玖玖九九国产精品| 日韩精品电影在线观看| 免费一区二区视频| 免费久久精品视频| 国产一区中文字幕| 国产成人精品网址| 99久久综合国产精品| 成人国产精品免费观看动漫| 99久久婷婷国产精品综合| 不卡的电影网站| 欧美自拍偷拍午夜视频| 91麻豆精品91久久久久同性| 日韩欧美国产系列| 欧美经典一区二区| 亚洲免费电影在线| 麻豆一区二区三| 成人激情开心网| 欧美日韩国产bt| 久久精品人人做人人爽人人| 亚洲女女做受ⅹxx高潮| 日韩高清不卡在线| 国产成人av电影在线| 91免费观看在线| 日韩欧美在线123| 国产精品每日更新| 日韩高清国产一区在线| 成人av网址在线观看| 欧美老女人在线| 国产欧美精品一区二区色综合朱莉| 亚洲精品国产高清久久伦理二区| 手机精品视频在线观看| 国产91露脸合集magnet| 欧美亚一区二区| 欧美激情在线观看视频免费| 亚洲成人午夜电影| 成人免费精品视频| 欧美一区二区三区视频在线观看 | 日韩精品一区二区三区视频| 成人欧美一区二区三区黑人麻豆| 日欧美一区二区| 91视频91自| 久久久精品黄色| 日韩成人一级片| 一本大道综合伊人精品热热| 久久九九99视频| 日韩精品每日更新| 91福利国产精品| 国产精品嫩草影院av蜜臀| 免费一级欧美片在线观看| 色婷婷av一区二区三区软件| 国产肉丝袜一区二区| 免费在线成人网| 在线电影院国产精品| 亚洲一区二区综合| 成人av手机在线观看| 久久久午夜电影| 日本视频免费一区| 欧美巨大另类极品videosbest| 亚洲日穴在线视频| 成人精品一区二区三区中文字幕 | 成人av在线资源| 国产日韩一级二级三级| 国产一区二区女| 精品国产乱码久久久久久久 | 欧美三级日韩三级| 一二三区精品福利视频| 成人丝袜视频网| 国产精品日韩精品欧美在线| 国产精品正在播放| 久久久久久免费网| 国产99精品国产| 国产精品国产三级国产普通话三级| 高清国产一区二区三区| 国产人成一区二区三区影院| 粉嫩绯色av一区二区在线观看| 久久精品网站免费观看| 成人福利在线看| 亚洲免费观看高清完整版在线| 91久久精品网| 性感美女极品91精品| 4hu四虎永久在线影院成人| 日韩av中文字幕一区二区| 91精品中文字幕一区二区三区| 婷婷中文字幕综合| 久久综合九色欧美综合狠狠| 国产乱码精品一区二区三区五月婷| 久久综合久久鬼色中文字| 成人黄色小视频| 亚洲乱码日产精品bd| 欧美片在线播放| 精品一二三四区| 国产精品久久久久久妇女6080| 91丝袜国产在线播放| 视频一区二区三区在线| 久久久精品黄色| 一本久道中文字幕精品亚洲嫩| 视频一区在线播放| 久久蜜桃一区二区| 色综合天天综合| 美女网站色91| 中文字幕五月欧美| 91精品国产综合久久久久| 国产电影一区在线| 一区二区三区四区中文字幕| 欧美一区二区三区日韩视频| 波多野结衣亚洲| 日韩国产高清在线| 亚洲视频图片小说| 精品国产一区二区三区久久影院| 不卡一卡二卡三乱码免费网站| 丝袜亚洲另类欧美| 中文字幕精品一区二区三区精品| 欧美视频一二三区| 成人午夜又粗又硬又大| 日韩电影在线免费| 亚洲日本乱码在线观看| 欧美一二三区在线| 色94色欧美sute亚洲线路一ni | 国产精品久久午夜| 717成人午夜免费福利电影| www.欧美日韩| 国产综合色精品一区二区三区| 亚洲午夜一二三区视频| 中国色在线观看另类| 精品福利av导航| 欧美精品久久99| 91福利国产成人精品照片| 国产精品一品二品| 免费成人你懂的| 天天操天天色综合| 一区二区三区中文字幕| 国产精品国产三级国产普通话蜜臀 | 久久婷婷国产综合精品青草| 欧美日本精品一区二区三区| 91一区一区三区| 国产白丝精品91爽爽久久| 久久精品久久综合| 奇米888四色在线精品| 亚洲最大色网站| 亚洲欧美日韩精品久久久久| 亚洲国产精品激情在线观看| 2014亚洲片线观看视频免费| 欧美v日韩v国产v| 日韩欧美一区二区三区在线| 91精品一区二区三区久久久久久| 欧美日韩日日夜夜| 欧美日韩一级二级| 欧美日精品一区视频| 欧美性大战久久久久久久蜜臀| 色综合久久九月婷婷色综合| 99久久精品免费看国产| 99久久免费精品| 91在线观看污| 色av成人天堂桃色av| 在线观看一区二区精品视频| 欧美三级视频在线播放| 欧美麻豆精品久久久久久| 91精品国产一区二区三区| 日韩一区二区在线观看视频播放| 91麻豆精品91久久久久久清纯 | 91免费国产视频网站| 在线观看网站黄不卡| 欧美日韩你懂得| 日韩视频永久免费| 国产亚洲欧美色| 最新国产精品久久精品| 亚洲一区二区三区不卡国产欧美| 天堂av在线一区| 国产一区二区在线观看视频| 成人免费高清视频在线观看| 色婷婷综合激情| 欧美一级理论片| 国产精品久久久久久户外露出| 亚洲精品日韩一| 奇米影视一区二区三区| 国产精品亚洲一区二区三区妖精| 99国产精品久久| 欧美精品777| 国产精品久久看| 午夜精品久久久久久久99樱桃| 国产一区二区三区香蕉| 99国产精品久久久久久久久久久 | 国内一区二区在线| 99久久精品国产精品久久| 欧美美女网站色| 欧美激情资源网| 午夜精品久久久久久| 国产成人亚洲精品青草天美| 91福利在线免费观看| 国产亚洲1区2区3区| 五月激情综合色| 成人动漫精品一区二区| 日韩欧美中文字幕制服| 亚洲激情综合网| 国产精品亚洲а∨天堂免在线| 欧美喷潮久久久xxxxx|