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

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

?? chap_9.c

?? zlg開發套件ucos系統下讀寫e2prom源代碼
?? 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一区二区三区免费野_久草精品视频
国产精品蜜臀av| 国产精品家庭影院| 在线观看一区不卡| jlzzjlzz亚洲日本少妇| 处破女av一区二区| 91在线免费播放| 在线免费一区三区| 69堂精品视频| 精品伦理精品一区| 国产精品萝li| 亚洲综合视频在线| 日韩**一区毛片| 国产裸体歌舞团一区二区| 成人黄动漫网站免费app| 99久久精品免费看| 欧美日韩夫妻久久| 精品国产伦理网| 亚洲欧洲一区二区三区| 亚洲aaa精品| 国产精品一区二区三区网站| 不卡影院免费观看| 欧美日韩不卡一区| 国产亚洲欧洲997久久综合| 中文字幕在线不卡一区| 亚洲图片欧美综合| 国产一区高清在线| 欧美自拍偷拍一区| 久久综合成人精品亚洲另类欧美 | 国产偷v国产偷v亚洲高清| 中文字幕一区二区5566日韩| 午夜精品一区在线观看| 韩国精品一区二区| 欧美三区免费完整视频在线观看| 精品国内片67194| 亚洲免费在线看| 国产一区二区毛片| 制服丝袜中文字幕亚洲| 中文字幕一区二区三区视频| 日本美女视频一区二区| 色综合久久久久综合| 精品不卡在线视频| 亚洲午夜一二三区视频| www.亚洲人| 欧美精品一区二区三区在线| 亚洲综合在线免费观看| 成人少妇影院yyyy| 久久先锋影音av鲁色资源| 天堂一区二区在线免费观看| 不卡视频一二三四| 国产女同互慰高潮91漫画| 蜜芽一区二区三区| 欧美视频中文字幕| 一区二区三区成人在线视频| 成人avav在线| 中文字幕乱码亚洲精品一区| 国产又黄又大久久| 久久你懂得1024| 九色综合国产一区二区三区| 欧美一级在线免费| 日韩在线观看一区二区| 欧美视频中文字幕| 亚洲国产你懂的| 欧美色图免费看| 亚洲va国产天堂va久久en| 欧美在线免费观看亚洲| 亚洲精品一二三四区| 91丝袜美女网| 一区二区三区四区乱视频| 91久久线看在观草草青青| 亚洲美女区一区| 色婷婷亚洲婷婷| 亚洲国产精品一区二区久久| 在线观看三级视频欧美| 亚洲国产视频网站| 欧美区视频在线观看| 美女视频一区二区| 欧美精品一区二区三区一线天视频 | 成人av资源网站| 1000部国产精品成人观看| 91免费看视频| 亚洲第一在线综合网站| 69久久夜色精品国产69蝌蚪网| 日韩综合小视频| 精品黑人一区二区三区久久 | 亚洲天堂久久久久久久| 色天天综合久久久久综合片| 亚洲成人av免费| 精品国产髙清在线看国产毛片| 久久99精品国产.久久久久久 | 久久草av在线| 国产精品丝袜一区| 色婷婷av一区二区三区软件| 日韩国产高清在线| 国产欧美一区二区三区网站 | 一区二区免费在线| 8x福利精品第一导航| 国产老妇另类xxxxx| 1024成人网| 欧美一级二级三级蜜桃| 成人v精品蜜桃久久一区| 亚洲一区二区三区四区在线观看 | 日本一区二区在线不卡| 91片黄在线观看| 日韩av中文字幕一区二区三区| 久久综合资源网| 欧美综合欧美视频| 国产精品亚洲专一区二区三区| 《视频一区视频二区| 欧美tickle裸体挠脚心vk| 91亚洲精品久久久蜜桃网站| 青青青爽久久午夜综合久久午夜| 国产无遮挡一区二区三区毛片日本| 日本韩国一区二区三区视频| 精品系列免费在线观看| 亚洲自拍偷拍av| 中文字幕av一区二区三区| 4438x亚洲最大成人网| 波多野结衣在线一区| 日韩成人免费看| 亚洲欧美一区二区三区国产精品| 精品国产亚洲一区二区三区在线观看 | 国产做a爰片久久毛片| 亚洲福利视频导航| 亚洲免费大片在线观看| 精品美女在线播放| 欧美电影影音先锋| 97久久精品人人爽人人爽蜜臀| 蜜桃av一区二区在线观看| 亚洲一区二区欧美激情| 国产精品国产三级国产三级人妇| 日韩欧美资源站| 欧美男男青年gay1069videost | 久久久久久久久免费| 日韩一卡二卡三卡四卡| 久久久综合网站| 69堂国产成人免费视频| 欧美色网站导航| 91国内精品野花午夜精品| 99在线精品免费| 成人网在线免费视频| 高清av一区二区| 国产黄色精品网站| 国产成人免费视| 国产91在线观看丝袜| 国产一区 二区| 国产经典欧美精品| 成人永久免费视频| 国产99久久久国产精品免费看 | 伊人夜夜躁av伊人久久| 国产精品久99| 亚洲欧美一区二区视频| 亚洲免费在线视频一区 二区| 亚洲女爱视频在线| 亚洲国产中文字幕| 日韩成人一级片| 黄色资源网久久资源365| 国产激情精品久久久第一区二区 | 91碰在线视频| 欧美又粗又大又爽| 911精品国产一区二区在线| 日韩欧美激情在线| 精品国产欧美一区二区| 中文字幕成人在线观看| 亚洲精品美腿丝袜| 午夜国产精品一区| 国产一区亚洲一区| 91视频www| 777a∨成人精品桃花网| www国产成人| 成人欧美一区二区三区| 亚洲国产wwwccc36天堂| 久久精品国产免费| eeuss鲁片一区二区三区在线看| 91色婷婷久久久久合中文| 欧美午夜影院一区| 久久只精品国产| 亚洲激情中文1区| 捆绑紧缚一区二区三区视频| av色综合久久天堂av综合| 欧美日韩激情在线| 国产精品视频一二| 天天综合天天综合色| 国产91精品在线观看| 欧美日韩国产小视频在线观看| 久久亚洲欧美国产精品乐播 | 欧美裸体bbwbbwbbw| 国产亚洲自拍一区| 日韩高清在线电影| 成人h版在线观看| 这里只有精品电影| 国产精品电影院| 老鸭窝一区二区久久精品| 99麻豆久久久国产精品免费| 日韩欧美色电影| 亚洲欧美一区二区三区极速播放 | 亚洲免费在线看| 国产伦精品一区二区三区视频青涩| 色狠狠综合天天综合综合| 国产日韩一级二级三级| 免费一级片91|