1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
/* insert license */
#include "descriptors.h"
USB_Descriptor_Device usbVcomDescriptor_Device = {
bLength: sizeof(USB_Descriptor_Device),
bDescriptorType: USB_DESCRIPTOR_TYPE_DEVICE,
bcdUSB: 0x0200,
bDeviceClass: USB_DEVICE_CLASS_CDC,
bDeviceSubClass: USB_DEVICE_SUBCLASS_CDC,
bDeviceProtocol: 0x00,
bMaxPacketSize0: 0x40,
idVendor: VCOM_ID_VENDOR,
idProduct: VCOM_ID_PRODUCT,
bcdDevice: 0x0200,
iManufacturer: 0x00,
iProduct: 0x00,
iSerialNumber: 0x00,
bNumConfigurations: 0x01
};
USB_Descriptor_Configuration usbVcomDescriptor_Config = {
Header:
{
bLength: sizeof(USB_Descriptor_Config_Header),
bDescriptorType: USB_DESCRIPTOR_TYPE_CONFIGURATION,
wTotalLength: sizeof(USB_Descriptor_Configuration),
bNumInterfaces: 0x02,
bConfigurationValue: 0x01,
iConfiguration: 0x00,
bmAttributes: (USB_CONFIG_ATTR_BUSPOWERED | USB_CONFIG_ATT_SELF_POWERED),
bMaxPower: USB_CONFIG_POWER_MA(100)
},
CCI_Interface:
{
bLength: sizeof(USB_Descriptor_Interface),
bDescriptorType: USB_DESCRIPTOR_TYPE_INTERFACE,
bInterfaceNumber: 0x00,
bAlternateSetting: 0x00,
bNumEndpoints: 0x01,
bInterfaceClass: 0x02,
bInterfaceSubClass: 0x02,
bInterfaceProtocol: 0x01,
iInterface: 0x00
},
CDC_Functional_IntHeader:
{
bLength: sizeof(CDC_FUNCTIONAL_DESCRIPTOR(2)),
bDescriptorType: 0x24,
SubType: 0x00,
Data: {0x01, 0x10}
},
CDC_Functional_CallManagement:
{
bLength: sizeof(CDC_FUNCTIONAL_DESCRIPTOR(2)),
bDescriptorType: 0x24,
SubType: 0x01,
Data: {0x03, 0x01}
},
CDC_Functional_ACM:
{
bLength: sizeof(CDC_FUNCTIONAL_DESCRIPTOR(1)),
bDescriptorType: 0x24,
SubType: 0x02,
Data: {0x06}
},
CDC_Functional_Union:
{
bLength: sizeof(CDC_FUNCTIONAL_DESCRIPTOR(2)),
bDescriptorType: 0x24,
SubType: 0x06,
Data: {0x00, 0x01}
},
ManagementEndpoint:
{
bLength: sizeof(USB_Descriptor_Endpoint),
bDescriptorType: USB_DESCRIPTOR_TYPE_ENDPOINT,
bEndpointAddress: CDC_NOTIFICATION_EPNUM,
bmAttributes: EP_TYPE_INTERRUPT,
wMaxPacketSize: CDC_NOTIFICATION_EPSIZE,
bInterval: 0xFF
},
DCI_Interface:
{
bLength: sizeof(USB_Descriptor_Interface),
bDescriptorType: USB_DESCRIPTOR_TYPE_INTERFACE,
bInterfaceNumber: 0x01,
bAlternateSetting: 0x00,
bNumEndpoints: 0x02,
bInterfaceClass: 0x0A,
bInterfaceSubClass: 0x00,
bInterfaceProtocol: 0x00,
iInterface: 0x00
}.
DataOutEndpoint:
{
bLength: sizeof(USB_Descriptor_Endpoint),
bDescriptorType: USB_DESCRIPTOR_TYPE_ENDPOINT,
bEndpointAddress: VCOM_RX_EPNUM,
bmAttributes: EP_TYPE_BULK,
wMaxPacketSize: VCOM_RX_EPSIZE,
bInterval: 0x00
},
DataInPoiint:
{
bLength: sizeof(USB_Descriptor_Endpoint),
bDescriptorType: USB_DESCRIPTOR_TYPE_ENDPOINT,
bEndpointAddress: VCOM_TX_EPNUM,
bmAttributes: EP_TYPE_BULK,
wMaxPacketSize: VCOM_TX_EPSIZE,
bInterval: 0x00
},
};
|