亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲制服丝袜一区| 国产无遮挡一区二区三区毛片日本| 国产精品一区二区久久不卡| 天天色 色综合| 亚洲第一在线综合网站| 亚洲一区二区三区影院| 亚洲欧美视频在线观看视频| 亚洲色图制服丝袜| 亚洲成人一区二区在线观看| 日本不卡视频在线观看| 久久成人免费网站| 精品一区二区三区不卡| 国产精品99精品久久免费| 成人av资源站| 色94色欧美sute亚洲13| 91传媒视频在线播放| 欧美视频一区二区三区在线观看| 欧美男男青年gay1069videost | 国产福利一区二区三区视频在线| 国产在线一区二区| 成人性生交大片免费看中文| 91天堂素人约啪| 欧美久久久久中文字幕| 精品久久久久一区| 亚洲天堂中文字幕| 天天综合色天天综合| 国产精品一二三| 91色乱码一区二区三区| 欧美高清性hdvideosex| 精品国产乱码久久久久久免费 | 国产精品77777| 91影院在线观看| 欧美久久久久久久久| 久久久久国产免费免费| 尤物在线观看一区| 国产一区二区中文字幕| 日本韩国精品一区二区在线观看| 欧美一区二区三区免费观看视频| 国产午夜精品久久| 亚洲h动漫在线| 国产suv精品一区二区6| 欧美精品高清视频| 中文字幕高清不卡| 日韩二区三区四区| 91视频在线观看| 日韩欧美一级二级三级久久久| 中文字幕成人av| 喷水一区二区三区| 日本精品一区二区三区四区的功能| 精品国产一区二区三区四区四| 亚洲美女精品一区| 成人性生交大片免费看视频在线| 69久久夜色精品国产69蝌蚪网| 国产精品美女一区二区三区| 毛片av一区二区| 欧美特级限制片免费在线观看| 国产日韩欧美亚洲| 精品一区二区三区免费视频| 欧美日韩一区成人| 亚洲男人都懂的| av在线播放一区二区三区| 久久久久久久久久久久久女国产乱| 亚洲第一成人在线| 欧美日韩美少妇| 一区二区三区视频在线看| 成人v精品蜜桃久久一区| 久久久精品国产免大香伊| 蜜桃视频免费观看一区| 51久久夜色精品国产麻豆| 洋洋成人永久网站入口| 97se亚洲国产综合自在线观| 中文字幕一区二区三区av| 高潮精品一区videoshd| 久久久高清一区二区三区| 国产美女精品人人做人人爽 | 亚洲男女毛片无遮挡| 成人一二三区视频| 中文字幕日韩精品一区| 成人黄色小视频在线观看| 国产精品初高中害羞小美女文| k8久久久一区二区三区| 中文字幕亚洲在| 91在线丨porny丨国产| 国产精品卡一卡二卡三| 99久久精品免费| 亚洲色大成网站www久久九九| 一本色道综合亚洲| 五月天欧美精品| 精品日韩一区二区三区免费视频| 极品美女销魂一区二区三区| 国产精品亚洲成人| 国产精品影视网| 亚洲色图视频免费播放| 日本大胆欧美人术艺术动态| 视频一区二区欧美| 欧美亚洲综合在线| 国产欧美日韩三级| 欧美巨大另类极品videosbest| 国产成人在线影院| 国产一区激情在线| 免费成人在线播放| 免费在线看成人av| 午夜精品在线看| 亚洲午夜免费福利视频| 亚洲免费高清视频在线| 国产精品色哟哟| 国产欧美日韩精品在线| 日本一区二区免费在线观看视频 | 婷婷成人激情在线网| 一区二区三区蜜桃| 亚洲三级免费观看| 亚洲视频在线一区| 亚洲精品免费在线观看| 中文字幕在线不卡国产视频| 国产精品毛片a∨一区二区三区| 久久久久久99精品| 欧美激情中文不卡| 国产精品天干天干在观线| 国产精品美女久久久久久久久久久 | 久久久精品tv| 国产精品丝袜久久久久久app| 中文字幕国产一区| 亚洲精品国产第一综合99久久 | 国产成人无遮挡在线视频| 国产精品一区二区久久不卡| 丁香五精品蜜臀久久久久99网站 | 亚洲精选视频在线| 一区二区三区在线视频免费 | 国产精品狼人久久影院观看方式| 欧美高清在线视频| 亚洲日本一区二区| 香蕉影视欧美成人| 免费精品视频在线| 韩日欧美一区二区三区| 成人激情视频网站| 91视频你懂的| 91精品国产91久久久久久一区二区 | 久久久久亚洲综合| 中文字幕 久热精品 视频在线 | 亚洲欧洲性图库| 亚洲国产成人精品视频| 裸体歌舞表演一区二区| 成人精品小蝌蚪| 欧美影院午夜播放| 亚洲精品在线一区二区| 亚洲日本在线看| 麻豆久久久久久久| 色综合久久综合网97色综合| 日韩精品在线看片z| 国产精品久久久久婷婷二区次| 亚洲综合色区另类av| 久久精品国产99国产精品| a级高清视频欧美日韩| 3d成人动漫网站| 国产精品动漫网站| 青青草97国产精品免费观看| 91免费在线看| 精品日韩一区二区三区| 亚洲综合久久av| 国产成人精品免费| 日韩一区二区在线观看| 一区免费观看视频| 国产一区二区三区视频在线播放| 91豆麻精品91久久久久久| 国产日产亚洲精品系列| 日韩黄色一级片| 一本色道久久综合亚洲精品按摩| 久久亚洲综合色一区二区三区| 亚洲国产视频在线| www.视频一区| 久久久久亚洲蜜桃| 蜜臀久久久99精品久久久久久| 91蜜桃传媒精品久久久一区二区 | 欧美一级日韩一级| 亚洲黄色av一区| 成人黄色国产精品网站大全在线免费观看| 欧美日韩一区二区在线观看视频| 国产精品污网站| 国产精品一区不卡| 久久综合资源网| 免费成人在线播放| 7777精品伊人久久久大香线蕉最新版| 亚洲免费av在线| 成人激情开心网| 国产三级欧美三级| 狂野欧美性猛交blacked| 欧美精品三级日韩久久| 亚洲黄色片在线观看| 91传媒视频在线播放| 一区二区三区四区中文字幕| aaa欧美大片| 亚洲天堂精品在线观看| 成人av网址在线| 国产精品情趣视频| aaa亚洲精品一二三区| 亚洲女同ⅹxx女同tv| 日本道精品一区二区三区| 亚洲在线观看免费| 欧美视频在线观看一区二区| 亚洲.国产.中文慕字在线|