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

📄 usb_dsc.h

📁 embedded usb protocol C program
💻 H
📖 第 1 页 / 共 2 页
字号:
	#ifndef   __USB_DSC_H__
#define   __USB_DSC_H__

/*=============================================================================

                     D E F I N I T I O N S

=============================================================================*/

/*---------------------------------------------------------------------------
 Misc USB Constants
---------------------------------------------------------------------------*/
#define USB_EP_ADDR_CONTROL					0x80
#define USB_EP_ADDR_NOTIFICATION			0x81
#define USB_EP_ADDR_DATA_STREAM_IN			0x82
#define USB_EP_ADDR_DATA_STREAM_OUT			0x03
#define USB_EP_ADDR_DIAG_STREAM_IN			0x84
#define USB_EP_ADDR_DIAG_STREAM_OUT			0x05

#define USB_BULK_PACKET_SIZE_DATA			0x40
#define USB_BULK_PACKET_SIZE_DIAG			0x40

#define USBDC_DEFAULT_ADDRESS				0x00
#define USBDC_DEFAULT_CONFIGURATION			0x00
#define USBDC_DEFAULT_ALTERNATE_SETTING		0x00
#define USBDC_FIRST_ALTERNATE_SETTING		0x01
#define USBDC_SECOND_ALTERNATE_SETTING		0x02
#define USBDC_THIRD_ALTERNATE_SETTING		0x03
#define USBDC_DATA0_PID						0x02
#define USBDC_DATA1_PID						0x07

#define USBDC_ENGLISH_LANGUAGE				0x0409

//#define USBDC_ENGLISH_LANGUAGE                0x04E4
  // According to 'Developing International Software for Windows 95 and Windows NT", 
  // Nadine Kano, Microsoft Press. Redmond, Washington.
  
#define USBDC_CONTROL_FIFO_PKT_SIZE         0x0010
#define USBDC_NOTIFICATION_FIFO_PKT_SIZE	0x0010

//  bulk endpoint FIFO sizes (in bytes) 
#define USBDC_FIFO2_PKT_SIZE                0x0040
#define USBDC_FIFO5_PKT_SIZE                0x0040
#define USBDC_FIFO3_PKT_SIZE                0x0040
#define USBDC_FIFO6_PKT_SIZE                0x0040
#define USB_ENP_DIR_MASK                    0x0080

// usb req type
#define USB_REQ_TYPE_MASK					0x60
#define USB_REQ_TYPE_STANDARD				0x00
#define USB_REQ_TYPE_CLASS					0x20
#define USB_REQ_TYPE_VENDOR					0x40

// usb request type recipient
#define USB_REQ_RECIPIENT_MASK				0x1f
#define USB_REQ_RECIPIENT_DEVICE			0x00
#define USB_REQ_RECIPIENT_INTERFACE			0x01
#define USB_REQ_RECIPIENT_ENDPOINT			0x02

// usb standard feature selector
#define USB_FETSEL_D_REMOTE_WAKEUP			0x01
#define USB_FETSEL_ENDPOINT_HALT			0x00
#define USB_FETSEL_TESTMODE					0x02

// usb standard request
#define USB_GET_STATUS						0x00
#define USB_CLEAR_FEATURE					0x01
#define USB_SET_FEATURE						0x03
#define USB_SET_ADDRESS						0x05
#define USB_GET_DESCRIPTOR					0x06
#define USB_SET_DESCRIPTOR					0x07
#define USB_GET_CONFIGURATION				0x08
#define USB_SET_CONFIGURATION				0x09
#define USB_GET_INTERFACE					0x0a
#define USB_SET_INTERFACE					0x0b
#define USB_SYNCH_FRAME						0x0c


#define USB_DSC_DEVICE						0x01
#define USB_DSC_CONFIGURATION				0x02
#define USB_DSC_STRING						0x03
#define USB_DSC_INTERFACE					0x04 
#define USB_DSC_ENDPOINT					0x05

// usb version 1.1
#define USB_CDC_VERSION						0x0110

//
#define USB_CDC_CLASS_CODE					0x02
#define USB_CDC_SUBCLASS_CODE				0x00
#define USB_CDC_PROTOCOL_CODE				0x00
#define USB_MASS_STORAGE_CLASS_CODE			0x00
#define USB_MASS_STORAGE_SUBCLASS_CODE		0x00
#define USB_MASS_STORAGE_PROTOCOL_CODE		0x00

//
#define USB_CDC_NONE_STR_IDX				0x00
#define USB_CDC_MANUFACTURER_STR_IDX		0x01
#define USB_CDC_PRODUCT_STR_IDX				0x02
#define USB_CDC_SERIAL_NUM_STR_IDX			0x03
#define USB_CDC_DATA_INTERFACE_STR_IDX		0x04

//
#define USB_MAX_PKT_SIZE_ENP0			 	64//x40//0x10
//#define USB_MAX_PKT_SIZE_ENP0				8
#define USB_MAX_NUM_CONFIG					0x01
#define USBDC_MAX_CONTROLDATA_SIZE			0x08//0x10//8 ->16 ,20050810
#define USBDC_MAX_NOTIFICATION_DATA_SIZE  	0x10//8 ->16 ,20050810


//Config Descriptor
#define USB_DSC_MAX_NUM_INTERFACE1			0x01
#define USB_DSC_MAX_NUM_INTERFACE2			0x02
#define USB_DSC_MAX_NUM_INTERFACE3			0x03 
#define USB_DSC_MAX_NUM_INTERFACE4			0x04
#define USB_CDC_CONFIG_VALUE				0x01


#define USB_CDC_NUM_ENDPOINTS					0x01
#define USB_CDC_CDC_INTERFACE_CLASS_CODE		0x02
#define USB_CDC_CDC_INTERFACE_SUBCLASS_CODE		0x02
#define USB_CDC_CDC_INTERFACE_PROTOCOL_CODE		0x01
#define USB_CDC_CDC_INTERFACE_STR_IDX			0x00


#define USB_CDC_CDC_DATA_CLASS_CODE				0x0A
#define USB_CDC_CDC_DATA_SUBCLASS_CODE			0x00
#define USB_CDC_CDC_DATA_PROTOCOL_CODE			0x00

#define USB_CDC_MS_INTERFACE_CLASS_CODE			0x08
#define USB_CDC_MS_INTERFACE_SUBCLASS_CODE		0x06
#define USB_CDC_MS_INTERFACE_PROTOCOL_CODE		0x50
#define USB_CDC_MS_INTERFACE_STR_IDX			0x00


/*---------------------------------------------------------------------------
 USB Functional Descriptor subtypes, USBCDC v1.1 p33
---------------------------------------------------------------------------*/
#define USB_CDC_DSC_CS_INTERFACE        	0x24

#define USB_CDC_HEADER						0x00  // Header Functional Descriptor Subtype
#define USB_CDC_CALL_MANAGEMENT				0x01  // Call Management Functional Desc. Subtype
#define USB_CDC_ABSTRACT_CONTROL			0x02  // Abstract Control Model Func. Desc. Subtype
#define USB_CDC_DIRECT_LINE					0x03  // Direct Line Func. Desc. Subtype
#define USB_CDC_TEL_RINGER					0x04  // Telephone Ringer Func. Desc. Subtype
#define USB_CDC_TEL_CALL_LINE_STATE_REPORT	0x05  // telephone Call & Line State Reporting Capabilities Func. Desc. Subtype
#define USB_CDC_UNION						0x06  // Union Interface Func. Desc. Subtype
#define USB_CDC_COUNTRY_SELECTION			0x07  // Country Selection Func. Desc. Subtype
#define USB_CDC_TEL_OPERATIONAL_MODES		0x08  // Telephone Operational Modes Func. Desc. Subtype
#define USB_CDC_USB_TEMINAL					0x09  // USB Terminal Func. Desc. Subtype
#define USB_CDC_NET_CHANNEL_TERMINAL		0x0A  // Network Channel Terminal Descriptor
#define USB_CDC_YES_NO_PROTOCOL_UNIT		0x0B  // Yes No Protocol Unit Functional Descriptor
#define USB_CDC_YES_NO_EXT_UNIT				0x0C  // Yes No Extension Unit Functional Descriptor
#define USB_CDC_YES_NO_MULTI_CH_MNG			0x0D  // Yes No Multi-Channel Management Functional Descriptor
#define USB_CDC_YES_NO_CAPI_CON_MNG			0x0E  // Yes No CAPI Control Management Functional Descriptor
#define USB_CDC_YES_NO_ETHERNET				0x0F  // Yes No Ethernet Networking Functional Descriptor
#define USB_CDC_YES_NO_ATM					0x10  // Yes No ATM Networking Functional Descriptor

#define USB_CDC_CDC_VERSION					0x0109


//Interface
#define USB_CDC_CDC_INTERFACE				0x00
#define USB_CDC_DATA_INTERFACE				0x01
#define USB_CDC_DIAG_INTERFACE				0x02
#define USB_BULK_ONLY_INTERFACE				0x00

#define USBDC_DATA_STREAM_IN_EP_PKT_SIZE	0x0040
#define USBDC_DATA_STREAM_OUT_EP_PKT_SIZE	0x0040
#define USBDC_DIAG_STREAM_IN_EP_PKT_SIZE	0x0040
#define USBDC_DIAG_STREAM_OUT_EP_PKT_SIZE	0x0040


/*---------------------------------------------------------------------------
  USB Stream Type
---------------------------------------------------------------------------*/
#define	USBDC_STREAM_CONTROL				0x00
#define	USBDC_STREAM_NOTIFICATION			0x01
#define	USBDC_STREAM_DATA_SERVICE			0x02
#define	USBDC_STREAM_DM						0x03


/*---------------------------------------------------------------------------
  USB Endpoint Address Type
---------------------------------------------------------------------------*/
#define	USBDC_EP_ADDR_CONTROL 				USB_EP_ADDR_CONTROL
#define USBDC_EP_ADDR_NOTIFICATION_STREAM	USB_EP_ADDR_NOTIFICATION
#define USBDC_EP_ADDR_DATA_STREAM_IN		USB_EP_ADDR_DATA_STREAM_IN
#define USBDC_EP_ADDR_DATA_STREAM_OUT		USB_EP_ADDR_DATA_STREAM_OUT
#define USBDC_EP_ADDR_DIAG_STREAM_IN		USB_EP_ADDR_DIAG_STREAM_IN
#define USBDC_EP_ADDR_DIAG_STREAM_OUT		USB_EP_ADDR_DIAG_STREAM_OUT


/*---------------------------------------------------------------------------
  USB_TRANSFER_TYPE
---------------------------------------------------------------------------*/

#define	USBDC_ATTR_CONTROL_TRANSFER 		0x00
#define	USBDC_ATTR_ISOCHRONOUS_TRANSFER		0x01
#define	USBDC_ATTR_BULK_TRANSFER			0x02
#define	USBDC_ATTR_INTERRUPT_TRANSFER		0x03
#define	USBDC_ATTR_SYNCHRONOUS 				0x0C


/*---------------------------------------------------------------------------
 The USB Control Block
---------------------------------------------------------------------------*/
#define MAX_NUMBER_OF_INTERFACE   			3
#define MAX_NUMBER_OF_RX_ENDPOINT			3
#define MAX_NUMBER_OF_TX_ENDPOINT			4
#define MAX_USB_EVENT						6


/*---------------------------------------------------------------------------
  USB_Transaction_Type
---------------------------------------------------------------------------*/
typedef enum
{
	SPLIT_TANSACTION,
	NO_SPLIT_TRANSACTION,
	SINGLE_TRANSACTION
} usb_dev_class_transaction_type;


/*---------------------------------------------------------------------------
 USB Device States
---------------------------------------------------------------------------*/
typedef enum 
{
	USBDC_UNINITIALIZED = 0,    // Initial state at device power up               
	USBDC_STARTUP,              // Completed initial startup procedure

	// Official USB operational states
	USBDC_ATTACHED,             // Device is attached, but is not powered                                   
	USBDC_POWERED_SUSPENDED,    // Suspended from powered state.                                  
	USBDC_POWERED,              // Device is attached and powered but not yet 
	// reset.
	USBDC_DEFAULT_SUSPENDED,    // Suspended from dafault state
	USBDC_DEFAULT,              // Attached, powered, reset, not yet addressed.
	USBDC_ADDRESSED_SUSPENDED,  // Suspended, from addressed state
	USBDC_ADDRESSED,            // Attached, powered, reset, addressed, not yet 
	// configured.
	USBDC_CONFIGURED_SUSPENDED, // Suspended, from configured state
	USBDC_CONFIGURED            // Attached, powered, reset, addressed, 
	// configured, not suspended.
} usb_dev_class_state_type;



/*---------------------------------------------------------------------------
 USB CDC Definition
---------------------------------------------------------------------------*/

#define USBDC_LINE_STATE_DTR				0x01   /* Host to Device for Interface */
#define USBDC_LINE_STATE_RTS				0x02   /* Host to Device for Interface */
#define USBCDC_REQUEST						0x21
#define USBCDC_SET_CONTROL_LINE_STATE		0x22 
#define USBCDC_SET_LINE_CODING				0x20 

#define USBCDC_REQUEST_TYPE_SERIAL_STATE	0xA1

//Notification
#define NOTIFICATION_NETWORK_CONNECTION		0x00
#define NOTIFICATION_RESPONSE_AVAILABLE		0x01
#define NOTIFICATION_SERIAL_STATE			0x20

#define SERIAL_STATE_DATA_LENGTH			0x0002
#define SERIAL_STATE_NOTIFICATION_SIZE		10

#define USBCDC_SET_CONTROL_LINE_STATE		0x22
#define USBCDC_SET_LINE_CODING				0x20

//Serial State Bitmap Value
#define SERIAL_STATE_ALL_OFF				0x0000

#define SERIAL_STATE_DCD_ON					0x0001 //Rx Carrier
#define SERIAL_STATE_DSR_ON					0x0002 //Tx Carrier
#define SERIAL_STATE_BREAK					0x0004
#define SERIAL_STATE_RI_ON					0x0008
#define SERIAL_STATE_FRAMING_ERROR			0x0010
#define SERIAL_STATE_PARITY_ERROR			0x0020
#define SERIAL_STATE_OVER_RUN				0x0040


/*---------------------------------------------------------------------------
 USB Error
----------------------------------------------------------------------------*/

⌨️ 快捷键说明

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