- const uint8_t Virtual_Com_Port_DeviceDescriptor[] =
- {
- 0x12, /* bLength */
- USB_DEVICE_DESCRIPTOR_TYPE, /* bDescriptorType */
- 0x00,
- 0x02, /* bcdUSB = 2.00 */
-
- /*******************************/
- 0xef, // bDeviceClass : each interface define the device class
- 0x02, // bDeviceSubClass
- 0x01, // bDeviceProtocol
- 0x40, /* bMaxPacketSize0 */
- 0x83,
- 0x04, /* idVendor = 0x0483 */
- 0x66,
- 0x75, /* idProduct = 0x7564 */
- 0x00,
- 0x02, /* bcdDevice = 2.00 */
- 1, /* Index of string descriptor describing manufacturer */
- 2, /* Index of string descriptor describing product */
- 3, /* Index of string descriptor describing the device's serial number */
- 0x01 /* bNumConfigurations */
- };
配置描述符
- const uint8_t Virtual_Com_Port_ConfigDescriptor[VIRTUAL_COM_PORT_SIZ_CONFIG_DESC] =
- {
- /*Configuration Descriptor*/
- 0x09, /* bLength: Configuration Descriptor size */
- USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */
- VIRTUAL_COM_PORT_SIZ_CONFIG_DESC, /* wTotalLength:no of returned bytes */
- 0x00,
- 0x03, /* bNumInterfaces: 3interface */
- 0x01, /* bConfigurationValue: Configuration value */
- 0x00, /* iConfiguration: Index of string descriptor describing the configuration */
- 0xC0, /* bmAttributes: self powered */
- 0x32, /* MaxPower 0 mA */
- /*Interface Descriptor*/
-
- 0x08, //描述符大小
- 0x0B, //IAD描述符类型
- 0x00, // bFirstInterface
- 0x01, // bInterfaceCount
- 0x03, // bFunctionClass:HID
- 0x00, // bFunctionSubClass
- 0x00, // bFunctionProtocol
- 0x05, // iFunction
-
-
- /************** Descriptor of Custom HID interface ****************/
- /* 18*/
- 0x09, /* bLength: Interface Descriptor size */
- 0x04,/* bDescriptorType: Interface descriptor type */
- 0x00, /* bInterfaceNumber: Number of Interface */
- 0x00, /* bAlternateSetting: Alternate setting */
- 0x02, /* bNumEndpoints */
- 0x03, /* bInterfaceClass: HID */
- 0x00, /* bInterfaceSubClass : 1=BOOT, 0=no boot */
- 0x00, /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */
- 0, /* iInterface: Index of string descriptor */
-
- /******************** Descriptor of Custom HID HID ********************/
- /* 27 */
- 0x09, /* bLength: HID Descriptor size */
- 0x21, /* bDescriptorType: HID */
- 0x00, /* bcdHID: HID Class Spec release number */
- 0x01,
- 0x00, /* bCountryCode: Hardware target country */
- 0x01, /* bNumDescriptors: Number of HID class descriptors to follow */
- 0x22, /* bDescriptorType */
- CustomHID_SIZ_ReportDescriptor,/* wItemLength: Total length of Report descriptor */
- 0x00,
- /******************** Descriptor of Custom HID endpoints ******************/
- /* 34 */
- 0x07, /* bLength: Endpoint Descriptor size */
- 0x05, /* bDescriptorType: */
- 0x81, /* bEndpointAddress: Endpoint Address (IN) */
- 0x03, /* bmAttributes: Interrupt endpoint */
- 0x08, /* wMaxPacketSize: 2 Bytes max */
- 0x00,
- 0x20, /* bInterval: Polling Interval (32 ms) */
- /* 41 */
-
- 0x07, /* bLength: Endpoint Descriptor size */
- 0x05, /* bDescriptorType: */
- /* Endpoint descriptor type */
- 0x01, /* bEndpointAddress: */
- /* Endpoint Address (OUT) */
- 0x03, /* bmAttributes: Interrupt endpoint */
- 0x08, /* wMaxPacketSize: 2 Bytes max */
- 0x00,
- 0x20, /* bInterval: Polling Interval (20 ms) */
-
-
- 0x08, // 描述符大小
- 0x0B, // IAD描述符类型
- 0x01, // bFirstInterface
- 0x02, // bInterfaceCount
- 0x02, // bFunctionClass: CDC Class
- 0x02, // bFunctionSubClass
- 0x01, // bFunctionProtocol
- 0x04, // iFunction
- 0x09, /* bLength: Interface Descriptor size */
- USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */
- /* Interface descriptor type */
- 0x01, /* bInterfaceNumber: Number of Interface */
- 0x00, /* bAlternateSetting: Alternate setting */
- 0x01, /* bNumEndpoints: One endpoints used */
- 0x02, /* bInterfaceClass: Communication Interface Class CDC接口*/
- 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 */
- 0x02, /* bDataInterface: 2 */
- /*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 */
- 0x01, /* bMasterInterface: Communication class interface */
- 0x02, /* bSlaveInterface0: Data Class Interface */
- /*Endpoint 2 Descriptor*/
- 0x07, /* bLength: Endpoint Descriptor size */
- USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */
- 0x82, /* bEndpointAddress: (IN2) */
- 0x03, /* bmAttributes: Interrupt */
- VIRTUAL_COM_PORT_INT_SIZE, /* wMaxPacketSize: */
- 0x00,
- 0xFF, /* bInterval: */
- /*Data class interface descriptor*/
- 0x09, /* bLength: Endpoint Descriptor size */
- USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: */
- 0x02, /* bInterfaceNumber: Number of Interface */
- 0x00, /* bAlternateSetting: Alternate setting */
- 0x02, /* bNumEndpoints: Two endpoints used */
- 0x0A, /* bInterfaceClass: CDC */
- 0x00, /* bInterfaceSubClass: */
- 0x00, /* bInterfaceProtocol: */
- 0x00, /* iInterface: */
- /*Endpoint 3 Descriptor*/
- 0x07, /* bLength: Endpoint Descriptor size */
- USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */
- 0x03, /* bEndpointAddress: (OUT3) */
- 0x02, /* bmAttributes: Bulk */
- VIRTUAL_COM_PORT_DATA_SIZE, /* wMaxPacketSize: */
- 0x00,
- 0x00, /* bInterval: ignore for Bulk transfer */
- /*Endpoint 1 Descriptor*/
- 0x07, /* bLength: Endpoint Descriptor size */
- USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */
- 0x84, /* bEndpointAddress: (IN1) */
- 0x02, /* bmAttributes: Bulk */
- VIRTUAL_COM_PORT_DATA_SIZE, /* wMaxPacketSize: */
- 0x00,
- 0x00, /* bInterval */
- };