Snoopy: print correct title for OpenResource patch.
[AROS.git] / compiler / include / devices / usb_cdc.h
blobd4d94ac0fd039ea609c21997585fed5c023aba63
1 #ifndef DEVICES_USB_CDC_H
2 #define DEVICES_USB_CDC_H
3 /*
4 ** $VER: usb_cdc.h 2.0 (15.12.07)
5 **
6 ** usb definitions include file
7 **
8 ** (C) Copyright 2002-2007 Chris Hodges
9 ** All Rights Reserved
12 #include <exec/types.h>
14 #if defined(__GNUC__)
15 # pragma pack(1)
16 #endif
18 /* Usb CDC Requests (all of these target to an interface) */
19 #define UCDCR_SEND_ENCAPSULATED_COMMAND 0x00
20 #define UCDCR_GET_ENCAPSULATED_RESPONSE 0x01
21 #define UCDCR_SET_COMM_FEATURE 0x02
22 #define UCDCR_GET_COMM_FEATURE 0x03
23 #define UCDCR_CLEAR_COMM_FEATURE 0x04
24 #define UCDCR_SET_AUX_LINE_STATE 0x10
25 #define UCDCR_SET_HOOK_STATE 0x11
26 #define UCDCR_PULSE_SETUP 0x12
27 #define UCDCR_SEND_PULSE 0x13
28 #define UCDCR_SET_PULSE_TIME 0x14
29 #define UCDCR_RING_AUX_JACK 0x15
30 #define UCDCR_SET_LINE_CODING 0x20
31 #define UCDCR_GET_LINE_CODING 0x21
32 #define UCDCR_SET_CONTROL_LINE_STATE 0x22
33 #define UCDCR_SEND_BREAK 0x23
34 #define UCDCR_SET_RINGER_PARMS 0x30
35 #define UCDCR_GET_RINGER_PARMS 0x31
36 #define UCDCR_SET_OPERATION_PARMS 0x32
37 #define UCDCR_GET_OPERATION_PARMS 0x33
38 #define UCDCR_SET_LINE_PARMS 0x34
39 #define UCDCR_GET_LINE_PARMS 0x35
40 #define UCDCR_DIAL_DIGITS 0x36
41 #define UCDCR_SET_UNIT_PARAMETER 0x37
42 #define UCDCR_GET_UNIT_PARAMETER 0x38
43 #define UCDCR_CLEAR_UNIT_PARAMETER 0x39
44 #define UCDCR_GET_PROFILE 0x3A
45 #define UCDCR_SET_ETHERNET_MULTICAST_FILTERS 0x40
46 #define UCDCR_SET_ETHERNET_POWER_MANAGEMENT_PATTERN_FILTER 0x41
47 #define UCDCR_GET_ETHERNET_POWER_MANAGEMENT_PATTERN_FILTER 0x42
48 #define UCDCR_SET_ETHERNET_PACKET_FILTER 0x43
49 #define UCDCR_GET_ETHERNET_STATISTIC 0x44
50 #define UCDCR_SET_ATM_DATA_FORMAT 0x50
51 #define UCDCR_GET_ATM_DEVICE_STATISTICS 0x51
52 #define UCDCR_SET_ATM_DEFAULT_VC 0x52
53 #define UCDCR_GET_ATM_VC_STATISTICS 0x53
55 /* Usb CDC Notify Requests */
56 #define UCDCR_NETWORK_CONNECTION 0x00
57 #define UCDCR_RESPONSE_AVAILABLE 0x01
58 #define UCDCR_AUX_JACK_HOOK_STATE 0x08
59 #define UCDCR_RING_DETECT 0x09
60 #define UCDCR_SERIAL_STATE 0x20
61 #define UCDCR_CALL_STATE_CHANGE 0x28
62 #define UCDCR_LINE_STATE_CHANGE 0x29
63 #define UCDCR_CONNECTION_SPEED_CHANGE 0x2A
65 /* CDC WMC class specific descriptor subtypes */
66 #define UDST_CDC_HEADER 0x00 /* Header Functional Descriptor */
67 #define UDST_CDC_CALLMGM 0x01 /* Call Management Functional Descriptor */
68 #define UDST_CDC_ACM 0x02 /* Abstract Control Management Functional Descriptor */
69 #define UDST_CDC_DIRECTLINE 0x03 /* Direct Line Management Functional Descriptor */
70 #define UDST_CDC_PHONERING 0x04 /* Telephone Ringer Functional Descriptor */
71 #define UDST_CDC_PHONECALL 0x05 /* Telephone Call and Line State Reporting Capabilities Functional Descriptor */
72 #define UDST_CDC_UNION 0x06 /* Union Functional descriptor */
73 #define UDST_CDC_COUNTRY 0x07 /* Country Selection Functional Descriptor */
74 #define UDST_CDC_PHONEOP 0x08 /* Telephone Operational Modes Functional Descriptor */
75 #define UDST_CDC_TERMINAL 0x09 /* USB Terminal Functional Descriptor */
76 #define UDST_CDC_NETWORK 0x0a /* Network Channel Terminal Descriptor */
77 #define UDST_CDC_PROTOCOL 0x0b /* Protocol Unit Functional Descriptor */
78 #define UDST_CDC_EXTENSION 0x0c /* Extension Unit Functional Descriptor */
79 #define UDST_CDC_MCM 0x0d /* Multi-Channel Management Functional Descriptor */
80 #define UDST_CDC_CAPICTRL 0x0e /* CAPI Control Management Functional Descriptor */
81 #define UDST_CDC_ETHERNET 0x0f /* Ethernet Networking Functional Descriptor */
82 #define UDST_CDC_ATM 0x10 /* ATM Networking Functional Descriptor */
83 #define UDST_CDC_WMC 0x11 /* Wireless Handset Control Model Functional Descriptor */
84 #define UDST_CDC_MDLM 0x12 /* Mobile Direct Line Model Functional Descriptor */
85 #define UDST_CDC_MDLMDETAIL 0x13 /* MDLM Detail Functional Descriptor */
86 #define UDST_CDC_DEVMANGM 0x14 /* Device Management Model Functional Descriptor */
87 #define UDST_CDC_OBEX 0x15 /* OBEX Functional Descriptor */
88 #define UDST_CDC_CMDSET 0x16 /* Command Set Functional Descriptor */
89 #define UDST_CDC_CMDSETDETAIL 0x17 /* Command Set Detail Functional Descriptor */
90 #define UDST_CDC_TCM 0x18 /* Telephone Control Model Functional Descriptor */
92 /* CDC Control Interface subclasses */
93 #define CDC_DLCM_SUBCLASS 0x01 /* Direct Line Control Model */
94 #define CDC_ACM_SUBCLASS 0x02 /* Abstract Control Model */
95 #define CDC_TCM_SUBCLASS 0x03 /* Telephone Control Model */
96 #define CDC_MCCM_SUBCLASS 0x04 /* Multi-Channel Control Model */
97 #define CDC_CAPICM_SUBCLASS 0x05 /* CAPI Control Model */
98 #define CDC_ETHCM_SUBCLASS 0x06 /* Ethernet Networking Control Model */
99 #define CDC_ATMCM_SUBCLASS 0x07 /* ATM Networking Control Model */
100 #define CDC_WHCM_SUBCLASS 0x08 /* Wireless Handset Control Model */
101 #define CDC_DEVMANGM_SUBCLASS 0x09 /* Device Management Model */
102 #define CDC_MDLM_SUBCLASS 0x0a /* Mobile Direct Line Model */
103 #define CDC_OBEX_SUBCLASS 0x0b /* OBEX Model */
105 /* CDC Control Interface protocols */
106 #define CDC_PROTO_USB 0x00 /* no class specific protocol */
107 #define CDC_PROTO_HAYES 0x01 /* common AT commands */
108 #define CDC_PROTO_PCCA101 0x02 /* AT Commands defined by [PCCA101] */
109 #define CDC_PROTO_PCCA101O 0x03 /* AT Commands defined by [PCCA101] + [PCCA101-O] */
110 #define CDC_PROTO_GSM0707 0x04 /* AT Commands defined by [GSM07.07] */
111 #define CDC_PROTO_3GPP27007 0x05 /* AT Commands defined by [3GPP27.007] */
112 #define CDC_PROTO_CS00170 0x06 /* AT Commands defined by [C-S0017-0] */
113 #define CDC_PROTO_EXTERNAL 0xfe /* External Protocol: Commands defined by Command Set functional descriptor */
115 /* CDC Data Interface protocols */
116 #define CDC_PROTO_ISDNBRI 0x30 /* I.430 Physical interface protocol for ISDN BRI */
117 #define CDC_PROTO_HDLC 0x31 /* ISO/IEC 3309-1993 HDLC */
118 #define CDC_PROTO_TRANSP 0x32 /* Transparent */
119 #define CDC_PROTO_Q921M 0x50 /* Management protocol for Q.921 data link protocol */
120 #define CDC_PROTO_Q921D 0x51 /* Data link protocol for Q.931 */
121 #define CDC_PROTO_Q921TM 0x52 /* TEI-multiplexor for Q.921 data link protocol */
122 #define CDC_PROTO_V42BIS 0x90 /* V.42bis Data compression procedures */
123 #define CDC_PROTO_EUROISDN 0x91 /* Q.931 Euro ISDN */
124 #define CDC_PROTO_V120 0x92 /* V.24 rate adaption to ISDN */
125 #define CDC_PROTO_CAPI20 0x93 /* CAPI Commands */
126 #define CDC_PROTO_HOST 0xFD /* host based driver */
127 #define CDC_PROTO_CDC 0xFE /* protocol described using protocol unit descriptors */
129 /* Usb CDC Class specific stuff */
131 /* actual descriptors */
133 struct UsbCDCHeaderDesc
135 UBYTE bFunctionLength; /* total size of the descriptor */
136 UBYTE bDescriptorType; /* Descriptor Type */
137 UBYTE bDescriptorSubtype; /* Descriptor Subtype (CDC_FD_HEADER) */
138 UBYTE bcdCDC0; /* BCD Version lowbyte */
139 UBYTE bcdCDC1; /* BCD Version highbyte */
142 struct UsbCDCCallMgmDesc
144 UBYTE bFunctionLength; /* total size of the descriptor */
145 UBYTE bDescriptorType; /* Descriptor Type */
146 UBYTE bDescriptorSubtype; /* Descriptor Subtype (CDC_FD_CALLMGM) */
147 UBYTE bmCapabilities; /* Capabilities (bit 0 handles cm, bit 1 data interface) */
148 UBYTE bDataInterface; /* interface number for call management */
151 struct UsbCDCACMDesc
153 UBYTE bFunctionLength; /* total size of the descriptor */
154 UBYTE bDescriptorType; /* Descriptor Type */
155 UBYTE bDescriptorSubtype; /* Descriptor Subtype (CDC_FD_ACM) */
156 UBYTE bmCapabilities; /* Capabilities */
159 struct UsbCDCDLDesc
161 UBYTE bFunctionLength; /* total size of the descriptor */
162 UBYTE bDescriptorType; /* Descriptor Type */
163 UBYTE bDescriptorSubtype; /* Descriptor Subtype (CDC_FD_DirectLine) */
164 UBYTE bmCapabilities; /* Capabilities */
167 struct UsbCDCRingerDesc
169 UBYTE bFunctionLength; /* total size of the descriptor */
170 UBYTE bDescriptorType; /* Descriptor Type */
171 UBYTE bDescriptorSubtype; /* Descriptor Subtype (CDC_FD_PHONERING) */
172 UBYTE bRingerVolSteps; /* Volume scale */
173 UBYTE bNumRingerPatterns; /* Number of ring patterns supported */
176 struct UsbCDCPhoneOpDesc
178 UBYTE bFunctionLength; /* total size of the descriptor */
179 UBYTE bDescriptorType; /* Descriptor Type */
180 UBYTE bDescriptorSubtype; /* Descriptor Subtype (CDC_FD_PHONEOP) */
181 UBYTE bmCapabilities; /* Capabilities */
184 struct UsbCDCPhoneCallDesc
186 UBYTE bFunctionLength; /* total size of the descriptor */
187 UBYTE bDescriptorType; /* Descriptor Type */
188 UBYTE bDescriptorSubtype; /* Descriptor Subtype (CDC_FD_PHONECALL) */
189 ULONG bmCapabilities; /* Capabilities */
192 struct UsbCDCUnionDesc
194 UBYTE bFunctionLength; /* total size of the descriptor */
195 UBYTE bDescriptorType; /* Descriptor Type */
196 UBYTE bDescriptorSubtype; /* Descriptor Subtype (CDC_FD_UNION) */
197 UBYTE bMasterInterface; /* interface number of master interface */
198 UBYTE bSlaveInterface0; /* interface number of the first slave */
201 struct UsbCDCCountryDesc
203 UBYTE bFunctionLength; /* total size of the descriptor */
204 UBYTE bDescriptorType; /* Descriptor Type */
205 UBYTE bDescriptorSubtype; /* Descriptor Subtype (CDC_FD_COUNTRY) */
206 UBYTE iCountryCodeRelDate; /* Index of a release date string */
207 UWORD wCountryCode0; /* Country code in hex */
210 struct UsbCDCTerminalDesc
212 UBYTE bFunctionLength; /* total size of the descriptor */
213 UBYTE bDescriptorType; /* Descriptor Type */
214 UBYTE bDescriptorSubtype; /* Descriptor Subtype (CDC_FD_TERMINAL) */
215 UBYTE bEntityId; /* constant identifying the terminal */
216 UBYTE iName; /* string index */
217 UBYTE bChannelIndex; /* channel index of associated network channel */
218 UBYTE bPhysicalInterface; /* type of physical interface (0=None, 1=ISDN) */
221 struct UsbCDCProtocolDesc
223 UBYTE bFunctionLength; /* total size of the descriptor */
224 UBYTE bDescriptorType; /* Descriptor Type */
225 UBYTE bDescriptorSubtype; /* Descriptor Subtype (CDC_FD_PROTOCOL) */
226 UBYTE bEntityId; /* constant identifying the unit */
227 UBYTE bProtocol; /* Protocol code */
228 UBYTE bChildId0; /* first ID of lower terminal or unit */
231 struct UsbCDCExtensionDesc
233 UBYTE bFunctionLength; /* total size of the descriptor */
234 UBYTE bDescriptorType; /* Descriptor Type */
235 UBYTE bDescriptorSubtype; /* Descriptor Subtype (CDC_FD_EXTENSION) */
236 UBYTE bEntityId; /* constant identifying the unit */
237 UBYTE bExtensionCode; /* vendor specific code */
238 UBYTE iName; /* string index */
239 UBYTE bChildId0; /* first ID of lower terminal or unit */
242 struct UsbCDCMCMDesc
244 UBYTE bFunctionLength; /* total size of the descriptor */
245 UBYTE bDescriptorType; /* Descriptor Type */
246 UBYTE bDescriptorSubtype; /* Descriptor Subtype (CDC_FD_MCM) */
247 UBYTE bmCapabilities; /* Capabilities */
250 struct UsbCDCCAPICtrlDesc
252 UBYTE bFunctionLength; /* total size of the descriptor */
253 UBYTE bDescriptorType; /* Descriptor Type */
254 UBYTE bDescriptorSubtype; /* Descriptor Subtype (CDC_FD_CAPICTRL) */
255 UBYTE bmCapabilities; /* Capabilities */
258 struct UsbCDCEthernetDesc
260 UBYTE bFunctionLength; /* total size of the descriptor */
261 UBYTE bDescriptorType; /* Descriptor Type */
262 UBYTE bDescriptorSubtype; /* Descriptor Subtype (CDC_FD_ETHERNET) */
263 UBYTE iMACAddress; /* index of string descriptor with MAC */
264 ULONG bmEthernetStatistics; /* bitmap of statistics supported */
265 UWORD wMaxSegmentSize; /* MTU */
266 UWORD wNumberMCFilters; /* Number of multicast filters */
267 UBYTE bNumberPowerFilters; /* Number of pattern filters for wake-up */
270 struct UsbCDCATMDesc
272 UBYTE bFunctionLength; /* total size of the descriptor */
273 UBYTE bDescriptorType; /* Descriptor Type */
274 UBYTE bDescriptorSubtype; /* Descriptor Subtype (CDC_FD_ATM) */
275 UBYTE iEndSystemIdentifier; /* string index */
276 UBYTE bmDataCapabilities; /* Capabilities */
277 UBYTE bmATMDeviceStatistics; /* bitmap of statistics supported */
278 UWORD wType2MaxSegmentSize; /* MTU of Type 2 segments */
279 UWORD wType3MaxSegmentSize; /* MTU of Type 3 segments */
280 UWORD wMaxVC; /* max number of virtual circuits */
283 /* CDC ACM specific stuff */
285 struct UsbCDCLineCoding
287 ULONG dwDTERate; /* Baud rate */
288 UBYTE bCharFormat; /* Stop bits 0->1, 1->1.5, 2->2 */
289 UBYTE bParityType; /* Party (0=None, 1=Odd, 2=Even, 3=Mark, 4=Space) */
290 UBYTE bDataBits; /* Databits (5,6,7,8 or 16) */
293 #if defined(__GNUC__)
294 # pragma pack()
295 #endif
297 #endif /* DEVICES_USB_CDC_H */