📄 usb_dsc.h
字号:
#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 + -