⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usb_transaction_layer.c

📁 freescale atk source code
💻 C
📖 第 1 页 / 共 4 页
字号:
/*==================================================================================================                                                                                   Module Name:  usb_transaction_layer.c    General Description: This file contains the USB transaction Layer functionality .====================================================================================================Copyright 2008 Freescale Semiconductor, Inc. All Rights Reserved.This file contains copyrighted material. Use of this file isrestricted by the provisions of a Freescale Software LicenseAgreement, which has either been electronically accepted byyou or has been expressly executed between the parties.  Revision History:-------------------------   ------------    ----------   ------------------------------------------- Portability: Portable.====================================================================================================                                        INCLUDE FILES==================================================================================================*/#include "su_basictypes.h"#include <usb_common.h>#include <usb_transaction_layer.h>#include <usb_ipl_tl_extern.h>#include <usb_tl_al_extern.h>#include <usb_global.h>/*==================================================================================================                                     GLOBAL VARIABLES==================================================================================================*//*==================================================================================================                                     LOCAL CONSTANTS==================================================================================================*//*=================================================================================================                                 LOCAL FUNCTION PROTOTYPES==================================================================================================*/static void tl_handle_setup_phase(void);static void tl_handle_get_descriptor(void);static void tl_handle_set_addrs(void);static void tl_fill_buffer_ep0in(U8 type, U32 buffer_addrs);static void tl_handle_set_configuration(void);static void tl_handle_get_device_desc(void);static void tl_handle_get_device_qf_desc(void);static void tl_handle_get_config_desc(U8 descriptor);static void tl_handle_get_string_desc(void);static void tl_status_phase(U8 Direction);static void tl_handle_get_configuration(void);/*==================================================================================================                                      LOCAL VARIABLES==================================================================================================*//* USB Device Descriptor according to USB2.0 Specification */usb_device_desc_t g_usb_device_desc = {    USB_DEV_DESC_LEN,    USB_DEV_DESC_TYPE,                 USB_DEV_DESC_SPEC_LB,                  USB_DEV_DESC_SPEC_HB,            USB_DEV_DESC_DEV_CLASS,              USB_DEV_DESC_DEV_SUBCLASS,            USB_DEV_DESC_DEV_PROTOCOL,             USB_DEV_DESC_EP0_MAXPACKETSIZE,         USB_DEV_DESC_VENDORID_LB,                   USB_DEV_DESC_VENDORID_HB,                   USB_DEV_DESC_PRODUCTID_LB,                   USB_DEV_DESC_PRODUCTID_HB,                   USB_DEV_DESC_DEV_RELEASE_NUM_LB,              USB_DEV_DESC_DEV_RELEASE_NUM_HB,             USB_DEV_DESC_DEV_STRING_IND_MANUFACTURE,    USB_DEV_DESC_DEV_STRING_IND_PRODUCT,      USB_DEV_DESC_DEV_STRING_IND_SERIAL_NUM,    USB_DEV_DESC_DEV_NUM_CONFIGURATIONS};/* USB Device Qualifier Descriptor according to USB2.0 Specification */usb_device_qualifier_desc_t g_usb_device_qf_desc = {    USB_DEV_QUALIFIER_DESC_LEN,    USB_DEV_QUALIFIER_DESC_TYPE,    USB_DEV_DESC_SPEC_LB,                  USB_DEV_DESC_SPEC_HB,            USB_DEV_DESC_DEV_CLASS,              USB_DEV_DESC_DEV_SUBCLASS,            USB_DEV_DESC_DEV_PROTOCOL,             USB_DEV_DESC_EP0_MAXPACKETSIZE,         USB_DEV_DESC_NUM_OT_SPEED_CONF,    USB_DEV_DESC_RESERVED };/* USB Config Descriptor according to USB2.0 Specification *//* Full Speed Non Secure */usb_config_desc_t g_usb_config_desc_fs_ns = {    USB_DEV_CONFIG_DESC_LEN,       USB_DEV_CONFIG_DESC_TYPE,       USB_DEV_CONFIG_DESC_TTL_LEN_LB ,       USB_DEV_CONFIG_DESC_TTL_LEN_HB ,       USB_DEV_CONFIG_DESC_NUM_0F_INF,      USB_DEV_CONFIG_DESC_CONFIG_VALUE ,      USB_DEV_CONFIG_DESC_STRING_INDEX,     USB_DEV_CONFIG_DESC_ATTRIBUTES,        USB_DEV_CONFIG_DESC_MAX_POWER,/* USB Interface Descriptor according to USB2.0 Specification */    USB_DEV_INF_DESC_LEN,      USB_DEV_INF_DESC_TYPE,      USB_DEV_INF_DESC_INF_INDEX,     USB_DEV_INF_DESC_ALT_SETTING,    USB_DEV_INF_DESC_NUM_OF_EP,  /* NOTE : This should not be more than 2 */    USB_DEV_INF_DESC_INF_CLASS,     USB_DEV_INF_DESC_INF_SUBCLASS_NS_BLANK,       USB_DEV_INF_DESC_INF_PROTOCOL,     USB_DEV_INF_DESC_STRING_INDEX,  /* USB Endpoint 1 Descriptors according to USB2.0 Specification */    USB_EP1_DESC_SIZE,    USB_EP1_DESC_TYPE,    USB_EP1_DESC_EP_ADDR,    USB_EP1_DESC_ATTRIBUTES,     USB_EP1_DESC_MAX_PACKET_SIZE_FS_LB,     USB_EP1_DESC_MAX_PACKET_SIZE_FS_HB,     USB_EP1_DESC_INTERVAL,  /* USB Endpoint 2 Descriptors according to USB2.0 Specification */    USB_EP2_DESC_SIZE,     USB_EP2_DESC_TYPE,    USB_EP2_DESC_EP_ADDR,        USB_EP2_DESC_ATTRIBUTES,      USB_EP2_DESC_MAX_PACKET_SIZE_FS_LB,      USB_EP2_DESC_MAX_PACKET_SIZE_FS_HB,      USB_EP2_DESC_INTERVAL    };/* Full Speed Secure */usb_config_desc_t g_usb_config_desc_fs_s = {    USB_DEV_CONFIG_DESC_LEN,       USB_DEV_CONFIG_DESC_TYPE,       USB_DEV_CONFIG_DESC_TTL_LEN_LB ,       USB_DEV_CONFIG_DESC_TTL_LEN_HB ,       USB_DEV_CONFIG_DESC_NUM_0F_INF,      USB_DEV_CONFIG_DESC_CONFIG_VALUE ,      USB_DEV_CONFIG_DESC_STRING_INDEX,     USB_DEV_CONFIG_DESC_ATTRIBUTES,        USB_DEV_CONFIG_DESC_MAX_POWER,/* USB Interface Descriptor according to USB2.0 Specification */    USB_DEV_INF_DESC_LEN,      USB_DEV_INF_DESC_TYPE,      USB_DEV_INF_DESC_INF_INDEX,     USB_DEV_INF_DESC_ALT_SETTING,    USB_DEV_INF_DESC_NUM_OF_EP,  /* NOTE : This should not be more than 2 */    USB_DEV_INF_DESC_INF_CLASS,     USB_DEV_INF_DESC_INF_SUBCLASS_S_BLANK,       USB_DEV_INF_DESC_INF_PROTOCOL,     USB_DEV_INF_DESC_STRING_INDEX,  /* USB Endpoint 1 Descriptors according to USB2.0 Specification */    USB_EP1_DESC_SIZE,    USB_EP1_DESC_TYPE,    USB_EP1_DESC_EP_ADDR,    USB_EP1_DESC_ATTRIBUTES,     USB_EP1_DESC_MAX_PACKET_SIZE_FS_LB,     USB_EP1_DESC_MAX_PACKET_SIZE_FS_HB,     USB_EP1_DESC_INTERVAL,  /* USB Endpoint 2 Descriptors according to USB2.0 Specification */    USB_EP2_DESC_SIZE,     USB_EP2_DESC_TYPE,    USB_EP2_DESC_EP_ADDR,        USB_EP2_DESC_ATTRIBUTES,      USB_EP2_DESC_MAX_PACKET_SIZE_FS_LB,      USB_EP2_DESC_MAX_PACKET_SIZE_FS_HB,      USB_EP2_DESC_INTERVAL    };/* High Speed Non Secure */usb_config_desc_t g_usb_config_desc_hs_ns = {    USB_DEV_CONFIG_DESC_LEN,       USB_DEV_CONFIG_DESC_TYPE,       USB_DEV_CONFIG_DESC_TTL_LEN_LB ,       USB_DEV_CONFIG_DESC_TTL_LEN_HB ,       USB_DEV_CONFIG_DESC_NUM_0F_INF,      USB_DEV_CONFIG_DESC_CONFIG_VALUE ,      USB_DEV_CONFIG_DESC_STRING_INDEX,     USB_DEV_CONFIG_DESC_ATTRIBUTES,        USB_DEV_CONFIG_DESC_MAX_POWER,/* USB Interface Descriptor according to USB2.0 Specification */    USB_DEV_INF_DESC_LEN,      USB_DEV_INF_DESC_TYPE,      USB_DEV_INF_DESC_INF_INDEX,     USB_DEV_INF_DESC_ALT_SETTING,    USB_DEV_INF_DESC_NUM_OF_EP,  /* NOTE : This should not be more than 2 */    USB_DEV_INF_DESC_INF_CLASS,     USB_DEV_INF_DESC_INF_SUBCLASS_NS_BLANK,       USB_DEV_INF_DESC_INF_PROTOCOL,     USB_DEV_INF_DESC_STRING_INDEX,  /* USB Endpoint 1 Descriptors according to USB2.0 Specification */    USB_EP1_DESC_SIZE,    USB_EP1_DESC_TYPE,    USB_EP1_DESC_EP_ADDR,    USB_EP1_DESC_ATTRIBUTES,     USB_EP1_DESC_MAX_PACKET_SIZE_HS_LB,     USB_EP1_DESC_MAX_PACKET_SIZE_HS_HB,     USB_EP1_DESC_INTERVAL,  /* USB Endpoint 2 Descriptors according to USB2.0 Specification */    USB_EP2_DESC_SIZE,     USB_EP2_DESC_TYPE,    USB_EP2_DESC_EP_ADDR,        USB_EP2_DESC_ATTRIBUTES,      USB_EP2_DESC_MAX_PACKET_SIZE_HS_LB,      USB_EP2_DESC_MAX_PACKET_SIZE_HS_HB,      USB_EP2_DESC_INTERVAL    };/* High Speed Secure */usb_config_desc_t g_usb_config_desc_hs_s = {    USB_DEV_CONFIG_DESC_LEN,       USB_DEV_CONFIG_DESC_TYPE,       USB_DEV_CONFIG_DESC_TTL_LEN_LB ,       USB_DEV_CONFIG_DESC_TTL_LEN_HB ,       USB_DEV_CONFIG_DESC_NUM_0F_INF,      USB_DEV_CONFIG_DESC_CONFIG_VALUE ,      USB_DEV_CONFIG_DESC_STRING_INDEX,     USB_DEV_CONFIG_DESC_ATTRIBUTES,        USB_DEV_CONFIG_DESC_MAX_POWER,/* USB Interface Descriptor according to USB2.0 Specification */    USB_DEV_INF_DESC_LEN,      USB_DEV_INF_DESC_TYPE,      USB_DEV_INF_DESC_INF_INDEX,     USB_DEV_INF_DESC_ALT_SETTING,    USB_DEV_INF_DESC_NUM_OF_EP,  /* NOTE : This should not be more than 2 */    USB_DEV_INF_DESC_INF_CLASS,     USB_DEV_INF_DESC_INF_SUBCLASS_S_BLANK,       USB_DEV_INF_DESC_INF_PROTOCOL,     USB_DEV_INF_DESC_STRING_INDEX,  /* USB Endpoint 1 Descriptors according to USB2.0 Specification */    USB_EP1_DESC_SIZE,    USB_EP1_DESC_TYPE,    USB_EP1_DESC_EP_ADDR,    USB_EP1_DESC_ATTRIBUTES,     USB_EP1_DESC_MAX_PACKET_SIZE_HS_LB,     USB_EP1_DESC_MAX_PACKET_SIZE_HS_HB,     USB_EP1_DESC_INTERVAL,  /* USB Endpoint 2 Descriptors according to USB2.0 Specification */    USB_EP2_DESC_SIZE,     USB_EP2_DESC_TYPE,    USB_EP2_DESC_EP_ADDR,        USB_EP2_DESC_ATTRIBUTES,      USB_EP2_DESC_MAX_PACKET_SIZE_HS_LB,      USB_EP2_DESC_MAX_PACKET_SIZE_HS_HB,      USB_EP2_DESC_INTERVAL    };/* USB String Descriptors 0, according to USB2.0 Specification */usb_str0_desc_t g_usb_otg_str0_desc = {    USB_STR0_DESC_SIZE,    USB_STR0_DESC_TYPE,    USB_LANGUAGE_ID_LB,    USB_LANGUAGE_ID_HB};/*  STRING DESCRIPTOR See table 9-15 in USB2.0 spec (www.usb.org) iManufacturer*/usb_str1_desc_t g_usb_otg_string_desc1 = {	USB_STR1_DESC_SIZE, 		/* bLength */	USB_STR1_DESC_TYPE,		/* bDescriptorType */	'F', 0x00,			/* bString */	'r', 0x00,	'e', 0x00,	'e', 0x00,	's', 0x00,	'c', 0x00,	'a', 0x00,	'l', 0x00,	'e', 0x00,	' ', 0x00,	'S', 0x00,	'e', 0x00,	'm', 0x00,	'i', 0x00,	'C', 0x00,	'o', 0x00,	'n', 0x00,	'd', 0x00,	'u', 0x00,	'c', 0x00,	't', 0x00,	'o', 0x00,	'r', 0x00,	' ', 0x00,	'I', 0x00,	'n', 0x00,	'c', 0x00,	' ', 0x00};	 /* STRING DESCRIPTOR   See table 9-15 in USB2.0 spec (www.usb.org)   iProduct*/usb_str2_desc_t g_usb_otg_string_desc2_se = {	USB_STR2_DESC_SIZE_SE,      	/* bLength */	USB_STR2_DESC_TYPE,		/* bDescriptorType */	'S', 0x00,	                /* bString */	'E', 0x00,			' ', 0x00,				'B', 0x00,	'l', 0x00,		'a', 0x00,			'n', 0x00,		'k', 0x00,			' ', 0x00,				'R', 0x00,				'I', 0x00,	'N', 0x00,	'G', 0x00,	'O', 0x00};usb_str2_desc_t g_usb_otg_string_desc2_sp = {	USB_STR2_DESC_SIZE_S,      	/* bLength */	USB_STR2_DESC_TYPE,		/* bDescriptorType */	'S', 0x00,	                /* bString */	'P', 0x00,	                /* bString */	' ', 0x00,				'B', 0x00,	'l', 0x00,		'a', 0x00,			'n', 0x00,		'k', 0x00,			' ', 0x00,				'R', 0x00,				'I', 0x00,	'N', 0x00,	'G', 0x00,	'O', 0x00};usb_str2_desc_t g_usb_otg_string_desc2_ns = {	USB_STR2_DESC_SIZE_NS,      	/* bLength */	USB_STR2_DESC_TYPE,		/* bDescriptorType */	'N', 0x00,	                /* bString */	'S', 0x00,			' ', 0x00,				'B', 0x00,	'l', 0x00,		'a', 0x00,			'n', 0x00,		'k', 0x00,			' ', 0x00,				'R', 0x00,				'I', 0x00,	'N', 0x00,	'G', 0x00,	'O', 0x00};/* STRING DESCRIPTOR   See table 9-15 in USB2.0 spec (www.usb.org)   iSerialNumber */usb_str3_desc_t g_usb_otg_string_desc3 = {	USB_STR3_DESC_SIZE,			/* bLength */	USB_STR3_DESC_TYPE,			/* bDescriptorType */	'F', 0x00,			/* bString */	'r', 0x00,	'e', 0x00,	'e', 0x00,	's', 0x00,	'c', 0x00,	'a', 0x00,	'l', 0x00,	'e', 0x00,	' ', 0x00,        'F', 0x00,        'l', 0x00,        'a', 0x00,        's', 0x00,        'h', 0x00};static usb_state_t g_usb_dev_state = USB_DEV_DUMMY_STATE; /* State os USB Device */static U8 g_usb_setup_data[SETUP_DATA_LENGTH];		/* Length of setup data received */static usb_end_pt_info_t  g_end_pt_info[USB_DEV_INF_DESC_NUM_OF_EP]; /* Array to keep information about the endpoints used */static U8 g_number_of_endpoints;     /* Number of endpoints */static usb_desc_t g_usb_desc;     /* USB Descriptors *//*==================================================================================================                                        LOCAL MACROS==================================================================================================*//*==================================================================================================                                     LOCAL FUNCTIONS==================================================================================================*//*==================================================================================================FUNCTION: tl_initDESCRIPTION: 	This Function does the Transaction Layer initialisation.ARGUMENTS PASSED:	NoneRETURN VALUE:	None	IMPORTANT NOTES:	==================================================================================================*/voidtl_init(void){    U8 i;    BOOL hs_interface;    U8 type;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -