xref: /nrf52832-nimble/rt-thread/components/drivers/usb/usbdevice/class/cdc.h (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero /*
2*10465441SEvalZero  * Copyright (c) 2006-2018, RT-Thread Development Team
3*10465441SEvalZero  *
4*10465441SEvalZero  * SPDX-License-Identifier: Apache-2.0
5*10465441SEvalZero  *
6*10465441SEvalZero  * Change Logs:
7*10465441SEvalZero  * Date           Author       Notes
8*10465441SEvalZero  * 2012-10-03     Yi Qiu       first version
9*10465441SEvalZero  * 2012-12-12     heyuanjie87  add CDC endpoints collection
10*10465441SEvalZero  */
11*10465441SEvalZero 
12*10465441SEvalZero #ifndef  __CDC_H__
13*10465441SEvalZero #define  __CDC_H__
14*10465441SEvalZero 
15*10465441SEvalZero #define USB_CDC_BUFSIZE                 0x40
16*10465441SEvalZero 
17*10465441SEvalZero #define USB_CDC_CLASS_COMM              0x02
18*10465441SEvalZero #define USB_CDC_CLASS_DATA              0x0A
19*10465441SEvalZero 
20*10465441SEvalZero #define USB_CDC_SUBCLASS_NONE           0x00
21*10465441SEvalZero #define USB_CDC_SUBCLASS_DLCM           0x01
22*10465441SEvalZero #define USB_CDC_SUBCLASS_ACM            0x02
23*10465441SEvalZero #define USB_CDC_SUBCLASS_TCM            0x03
24*10465441SEvalZero #define USB_CDC_SUBCLASS_MCCM           0x04
25*10465441SEvalZero #define USB_CDC_SUBCLASS_CCM            0x05
26*10465441SEvalZero #define USB_CDC_SUBCLASS_ETH            0x06
27*10465441SEvalZero #define USB_CDC_SUBCLASS_ATM            0x07
28*10465441SEvalZero #define USB_CDC_SUBCLASS_EEM            0x0C
29*10465441SEvalZero 
30*10465441SEvalZero #define USB_CDC_PROTOCOL_NONE           0x00
31*10465441SEvalZero #define USB_CDC_PROTOCOL_V25TER         0x01
32*10465441SEvalZero #define USB_CDC_PROTOCOL_I430           0x30
33*10465441SEvalZero #define USB_CDC_PROTOCOL_HDLC           0x31
34*10465441SEvalZero #define USB_CDC_PROTOCOL_TRANS          0x32
35*10465441SEvalZero #define USB_CDC_PROTOCOL_Q921M          0x50
36*10465441SEvalZero #define USB_CDC_PROTOCOL_Q921           0x51
37*10465441SEvalZero #define USB_CDC_PROTOCOL_Q921TM         0x52
38*10465441SEvalZero #define USB_CDC_PROTOCOL_V42BIS         0x90
39*10465441SEvalZero #define USB_CDC_PROTOCOL_Q931           0x91
40*10465441SEvalZero #define USB_CDC_PROTOCOL_V120           0x92
41*10465441SEvalZero #define USB_CDC_PROTOCOL_CAPI20         0x93
42*10465441SEvalZero #define USB_CDC_PROTOCOL_HOST           0xFD
43*10465441SEvalZero #define USB_CDC_PROTOCOL_PUFD           0xFE
44*10465441SEvalZero #define USB_CDC_PROTOCOL_VENDOR         0xFF
45*10465441SEvalZero #define USB_CDC_PROTOCOL_EEM            0x07
46*10465441SEvalZero 
47*10465441SEvalZero #define USB_CDC_CS_INTERFACE            0x24
48*10465441SEvalZero #define USB_CDC_CS_ENDPOINT             0x25
49*10465441SEvalZero 
50*10465441SEvalZero #define USB_CDC_SCS_HEADER              0x00
51*10465441SEvalZero #define USB_CDC_SCS_CALL_MGMT           0x01
52*10465441SEvalZero #define USB_CDC_SCS_ACM                 0x02
53*10465441SEvalZero #define USB_CDC_SCS_UNION               0x06
54*10465441SEvalZero #define USB_CDC_SCS_ETH                 0x0F
55*10465441SEvalZero 
56*10465441SEvalZero #define CDC_SEND_ENCAPSULATED_COMMAND   0x00
57*10465441SEvalZero #define CDC_GET_ENCAPSULATED_RESPONSE   0x01
58*10465441SEvalZero #define CDC_SET_COMM_FEATURE            0x02
59*10465441SEvalZero #define CDC_GET_COMM_FEATURE            0x03
60*10465441SEvalZero #define CDC_CLEAR_COMM_FEATURE          0x04
61*10465441SEvalZero #define CDC_SET_AUX_LINE_STATE          0x10
62*10465441SEvalZero #define CDC_SET_HOOK_STATE              0x11
63*10465441SEvalZero #define CDC_PULSE_SETUP                 0x12
64*10465441SEvalZero #define CDC_SEND_PULSE                  0x13
65*10465441SEvalZero #define CDC_SET_PULSE_TIME              0x14
66*10465441SEvalZero #define CDC_RING_AUX_JACK               0x15
67*10465441SEvalZero #define CDC_SET_LINE_CODING             0x20
68*10465441SEvalZero #define CDC_GET_LINE_CODING             0x21
69*10465441SEvalZero #define CDC_SET_CONTROL_LINE_STATE      0x22
70*10465441SEvalZero #define CDC_SEND_BREAK                  0x23
71*10465441SEvalZero #define CDC_SET_RINGER_PARMS            0x30
72*10465441SEvalZero #define CDC_GET_RINGER_PARMS            0x31
73*10465441SEvalZero #define CDC_SET_OPERATION_PARMS         0x32
74*10465441SEvalZero #define CDC_GET_OPERATION_PARMS         0x33
75*10465441SEvalZero #define CDC_SET_LINE_PARMS              0x34
76*10465441SEvalZero #define CDC_GET_LINE_PARMS              0x35
77*10465441SEvalZero #define CDC_DIAL_DIGITS                 0x36
78*10465441SEvalZero #define CDC_SET_UNIT_PARAMETER          0x37
79*10465441SEvalZero #define CDC_GET_UNIT_PARAMETER          0x38
80*10465441SEvalZero #define CDC_CLEAR_UNIT_PARAMETER        0x39
81*10465441SEvalZero #define CDC_GET_PROFILE                 0x3A
82*10465441SEvalZero #define CDC_SET_ETH_MULTICAST_FILTERS   0x40
83*10465441SEvalZero #define CDC_SET_ETH_POWER_MGMT_FILT     0x41
84*10465441SEvalZero #define CDC_GET_ETH_POWER_MGMT_FILT     0x42
85*10465441SEvalZero #define CDC_SET_ETH_PACKET_FILTER       0x43
86*10465441SEvalZero #define CDC_GET_ETH_STATISTIC           0x44
87*10465441SEvalZero #define CDC_SET_ATM_DATA_FORMAT         0x50
88*10465441SEvalZero #define CDC_GET_ATM_DEVICE_STATISTICS   0x51
89*10465441SEvalZero #define CDC_SET_ATM_DEFAULT_VC          0x52
90*10465441SEvalZero #define CDC_GET_ATM_VC_STATISTICS       0x53
91*10465441SEvalZero 
92*10465441SEvalZero #pragma pack(1)
93*10465441SEvalZero 
94*10465441SEvalZero struct ucdc_header_descriptor
95*10465441SEvalZero {
96*10465441SEvalZero     rt_uint8_t length;
97*10465441SEvalZero     rt_uint8_t type;
98*10465441SEvalZero     rt_uint8_t subtype;
99*10465441SEvalZero     rt_uint16_t bcd;
100*10465441SEvalZero };
101*10465441SEvalZero typedef struct ucdc_header_descriptor* ucdc_hdr_desc_t;
102*10465441SEvalZero 
103*10465441SEvalZero struct ucdc_acm_descriptor
104*10465441SEvalZero {
105*10465441SEvalZero     rt_uint8_t length;
106*10465441SEvalZero     rt_uint8_t type;
107*10465441SEvalZero     rt_uint8_t subtype;
108*10465441SEvalZero     rt_uint8_t capabilties;
109*10465441SEvalZero };
110*10465441SEvalZero typedef struct ucdc_acm_descriptor* ucdc_acm_desc_t;
111*10465441SEvalZero 
112*10465441SEvalZero struct ucdc_call_mgmt_descriptor
113*10465441SEvalZero {
114*10465441SEvalZero     rt_uint8_t length;
115*10465441SEvalZero     rt_uint8_t type;
116*10465441SEvalZero     rt_uint8_t subtype;
117*10465441SEvalZero     rt_uint8_t capabilties;
118*10465441SEvalZero     rt_uint8_t data_interface;
119*10465441SEvalZero };
120*10465441SEvalZero typedef struct ucdc_call_mgmt_descriptor* ucdc_call_mgmt_desc_t;
121*10465441SEvalZero 
122*10465441SEvalZero struct ucdc_union_descriptor
123*10465441SEvalZero {
124*10465441SEvalZero     rt_uint8_t length;
125*10465441SEvalZero     rt_uint8_t type;
126*10465441SEvalZero     rt_uint8_t subtype;
127*10465441SEvalZero     rt_uint8_t master_interface;
128*10465441SEvalZero     rt_uint8_t slave_interface0;
129*10465441SEvalZero };
130*10465441SEvalZero typedef struct ucdc_union_descriptor* ucdc_union_desc_t;
131*10465441SEvalZero 
132*10465441SEvalZero struct ucdc_comm_descriptor
133*10465441SEvalZero {
134*10465441SEvalZero #ifdef RT_USB_DEVICE_COMPOSITE
135*10465441SEvalZero     struct uiad_descriptor iad_desc;
136*10465441SEvalZero #endif
137*10465441SEvalZero     struct uinterface_descriptor intf_desc;
138*10465441SEvalZero     struct ucdc_header_descriptor hdr_desc;
139*10465441SEvalZero     struct ucdc_call_mgmt_descriptor call_mgmt_desc;
140*10465441SEvalZero     struct ucdc_acm_descriptor acm_desc;
141*10465441SEvalZero     struct ucdc_union_descriptor union_desc;
142*10465441SEvalZero     struct uendpoint_descriptor ep_desc;
143*10465441SEvalZero };
144*10465441SEvalZero typedef struct ucdc_comm_descriptor* ucdc_comm_desc_t;
145*10465441SEvalZero 
146*10465441SEvalZero struct ucdc_enet_descriptor
147*10465441SEvalZero {
148*10465441SEvalZero   rt_uint8_t    bFunctionLength;
149*10465441SEvalZero   rt_uint8_t    bDescriptorType;
150*10465441SEvalZero   rt_uint8_t    bDescriptorSubtype;
151*10465441SEvalZero   rt_uint8_t    iMACAddress;
152*10465441SEvalZero   rt_uint8_t    bmEthernetStatistics[4];
153*10465441SEvalZero   rt_uint16_t   wMaxSegmentSize;
154*10465441SEvalZero   rt_uint16_t   wMCFilters;
155*10465441SEvalZero   rt_uint8_t    bNumberPowerFilters;
156*10465441SEvalZero };
157*10465441SEvalZero struct ucdc_eth_descriptor
158*10465441SEvalZero {
159*10465441SEvalZero #ifdef RT_USB_DEVICE_COMPOSITE
160*10465441SEvalZero     struct uiad_descriptor iad_desc;
161*10465441SEvalZero #endif
162*10465441SEvalZero     struct uinterface_descriptor    intf_desc;
163*10465441SEvalZero     struct ucdc_header_descriptor   hdr_desc;
164*10465441SEvalZero     struct ucdc_union_descriptor    union_desc;
165*10465441SEvalZero     struct ucdc_enet_descriptor     enet_desc;
166*10465441SEvalZero     struct uendpoint_descriptor     ep_desc;
167*10465441SEvalZero };
168*10465441SEvalZero typedef struct ucdc_eth_descriptor* ucdc_eth_desc_t;
169*10465441SEvalZero 
170*10465441SEvalZero struct ucdc_data_descriptor
171*10465441SEvalZero {
172*10465441SEvalZero     struct uinterface_descriptor intf_desc;
173*10465441SEvalZero     struct uendpoint_descriptor ep_out_desc;
174*10465441SEvalZero     struct uendpoint_descriptor ep_in_desc;
175*10465441SEvalZero };
176*10465441SEvalZero typedef struct ucdc_data_descriptor* ucdc_data_desc_t;
177*10465441SEvalZero 
178*10465441SEvalZero struct ucdc_line_coding
179*10465441SEvalZero {
180*10465441SEvalZero     rt_uint32_t dwDTERate;
181*10465441SEvalZero     rt_uint8_t bCharFormat;
182*10465441SEvalZero     rt_uint8_t bParityType;
183*10465441SEvalZero     rt_uint8_t bDataBits;
184*10465441SEvalZero };
185*10465441SEvalZero typedef struct ucdc_line_coding* ucdc_line_coding_t;
186*10465441SEvalZero 
187*10465441SEvalZero struct cdc_eps
188*10465441SEvalZero {
189*10465441SEvalZero     uep_t ep_out;
190*10465441SEvalZero     uep_t ep_in;
191*10465441SEvalZero     uep_t ep_cmd;
192*10465441SEvalZero };
193*10465441SEvalZero typedef struct cdc_eps* cdc_eps_t;
194*10465441SEvalZero 
195*10465441SEvalZero 
196*10465441SEvalZero 
197*10465441SEvalZero struct ucdc_management_element_notifications
198*10465441SEvalZero {
199*10465441SEvalZero     rt_uint8_t bmRequestType;
200*10465441SEvalZero     rt_uint8_t bNotificatinCode;
201*10465441SEvalZero     rt_uint16_t wValue;
202*10465441SEvalZero     rt_uint16_t wIndex;
203*10465441SEvalZero     rt_uint16_t wLength;
204*10465441SEvalZero };
205*10465441SEvalZero typedef struct ucdc_management_element_notifications * ucdc_mg_notifications_t;
206*10465441SEvalZero 
207*10465441SEvalZero struct ucdc_connection_speed_change_data
208*10465441SEvalZero {
209*10465441SEvalZero     rt_uint32_t down_bit_rate;
210*10465441SEvalZero     rt_uint32_t up_bit_rate;
211*10465441SEvalZero };
212*10465441SEvalZero typedef struct connection_speed_change_data * connect_speed_data_t;
213*10465441SEvalZero 
214*10465441SEvalZero enum ucdc_notification_code
215*10465441SEvalZero {
216*10465441SEvalZero     UCDC_NOTIFI_NETWORK_CONNECTION      = 0x00,
217*10465441SEvalZero     UCDC_NOTIFI_RESPONSE_AVAILABLE      = 0x01,
218*10465441SEvalZero     UCDC_NOTIFI_AUX_JACK_HOOK_STATE     = 0x08,
219*10465441SEvalZero     UCDC_NOTIFI_RING_DETECT             = 0x09,
220*10465441SEvalZero     UCDC_NOTIFI_SERIAL_STATE            = 0x20,
221*10465441SEvalZero     UCDC_NOTIFI_CALL_STATE_CHANGE       = 0x28,
222*10465441SEvalZero     UCDC_NOTIFI_LINE_STATE_CHANGE       = 0x29,
223*10465441SEvalZero     UCDC_NOTIFI_CONNECTION_SPEED_CHANGE = 0x2A,
224*10465441SEvalZero };
225*10465441SEvalZero typedef enum ucdc_notification_code ucdc_notification_code_t;
226*10465441SEvalZero 
227*10465441SEvalZero #pragma pack()
228*10465441SEvalZero 
229*10465441SEvalZero #endif
230