// Bit 1 — Device can send/receive call management information over a Data Class interface:
// 1 = can use the Data Class interface for call management
// 0 = must use the Communication Class interface
0x01,// bDataInterface - Indicates that multiplexed commands are handled via data interface 01h (same value as used in the UNION Functional Descriptor)
// Abstract Control Management Functional Descriptor
0x04,// bLength
0x24,// bDescriptorType - CS_INTERFACE
0x02,// bDescriptorSubType - Abstract Control Management Functional Descriptor (Table 13)
0x02,// bmCapabilities - Device supports the request combination of Set_Line_Coding, Set_Control_Line_State, Get_Line_Coding, and the notification Serial_State (Table 4 in PSTN120.pdf)
// Union Descriptor Functional Descriptor
0x05,// bLength
0x24,// bDescriptorType - CS_INTERFACE
0x06,// bDescriptorSubType - Union Descriptor Functional Descriptor (Table 13)
0x00,// bControlInterface (Interface number of the control (Communications Class) interface)
0x01,// bSubordinateInterface0 (Interface number of the subordinate (Data Class) interface)
// Setting up EP1 for CDC config interface
0x07,// bLength
0x05,// bDescriptorType (Endpoint)
0x81,// bEndpointAddress (IN/D2H)
0x03,// bmAttributes (Interrupt)
0x40,0x00,// wMaxPacketSize 64
0x01,// bInterval 1 (unit depends on device speed)
// Transmission interface with two bulk endpoints
0x09,// bLength
0x04,// bDescriptorType (Interface)
0x01,// bInterfaceNumber 1
0x00,// bAlternateSetting
0x02,// bNumEndpoints 2
0x0A,// bInterfaceClass
0x00,// bInterfaceSubClass
0x00,// bInterfaceProtocol - Transparent
0x00,// iInterface (String Index)
// EP2 - device to host
0x07,// bLength
0x05,// bDescriptorType (Endpoint)
0x02,// bEndpointAddress (OUT/H2D)
0x02,// bmAttributes (Bulk)
0x40,0x00,// wMaxPacketSize 64
0x00,// bInterval 0 (unit depends on device speed)
// EP3 - host to device
0x07,// bLength
0x05,// bDescriptorType (Endpoint)
0x83,// bEndpointAddress (IN/D2H)
0x02,// bmAttributes (Bulk)
0x40,0x00,// wMaxPacketSize 64
0x00,// bInterval 0 (unit depends on device speed)
// This table defines which descriptor data is sent for each specific
// request from the host (in wValue and wIndex).
conststaticstructdescriptor_list_struct{
uint32_tlIndexValue;// (uint16_t)Index of a descriptor in config or Language ID for string descriptors | (uint8_t)Descriptor type | (uint8_t)Type of string descriptor