亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产在线不卡一区| 日韩精品中文字幕在线一区| 高清不卡一区二区| 日韩精品一区在线| 三级精品在线观看| 欧美一级夜夜爽| 日韩vs国产vs欧美| 精品国产乱码久久久久久蜜臀| 美女精品自拍一二三四| 欧美v日韩v国产v| 懂色av一区二区三区免费看| 136国产福利精品导航| 一本色道久久综合亚洲精品按摩| 亚洲一区二区精品3399| 欧美一区二区三区视频在线| 久久99国内精品| 亚洲欧洲99久久| 欧美日韩精品欧美日韩精品一 | 六月丁香婷婷久久| 国产午夜精品在线观看| 99精品在线观看视频| 午夜精品久久久久久| 精品成人一区二区三区| 不卡视频一二三四| 日韩专区中文字幕一区二区| 久久蜜桃av一区二区天堂| 色综合久久综合中文综合网| 日日夜夜精品视频天天综合网| 国产亚洲一二三区| 欧美性做爰猛烈叫床潮| 国产一区欧美一区| 午夜欧美在线一二页| 国产亚洲成年网址在线观看| 精品视频色一区| 高清成人在线观看| 奇米一区二区三区av| 亚洲视频一区二区在线| 欧美大肚乱孕交hd孕妇| 色天天综合色天天久久| 黄页网站大全一区二区| 一区二区三区不卡在线观看| 精品国精品国产尤物美女| 欧美伊人久久久久久午夜久久久久| 国产精品一区二区在线播放| 三级一区在线视频先锋| 国产精品久99| 国产亚洲精品久| 欧美成人性战久久| 欧美狂野另类xxxxoooo| 麻豆精品国产传媒mv男同| 日韩电影一区二区三区四区| 椎名由奈av一区二区三区| 久久综合九色综合欧美就去吻| 日本韩国欧美国产| 成人免费高清视频| 狠狠色丁香久久婷婷综合丁香| 午夜精品爽啪视频| 一个色在线综合| 亚洲欧洲成人自拍| 国产日韩欧美综合在线| 337p日本欧洲亚洲大胆色噜噜| 欧美日韩国产高清一区二区| 91女厕偷拍女厕偷拍高清| 国产99久久久精品| 国产一区二区三区久久久| 蜜桃视频一区二区三区| 亚洲国产精品精华液网站| 亚洲精品日韩综合观看成人91| 国产精品久久久久久久浪潮网站| 久久久美女毛片 | 欧美一级日韩免费不卡| 精品视频一区三区九区| 欧美最猛黑人xxxxx猛交| 色综合天天综合狠狠| 成人av免费在线播放| 成人动漫av在线| 丰满亚洲少妇av| www.亚洲在线| 99国内精品久久| 色综合天天综合在线视频| 91在线国产福利| 91丨porny丨国产| 色婷婷国产精品| 91国偷自产一区二区开放时间 | 成人精品一区二区三区中文字幕 | 视频一区二区三区中文字幕| 亚洲成人免费在线| 日韩精品午夜视频| 麻豆国产欧美一区二区三区| 国产一区二区三区久久悠悠色av| 国产精品 欧美精品| 成人高清视频免费观看| 91麻豆精品视频| 欧美日韩一区二区三区四区| 欧美福利视频一区| 日韩女同互慰一区二区| 久久久99精品免费观看| 国产精品美女久久久久av爽李琼| 日韩一区有码在线| 性久久久久久久久久久久| 奇米色一区二区三区四区| 国内成人自拍视频| 97se亚洲国产综合在线| 欧美性生活影院| 日韩一区二区免费在线电影| 欧美国产禁国产网站cc| 亚洲人成在线观看一区二区| 亚洲影院久久精品| 国内精品国产成人国产三级粉色| gogogo免费视频观看亚洲一| 欧美午夜精品免费| 国产白丝网站精品污在线入口| 五月天激情综合网| 精品无人码麻豆乱码1区2区| 福利电影一区二区| 欧美挠脚心视频网站| www国产成人免费观看视频 深夜成人网| 久久网站最新地址| 一卡二卡三卡日韩欧美| 久久精品久久综合| 色噜噜狠狠成人网p站| 欧美一区二区三区免费| 国产精品亲子乱子伦xxxx裸| 亚洲国产sm捆绑调教视频| 国产精品影视在线| 欧美三级中文字| 国产精品久久久久桃色tv| 天天综合网天天综合色| 北条麻妃一区二区三区| 91精品国产综合久久香蕉的特点| 亚洲欧洲精品一区二区精品久久久 | 99国产精品久久| 日韩欧美国产综合| 亚洲一区在线免费观看| 国产成人av自拍| 日韩一区二区三免费高清| 亚洲精品成人少妇| 国产成人免费视频 | 久久这里只精品最新地址| 一区av在线播放| 成人av网站免费观看| 久久精品夜色噜噜亚洲aⅴ| 天天综合网 天天综合色| 99re热视频这里只精品| 国产欧美日韩在线看| 男男成人高潮片免费网站| 在线看日韩精品电影| 国产精品视频你懂的| 精品一区二区三区久久| 欧美理论在线播放| 一区二区在线观看视频| 97国产精品videossex| 欧美极品少妇xxxxⅹ高跟鞋| 美女视频黄 久久| 日韩三级在线免费观看| 亚洲国产成人91porn| 在线观看亚洲a| 亚洲女同一区二区| 波多野结衣91| 中文字幕一区二区不卡| 高清av一区二区| 日本一区二区三级电影在线观看 | 成人精品国产一区二区4080| 久久精品日韩一区二区三区| 欧美日韩视频在线第一区| 国产精品久久久久影院老司| 成人毛片视频在线观看| 国产欧美日韩中文久久| 国产成人精品www牛牛影视| 国产人妖乱国产精品人妖| 国产一区二区日韩精品| 久久婷婷色综合| 国产成人超碰人人澡人人澡| 中文字幕精品一区二区精品绿巨人| 丁香激情综合五月| 国产精品乱子久久久久| 91在线一区二区三区| 亚洲猫色日本管| 欧美日韩在线播| 日本人妖一区二区| 日韩三级中文字幕| 国产成人免费视频网站 | 国产精品免费久久| 91丨九色丨国产丨porny| 亚洲欧美日韩久久| 欧美日韩一区二区三区高清| 日本中文一区二区三区| 日韩欧美一区二区免费| 久久精品国产精品亚洲精品| 中文字幕av在线一区二区三区| 91在线无精精品入口| 视频一区二区不卡| 亚洲精品一区二区三区精华液| www.亚洲在线| 午夜成人免费视频| 国产午夜精品一区二区三区四区| 91麻豆自制传媒国产之光| 免费观看日韩av| 国产拍揄自揄精品视频麻豆| 欧洲在线/亚洲|