#ifndef USB_DEFS_H #define USB_DEFS_H #define PTR16(x) ((unsigned int)(((unsigned long)x) & 0xFFFF)) // Size of the buffer for endpoint 0 #define E0SZ 16 // //////////////CDC///////// /* CDC */ #define CDC_COMM_INTF_ID 0x00 #define CDC_COMM_UEP UEP2 #define CDC_INT_BD_IN ep2Bi #define CDC_INT_EP_SIZE 8 #define CDC_DATA_INTF_ID 0x01 #define CDC_DATA_UEP UEP3 #define CDC_BULK_BD_OUT ep3Bo #define CDC_BULK_OUT_EP_SIZE 8 #define CDC_BULK_BD_IN ep3Bi #define CDC_BULK_IN_EP_SIZE 8 /** D E F I N I T I O N S ****************************************************/ /* Class-Specific Requests */ #define SEND_ENCAPSULATED_COMMAND 0x00 #define GET_ENCAPSULATED_RESPONSE 0x01 #define SET_COMM_FEATURE 0x02 #define GET_COMM_FEATURE 0x03 #define CLEAR_COMM_FEATURE 0x04 #define SET_LINE_CODING 0x20 #define GET_LINE_CODING 0x21 #define SET_CONTROL_LINE_STATE 0x22 #define SEND_BREAK 0x23 /* Notifications * * Note: Notifications are polled over * Communication Interface (Interrupt Endpoint) */ #define NETWORK_CONNECTION 0x00 #define RESPONSE_AVAILABLE 0x01 #define SERIAL_STATE 0x20 /* Device Class Code */ #define CDC_DEVICE 0x02 /* Communication Interface Class Code */ #define COMM_INTF 0x02 /* Communication Interface Class SubClass Codes */ #define ABSTRACT_CONTROL_MODEL 0x02 /* Communication Interface Class Control Protocol Codes */ #define V25TER 0x01 // Common AT commands ("Hayes(TM)") /* Data Interface Class Codes */ #define DATA_INTF 0x0A /* Data Interface Class Protocol Codes */ #define NO_PROTOCOL 0x00 // No class specific protocol required /* Communication Feature Selector Codes */ #define ABSTRACT_STATE 0x01 #define COUNTRY_SETTING 0x02 /* Functional Descriptors */ /* Type Values for the bDscType Field */ #define CS_INTERFACE 0x24 #define CS_ENDPOINT 0x25 /* bDscSubType in Functional Descriptors */ #define DSC_FN_HEADER 0x00 #define DSC_FN_CALL_MGT 0x01 #define DSC_FN_ACM 0x02 // ACM - Abstract Control Management #define DSC_FN_DLM 0x03 // DLM - Direct Line Managment #define DSC_FN_TELEPHONE_RINGER 0x04 #define DSC_FN_RPT_CAPABILITIES 0x05 #define DSC_FN_UNION 0x06 #define DSC_FN_COUNTRY_SELECTION 0x07 #define DSC_FN_TEL_OP_MODES 0x08 #define DSC_FN_USB_TERMINAL 0x09 /* more.... see Table 25 in USB CDC Specification 1.1 */ /* CDC Bulk IN transfer states */ #define CDC_TX_READY 0 #define CDC_TX_BUSY 1 #define CDC_TX_BUSY_ZLP 2 // ZLP: Zero Length Packet #define CDC_TX_COMPLETING 3 /** S T R U C T U R E S ******************************************************/ /* Line Coding Structure */ #define LINE_CODING_LENGTH 0x07 /* Functional Descriptor Structure - See CDC Specification 1.1 for details */ /* Header Functional Descriptor */ typedef struct _USB_CDC_HEADER_FN_DSC { unsigned char bFNLength; unsigned char bDscType; unsigned char bDscSubType; unsigned short bcdCDC; } USB_CDC_HEADER_FN_DSC; /* Abstract Control Management Functional Descriptor */ typedef struct _USB_CDC_ACM_FN_DSC { unsigned char bFNLength; unsigned char bDscType; unsigned char bDscSubType; unsigned char bmCapabilities; } USB_CDC_ACM_FN_DSC; /* Union Functional Descriptor */ typedef struct _USB_CDC_UNION_FN_DSC { unsigned char bFNLength; unsigned char bDscType; unsigned char bDscSubType; unsigned char bMasterIntf; unsigned char bSaveIntf0; } USB_CDC_UNION_FN_DSC; /* Call Management Functional Descriptor */ typedef struct _USB_CDC_CALL_MGT_FN_DSC { unsigned char bFNLength; unsigned char bDscType; unsigned char bDscSubType; unsigned char bmCapabilities; unsigned char bDataInterface; } USB_CDC_CALL_MGT_FN_DSC; #endif