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

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

?? chap_9.c

?? 周立功的 usb設備端驅動程序,適用于D12/1161 的DC,自己的高質量源碼不多,有些也不是很通用,希望這個源碼能為貴網添磚加瓦,我懷著虔誠的心想加入這個大集體!
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			Chap_9.c
** Last modified Date:	2004-12-10
** Last Version:		V1.0
** Descriptions:		USB驅動程序軟件包: ISP1181B(D13) 設備端驅動程序 協議層
**						Soft Packet of USB Driver: the Driver of Device of ISP1181B(D13) 
**												   Protocol layer
**------------------------------------------------------------------------------------------------------
** Created by:			
** Created date:		
** Version:				
** Descriptions:		
**
**------------------------------------------------------------------------------------------------------
** Modified by:			Ming Yuan Zheng
** Modified date:		2004-12-10
** Version:				V1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by: 
** Modified date:
** Version:	
** Descriptions: 
**
********************************************************************************************************/

#include "config.h"
#include "D13Config.h"
#include "D13CI.h"
#include "Chap_9.h"
#include "Descriptor.h"

//定義控制傳輸結構變量	define structure variable of control transfer
CONTROL_XFER ControlData;

//定義USB事件標志變量	define the flag varialbe of USB events
EPPFLAGS bEPPflags;

extern OS_EVENT *pSetup_Event;

//***********************************************************************************************
//USB標準設備請求入口地址指針表		the address pointer table of the normal device request of USB
//***********************************************************************************************
void (*StandardDeviceRequest[])(void) =
{
	get_status,
	clear_feature,
	reserved,
	set_feature,
	reserved,
	set_address,
	get_descriptor,
	reserved,
	get_configuration,
	set_configuration,
	get_interface,
	set_interface,
	reserved,
	reserved,
	reserved,
	reserved
};

   //*************************************************************************
   // USB 協議層函數				the protocol function of USB
   //*************************************************************************
   
/*************************************************************************************************************************
** 函數名稱: stall_ep0()						Name:		stall_ep0()
** 功能描述: 使控制端點處于停止狀態		 		Function:	stall control endpoints ep0
** 輸	 入: 無									Input:		NULL
** 輸	 出: 無									Output:		NULL
*************************************************************************************************************************/
void stall_ep0(void)
{
	D13_SetEndpointStatus(EPINDEX4EP0_CONTROL_OUT,D13REG_EPSTS_STALL);	//停止控制端點OUT stall control OUT
	D13_SetEndpointStatus(EPINDEX4EP0_CONTROL_IN,D13REG_EPSTS_STALL);	//停止控制端點IN  stall control IN
}
   
/************************************************************************************************************************
** 函數名稱: reserved()							Name:		reserved()
** 功能描述: 保留子程序							Function:	reserved rountine
** 輸	 入: 無									Input:		NULL
** 輸	 出: 無									Output:		NULL
*************************************************************************************************************************/   
void reserved(void)
{
	stall_ep0();								//禁止端點0		stall endpoint 0		
}


/************************************************************************************************************************
** 函數名稱: init_unconfig()					Name:		init_unconfig()
** 功能描述: 對ISP1181B無作用					Function:	it is not effective for ISP1181B
** 輸	 入: 無									Input:		NULL
** 輸	 出: 無									Output:		NULL
*************************************************************************************************************************/
void init_unconfig(void)
{
	
}

/************************************************************************************************************************
** 函數名稱: init_config()						Name:		init_config()
** 功能描述: 對ISP1181B無作用					Function:	it is not effective for ISP1181B
** 輸	 入: 無									Input:		NULL
** 輸	 出: 無									Output:		NULL
*************************************************************************************************************************/
void init_config(void)
{
	
}


/************************************************************************************************************************
** 函數名稱: single_transmit()					Name:		single_transmit()	
** 功能描述: 通過IN端點發送數據(DATA 類型)		Function:	send data(type DATA) via CONTROL_IN
** 輸	 入: INT8U * buf:	發送數據指針		Input:		INT8U * buf: send buffer
			 INT8U len:		發送數據長度					INT8U len:	send length
** 輸	 出: 無									Output:		NULL
*************************************************************************************************************************/
void single_transmit(INT8U * buf, INT8U len)
{
	if( len <= EP0_PACKET_SIZE) {				//通過控制輸入端點發送數據
		D13_WriteEndpoint(1, len, buf);			//send data via CONTROL_IN
	}										
}

/***********************************************************************************************************************
** 函數名稱: code_transmit()					Name:		code_transmit()
** 功能描述: 通過OUT端點發送數據(CODE類型)		Function:	send data(type CODE) via CONTROL_IN
** 輸	 入: INT8U *pRomData:	發送數據指針	Input:		INT8U *pRomData: send buffer
			 INT8U len:	   發送數據長度						INT8U len:	send length
** 輸	 出: 無									Output:		NULL
************************************************************************************************************************/
void code_transmit(INT8U * pRomData, INT16U len)
{
	ControlData.wCount = 0;
	if(ControlData.wLength > len)
		ControlData.wLength = len;									//傳輸數據總字節數不得超過len
																	//the number of bytes that will be sent is not 
																	//beyond len 
	ControlData.pData = pRomData;									
	if( ControlData.wLength >= EP0_PACKET_SIZE) {					//發送端點0最大信息包大小個字節
		D13_WriteEndpoint(1, EP0_PACKET_SIZE, ControlData.pData);	//transmit the number of bytes of EP0_PACKET_SIZE
		ControlData.wCount += EP0_PACKET_SIZE;						
		bEPPflags.bits.control_state = USB_TRANSMIT;				//標志數據發送狀態			
																	//mark the status that data be transmitted
	}
	else {
		D13_WriteEndpoint(1, ControlData.wLength, pRomData);		//發送需要傳輸的字節數
		ControlData.wCount += ControlData.wLength;					//transmit the numbers of bytes of ControlData.wLength
		bEPPflags.bits.control_state = USB_IDLE;					//標志空閑狀態
																	//mark the idle status
	}
}

   //*******************************************************************************
   // USB 標準設備請求服務程序			the normal device request program of USB
   //*******************************************************************************

/*************************************************************************************************************************
** 函數名稱: get_status()						Name:		get_status()		
** 功能描述: 主機要求獲取狀態,設備返回16位		Function:	the host request the status,the device return
			 的狀態描述給主機								the status descriptor to host
** 輸	 入: 無									Input:		NULL
** 輸	 出: 無									Output:		NULL
*************************************************************************************************************************/
void get_status(void)
{
	INT8 endp;
	INT8U txdat[2], c;
	INT8U bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;	
																	 //取得設備請求類型		  get the request type of device
	if (bRecipient == USB_RECIPIENT_DEVICE) {						 //對設備請求			  request of deviece
		if(bEPPflags.bits.remote_wakeup == 1)				
			txdat[0] = 3;											 //支持遠程喚醒和自供電   support remove wakeup and power itself
		else
			txdat[0] = 1;											 //不支持遠程喚醒和自供電 not support remove wakeup and power itself
		txdat[1]=0;													 //高8位為0               the upper byte is zero
		single_transmit(txdat, 2);									 //發送16位的狀態到主機   transmit 16-bit to USB host
		
	} else if (bRecipient == USB_RECIPIENT_INTERFACE) {				 //對接口請求			  request of interface
		txdat[0]=0;
		txdat[1]=0;
		single_transmit(txdat, 2);
																	
	} else if (bRecipient == USB_RECIPIENT_ENDPOINT) {				 //對端點請求			  request of endpoint
		endp = (INT8U)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
		if ((ControlData.DeviceRequest.wIndex & (INT8U)USB_ENDPOINT_DIRECTION_MASK) == 0){
			if (endp == 0)											 
			    endp = -1;											 //被請求的端點為控制OUT  the requested endpoint is control OUT
		}
		
		c = D13_GetEndpointStatusWOInteruptClear(endp + 1);		     //讀取輸出端點狀態       read the status of output endpoint
		if(c & D13REG_EPSTS_STALL)
			txdat[0] = 1;											 //端點禁止				  disable endpoint
		else
			txdat[0] = 0;											 //端點有效				  enable endpoint
		txdat[1] = 0; 
		single_transmit(txdat, 2);

	} else
		stall_ep0();					    //非標準請求,發STALL		the unknown request,transmit stall
}


/***********************************************************************************************************************
** 函數名稱: clear_feature()				Name:		clear_feature()
** 功能描述: 清除特性						Function:	clear feature
** 輸	 入: 無								Input:		NULL
** 輸	 出: 無								Output:		NULL
************************************************************************************************************************/
void clear_feature(void)
{
	INT8 endp;
	INT8U bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;
															//讀取請求類型		get the request type
	if (bRecipient == USB_RECIPIENT_DEVICE					//對設備請求		the request of device
		&& ControlData.DeviceRequest.wValue == USB_FEATURE_REMOTE_WAKEUP) {
		bEPPflags.bits.remote_wakeup = 0;					//清0遠程喚醒標志	clear the flag of remove wakeup
		single_transmit(0, 0);								//發回一個空的數據表示執行完畢
	}														//indicate that transmit end by transmitting a empty packet 
	
	else if (bRecipient == USB_RECIPIENT_ENDPOINT			//對端點請求		the request of enpoint		
		&& ControlData.DeviceRequest.wValue == USB_FEATURE_ENDPOINT_STALL) {
		//清除端點禁止特性,恢復其使用
		endp = (INT8U)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
		if ((ControlData.DeviceRequest.wIndex & (INT8U)USB_ENDPOINT_DIRECTION_MASK) == 0){
			if (endp == 0)									
			    endp = -1;									//被請求的端點為控制OUT the requested endpoint is control OUT
		}
		
		D13_SetEndpointStatus(endp + 1, 0);					//解禁端點				unstall OUT endpoint
		single_transmit(0, 0);								//發回一個空的數據表示執行完畢	
	} else													//indicate that transmit end by transmitting a empty packet
		stall_ep0();				//非標準請求,發STALL		
									//the unknown request,transmit stall							
}


/**********************************************************************************************************************
** 函數名稱: set_feature()					Name:		set_feature()
** 功能描述: 設置特性						Function:	set feature
** 輸	 入: 無								Input:		NULL
** 輸	 出: 無								Output:		NULL
***********************************************************************************************************************/
void set_feature(void)
{
	INT8 endp;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
eeuss鲁片一区二区三区在线观看| 在线播放国产精品二区一二区四区| 99综合影院在线| 51午夜精品国产| 国产精品丝袜一区| 久久国产婷婷国产香蕉| 欧洲av在线精品| 中文字幕国产精品一区二区| 亚洲国产精品久久久男人的天堂| 国产精品一色哟哟哟| 91麻豆精品国产91| 一区二区视频免费在线观看| 成人综合在线网站| 欧美xxxxxxxx| 久久国产三级精品| 日韩久久精品一区| 日韩在线一区二区三区| 色琪琪一区二区三区亚洲区| 中文字幕一区二区三区不卡| 国产99久久久国产精品免费看| 欧美一级在线免费| 首页欧美精品中文字幕| 欧洲日韩一区二区三区| 有码一区二区三区| 色婷婷精品大在线视频| 国产精品免费观看视频| 成人美女在线视频| 成人免费小视频| 9l国产精品久久久久麻豆| 国产精品久久久久aaaa| 成人午夜视频在线观看| 国产日产欧美一区二区三区| 国产福利一区二区三区视频在线 | 成人一区二区视频| 国产色综合久久| 国产美女精品在线| 国产免费久久精品| 99国产精品久久久久久久久久久| 日本一区二区在线不卡| 91亚洲资源网| 亚洲夂夂婷婷色拍ww47| 在线不卡的av| 看电视剧不卡顿的网站| 日韩视频一区二区| 国产一区二区0| 中文字幕在线观看不卡视频| 99国产精品久久久久久久久久久| 亚洲欧美日韩国产成人精品影院 | xnxx国产精品| 成人在线综合网站| 一区二区三区四区乱视频| 欧美喷潮久久久xxxxx| 九色porny丨国产精品| 国产三级精品视频| 在线精品观看国产| 久久av资源网| 亚洲欧美偷拍三级| 91精品国产免费| 国产乱对白刺激视频不卡| 国产精品美女一区二区三区| 91亚洲精品乱码久久久久久蜜桃| 亚洲一区二区三区在线播放| 日韩一级片网址| av网站一区二区三区| 亚洲国产精品久久不卡毛片| 在线观看91精品国产麻豆| 国产九九视频一区二区三区| 亚洲精品成人悠悠色影视| 欧美一区二区三区四区高清| 成人午夜精品在线| 日韩高清不卡在线| 中文乱码免费一区二区| 欧美电影在哪看比较好| 波波电影院一区二区三区| 偷拍一区二区三区四区| 国产欧美精品一区二区色综合| 在线免费亚洲电影| 国产suv一区二区三区88区| 日韩高清不卡在线| 亚洲激情自拍偷拍| 国产亚洲综合在线| 欧美高清视频不卡网| 97精品超碰一区二区三区| 国内偷窥港台综合视频在线播放| 亚洲激情图片一区| 国产精品久久久久毛片软件| 欧美一区二区三区日韩视频| 一本一道久久a久久精品| 国产在线视频精品一区| 首页国产丝袜综合| 亚洲精品久久久蜜桃| 日本一区二区动态图| 日韩三级精品电影久久久 | av高清不卡在线| 国产在线播放一区二区三区 | 国产精品午夜久久| 日韩欧美国产小视频| 欧美日韩久久一区二区| 色婷婷精品久久二区二区蜜臂av | 国产中文字幕精品| 麻豆精品久久精品色综合| 亚洲风情在线资源站| 亚洲一区二区视频在线观看| 亚洲视频综合在线| 国产精品美女久久久久久| 国产亚洲欧洲997久久综合| 91精品国产一区二区人妖| 欧美日韩国产色站一区二区三区| 色94色欧美sute亚洲线路一ni| k8久久久一区二区三区| 成人黄色国产精品网站大全在线免费观看| 久久91精品国产91久久小草| 日韩精品成人一区二区在线| 亚洲v日本v欧美v久久精品| 亚洲一区二区不卡免费| 亚洲综合小说图片| 亚洲国产综合视频在线观看| 性感美女久久精品| 日日骚欧美日韩| 日本aⅴ免费视频一区二区三区| 视频一区中文字幕| 久久精品国产一区二区三区免费看| 全国精品久久少妇| 极品少妇xxxx偷拍精品少妇| 国产一区二区主播在线| 国产精品自在在线| 成人的网站免费观看| 91丝袜美腿高跟国产极品老师| 99久久精品国产网站| 在线亚洲高清视频| 日韩一区二区中文字幕| 欧美激情综合五月色丁香| 国产精品天干天干在线综合| 亚洲精品自拍动漫在线| 亚洲成人精品影院| 精品一区二区三区视频| 成人精品电影在线观看| 精品视频在线免费| 日韩欧美国产综合一区| 国产精品久久久久久福利一牛影视| 一区二区高清视频在线观看| 青青草国产精品亚洲专区无| 国产精品一二三四区| 欧美在线视频不卡| 久久这里只有精品视频网| 亚洲精品中文在线影院| 老司机午夜精品| 91女神在线视频| 日韩免费视频一区二区| 日韩一区日韩二区| 美国三级日本三级久久99 | **性色生活片久久毛片| 天堂久久一区二区三区| 国产精品456| 欧洲亚洲国产日韩| 国产性做久久久久久| 视频在线在亚洲| aaa亚洲精品| 日韩欧美一级片| 一区二区欧美精品| 成人一区二区三区视频在线观看| 欧美猛男gaygay网站| 国产精品毛片久久久久久久| 另类小说图片综合网| 色诱视频网站一区| 国产精品天美传媒沈樵| 精品亚洲成a人在线观看| 欧美天堂亚洲电影院在线播放| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲电影一区二区| 99re8在线精品视频免费播放| 精品理论电影在线| 日韩高清在线不卡| 欧美日韩在线播放一区| 亚洲免费毛片网站| 国产成人福利片| 久久影院视频免费| 精品夜夜嗨av一区二区三区| 欧美日韩国产一级片| 亚洲综合久久久久| 99热99精品| 欧美国产日本视频| 国产aⅴ精品一区二区三区色成熟| 538在线一区二区精品国产| 亚洲一区二区免费视频| 欧洲在线/亚洲| 一区2区3区在线看| 91黄视频在线| 亚洲精品免费在线播放| 99国产精品视频免费观看| 中文字幕欧美激情| 成人免费视频视频| 国产精品高潮呻吟| 99re成人精品视频| 亚洲男人的天堂一区二区 | 成人激情小说乱人伦| 国产精品素人一区二区| 丁香婷婷综合网| 亚洲欧美自拍偷拍色图| 91在线精品秘密一区二区|