__ALIGN_BEGIN uint8_t usbd_cdc_CfgDesc[USB_CDC_CONFIG_DESC_SIZ] __ALIGN_END =
{
/*Configuration Descriptor*/
0x09,
/* bLength: Configuration Descriptor size */
USB_CONFIGURATION_DESCRIPTOR_TYPE,
/* bDescriptorType: Configuration */
USB_CDC_CONFIG_DESC_SIZ,
/* wTotalLength:no of returned bytes */
0x00,
#ifdef DUAL_COM
0x04,
/* bNumInterfaces: 4 interface */
#else
0x02,
/* bNumInterfaces: 2 interface */
#endif
0x01,
/* bConfigurationValue: Configuration value */
0x00,
/* iConfiguration: Index of string descriptor describing the configuration */
0x60,
/* bmAttributes: self powered */
0xFA,
/* MaxPower 0 mA */
/*---------------------------------------------------------------------------*/
#ifdef DUAL_COM
// IAD
0x08,
// bLength: Interface Descriptor size
0x0B,
// bDescriptorType: IAD
0x00,
// bFirstInterface
0x02,
// bInterfaceCount
0x02,
// bFunctionClass: CDC
0x02,
// bFunctionSubClass
0x01,
// bFunctionProtocol
0x02,
// iFunction
#endif
/*Interface Descriptor */
0x09,
/* bLength: Interface Descriptor size */
USB_INTERFACE_DESCRIPTOR_TYPE,
/* bDescriptorType: Interface */
/* Interface descriptor type */
0x00,
/* bInterfaceNumber: Number of Interface */
0x00,
/* bAlternateSetting: Alternate setting */
0x01,
/* bNumEndpoints: One endpoints used */
0x02,
/* bInterfaceClass: Communication Interface Class */
0x02,
/* bInterfaceSubClass: Abstract Control Model */
0x01,
/* bInterfaceProtocol: Common AT commands */
0x00,
/* iInterface: */
/*Header Functional Descriptor*/
0x05,
/* bLength: Endpoint Descriptor size */
0x24,
/* bDescriptorType: CS_INTERFACE */
0x00,
/* bDescriptorSubtype: Header Func Desc */
0x10,
/* bcdCDC: spec release number */
0x01,
/*Call Management Functional Descriptor*/
0x05,
/* bFunctionLength */
0x24,
/* bDescriptorType: CS_INTERFACE */
0x01,
/* bDescriptorSubtype: Call Management Func Desc */
0x00,
/* bmCapabilities: D0+D1 */
0x01,
/* bDataInterface: 1 */
/*ACM Functional Descriptor*/
0x04,
/* bFunctionLength */
0x24,
/* bDescriptorType: CS_INTERFACE */
0x02,
/* bDescriptorSubtype: Abstract Control Management desc */
0x02,
/* bmCapabilities */
/*Union Functional Descriptor*/
0x05,
/* bFunctionLength */
0x24,
/* bDescriptorType: CS_INTERFACE */
0x06,
/* bDescriptorSubtype: Union func desc */
0x00,
/* bMasterInterface: Communication class interface */
0x01,
/* bSlaveInterface0: Data Class Interface */
/*Endpoint 2 Descriptor*/
0x07,
/* bLength: Endpoint Descriptor size */
USB_ENDPOINT_DESCRIPTOR_TYPE,
/* bDescriptorType: Endpoint */
CDC_CMD_EP,
/* bEndpointAddress */
0x03,
/* bmAttributes: Interrupt */
LOBYTE(CDC_CMD_PACKET_SZE),
/* wMaxPacketSize: */
HIBYTE(CDC_CMD_PACKET_SZE),
0xFF,
/* bInterval: */
/*---------------------------------------------------------------------------*/
/*Data class interface descriptor*/
0x09,
/* bLength: Endpoint Descriptor size */
USB_INTERFACE_DESCRIPTOR_TYPE,
/* bDescriptorType: */
0x01,
/* bInterfaceNumber: Number of Interface */
0x00,
/* bAlternateSetting: Alternate setting */
0x02,
/* bNumEndpoints: Two endpoints used */
0x0A,
/* bInterfaceClass: CDC */
0x00,
/* bInterfaceSubClass: */
0x00,
/* bInterfaceProtocol: */
0x00,
/* iInterface: */
/*Endpoint OUT Descriptor*/
0x07,
/* bLength: Endpoint Descriptor size */
USB_ENDPOINT_DESCRIPTOR_TYPE,
/* bDescriptorType: Endpoint */
CDC_OUT_EP,
/* bEndpointAddress */
0x02,
/* bmAttributes: Bulk */
LOBYTE(CDC_DATA_MAX_PACKET_SIZE),
/* wMaxPacketSize: */
HIBYTE(CDC_DATA_MAX_PACKET_SIZE),
0x00,
/* bInterval: ignore for Bulk transfer */
/*Endpoint IN Descriptor*/
0x07,
/* bLength: Endpoint Descriptor size */
USB_ENDPOINT_DESCRIPTOR_TYPE,
/* bDescriptorType: Endpoint */
CDC_IN_EP,
/* bEndpointAddress */
0x02,
/* bmAttributes: Bulk */
LOBYTE(CDC_DATA_MAX_PACKET_SIZE),
/* wMaxPacketSize: */
HIBYTE(CDC_DATA_MAX_PACKET_SIZE),
0x00,
/* bInterval: ignore for Bulk transfer */
#ifdef DUAL_COM
// IAD
0x08,
// bLength: Interface Descriptor size
0x0B,
// bDescriptorType: IAD
0x02,
// bFirstInterface
0x02,
// bInterfaceCount
0x02,
// bFunctionClass: CDC
0x02,
// bFunctionSubClass
0x01,
// bFunctionProtocol
0x02,
// iFunction
/*Interface Descriptor */
0x09,
/* bLength: Interface Descriptor size */
USB_INTERFACE_DESCRIPTOR_TYPE,
/* bDescriptorType: Interface */
/* Interface descriptor type */
0x02,
/* bInterfaceNumber: Number of Interface */
0x00,
/* bAlternateSetting: Alternate setting */
0x01,
/* bNumEndpoints: One endpoints used */
0x02,
/* bInterfaceClass: Communication Interface Class */
0x02,
/* bInterfaceSubClass: Abstract Control Model */
0x01,
/* bInterfaceProtocol: Common AT commands */
0x00,
/* iInterface: */
/*Header Functional Descriptor*/
0x05,
/* bLength: Endpoint Descriptor size */
0x24,
/* bDescriptorType: CS_INTERFACE */
0x00,
/* bDescriptorSubtype: Header Func Desc */
0x10,
/* bcdCDC: spec release number */
0x01,
/*Call Management Functional Descriptor*/
0x05,
/* bFunctionLength */
0x24,
/* bDescriptorType: CS_INTERFACE */
0x01,
/* bDescriptorSubtype: Call Management Func Desc */
0x00,
/* bmCapabilities: D0+D1 */
0x01,
/* bDataInterface: 1 */
/*ACM Functional Descriptor*/
0x04,
/* bFunctionLength */
0x24,
/* bDescriptorType: CS_INTERFACE */
0x02,
/* bDescriptorSubtype: Abstract Control Management desc */
0x02,
/* bmCapabilities */
/*Union Functional Descriptor*/
0x05,
/* bFunctionLength */
0x24,
/* bDescriptorType: CS_INTERFACE */
0x06,
/* bDescriptorSubtype: Union func desc */
0x00,
/* bMasterInterface: Communication class interface */
0x01,
/* bSlaveInterface0: Data Class Interface */
/*Endpoint 2 Descriptor*/
0x07,
/* bLength: Endpoint Descriptor size */
USB_ENDPOINT_DESCRIPTOR_TYPE,
/* bDescriptorType: Endpoint */
CDC_CMD_EP,
/* bEndpointAddress */
0x03,
/* bmAttributes: Interrupt */
LOBYTE(CDC_CMD_PACKET_SZE),
/* wMaxPacketSize: */
HIBYTE(CDC_CMD_PACKET_SZE),
0xFF,
/* bInterval: */
/*---------------------------------------------------------------------------*/
/*Data class interface descriptor*/
0x09,
/* bLength: Endpoint Descriptor size */
USB_INTERFACE_DESCRIPTOR_TYPE,
/* bDescriptorType: */
0x03,
/* bInterfaceNumber: Number of Interface */
0x00,
/* bAlternateSetting: Alternate setting */
0x02,
/* bNumEndpoints: Two endpoints used */
0x0A,
/* bInterfaceClass: CDC */
0x00,
/* bInterfaceSubClass: */
0x00,
/* bInterfaceProtocol: */
0x00,
/* iInterface: */
/*Endpoint OUT Descriptor*/
0x07,
/* bLength: Endpoint Descriptor size */
USB_ENDPOINT_DESCRIPTOR_TYPE,
/* bDescriptorType: Endpoint */
CDC_OUT_EP_EX,
/* bEndpointAddress */
0x02,
/* bmAttributes: Bulk */
LOBYTE(CDC_DATA_MAX_PACKET_SIZE),
/* wMaxPacketSize: */
HIBYTE(CDC_DATA_MAX_PACKET_SIZE),
0x00,
/* bInterval: ignore for Bulk transfer */
/*Endpoint IN Descriptor*/
0x07,
/* bLength: Endpoint Descriptor size */
USB_ENDPOINT_DESCRIPTOR_TYPE,
/* bDescriptorType: Endpoint */
CDC_IN_EP_EX,
/* bEndpointAddress */
0x02,
/* bmAttributes: Bulk */
LOBYTE(CDC_DATA_MAX_PACKET_SIZE),
/* wMaxPacketSize: */
HIBYTE(CDC_DATA_MAX_PACKET_SIZE),
0x00
/* bInterval: ignore for Bulk transfer */
#endif
} ;