| LPCOpen Platform v1.03 LPCOpen Platform for NXP LPC Microcontrollers

- Main Page
- Modules
- Data Structures
- Files
- Related Pages

- File List
- Globals

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
CDCClassCommon.h
Go to the documentation of this file.
1 /*
2 * @brief Common definitions and declarations for the library USB CDC Class driver
3 *
4 * @note
5 * Copyright(C) NXP Semiconductors, 2012
6 * Copyright(C) Dean Camera, 2011, 2012
7 * All rights reserved.
8 *
9 * @par
10 * Software that is described herein is for illustrative purposes only
11 * which provides customers with programming information regarding the
12 * LPC products. This software is supplied "AS IS" without any warranties of
13 * any kind, and NXP Semiconductors and its licensor disclaim any and
14 * all warranties, express or implied, including all implied warranties of
15 * merchantability, fitness for a particular purpose and non-infringement of
16 * intellectual property rights. NXP Semiconductors assumes no responsibility
17 * or liability for the use of the software, conveys no license or rights under any
18 * patent, copyright, mask work right, or any other intellectual property rights in
19 * or to any products. NXP Semiconductors reserves the right to make changes
20 * in the software without notification. NXP Semiconductors also makes no
21 * representation or warranty that such application will be suitable for the
22 * specified use without further testing or modification.
23 *
24 * @par
25 * Permission to use, copy, modify, and distribute this software and its
26 * documentation is hereby granted, under NXP Semiconductors' and its
27 * licensor's relevant copyrights in the software, without fee, provided that it
28 * is used in conjunction with NXP Semiconductors microcontrollers. This
29 * copyright, permission, and disclaimer notice must appear in all copies of
30 * this code.
31 */
32
43 #ifndef _CDC_CLASS_COMMON_H_
44 #define _CDC_CLASS_COMMON_H_
45
46 /* Includes: */
47 #include "../../Core/StdDescriptors.h"
48
49 /* Enable C linkage for C++ Compilers: */
50 #if defined(__cplusplus)
51 extern "C" {
52 #endif
53
54 /* Preprocessor Checks: */
55 #if !defined(__INCLUDE_FROM_CDC_DRIVER)
56 #error Do not include this file directly. Include LPCUSBlib/Drivers/USB.h instead.
57 #endif
58
59 /* Macros: */
65 #define CDC_CONTROL_LINE_OUT_DTR (1 << 0)
66
70 #define CDC_CONTROL_LINE_OUT_RTS (1 << 1)
71
75 #define CDC_CONTROL_LINE_IN_DCD (1 << 0)
76
80 #define CDC_CONTROL_LINE_IN_DSR (1 << 1)
81
85 #define CDC_CONTROL_LINE_IN_BREAK (1 << 2)
86
90 #define CDC_CONTROL_LINE_IN_RING (1 << 3)
91
95 #define CDC_CONTROL_LINE_IN_FRAMEERROR (1 << 4)
96
100 #define CDC_CONTROL_LINE_IN_PARITYERROR (1 << 5)
101
105 #define CDC_CONTROL_LINE_IN_OVERRUNERROR (1 << 6)
106
107
115 #define CDC_FUNCTIONAL_DESCRIPTOR(DataSize) \
116 struct \
117 { \
118 USB_Descriptor_Header_t Header; \
119 uint8_t SubType; \
120 uint8_t Data[DataSize]; \
121 }
122
123 /* Enums: */
127 enum CDC_Descriptor_ClassSubclassProtocol_t
128 {
129 CDC_CSCP_CDCClass = 0x02,
132 CDC_CSCP_NoSpecificSubclass = 0x00,
135 CDC_CSCP_ACMSubclass = 0x02,
138 CDC_CSCP_ATCommandProtocol = 0x01,
141 CDC_CSCP_NoSpecificProtocol = 0x00,
144 CDC_CSCP_VendorSpecificProtocol = 0xFF,
147 CDC_CSCP_CDCDataClass = 0x0A,
150 CDC_CSCP_NoDataSubclass = 0x00,
153 CDC_CSCP_NoDataProtocol = 0x00,
156 };
157
159 enum CDC_ClassRequests_t
160 {
161 CDC_REQ_SendEncapsulatedCommand = 0x00,
162 CDC_REQ_GetEncapsulatedResponse = 0x01,
163 CDC_REQ_SetLineEncoding = 0x20,
164 CDC_REQ_GetLineEncoding = 0x21,
165 CDC_REQ_SetControlLineState = 0x22,
166 CDC_REQ_SendBreak = 0x23,
167 };
168
170 enum CDC_ClassNotifications_t
171 {
172 CDC_NOTIF_SerialState = 0x20,
177 };
178
180 enum CDC_DescriptorSubtypes_t
181 {
182 CDC_DSUBTYPE_CSInterface_Header = 0x00,
183 CDC_DSUBTYPE_CSInterface_CallManagement = 0x01,
184 CDC_DSUBTYPE_CSInterface_ACM = 0x02,
185 CDC_DSUBTYPE_CSInterface_DirectLine = 0x03,
186 CDC_DSUBTYPE_CSInterface_TelephoneRinger = 0x04,
187 CDC_DSUBTYPE_CSInterface_TelephoneCall = 0x05,
188 CDC_DSUBTYPE_CSInterface_Union = 0x06,
189 CDC_DSUBTYPE_CSInterface_CountrySelection = 0x07,
190 CDC_DSUBTYPE_CSInterface_TelephoneOpModes = 0x08,
191 CDC_DSUBTYPE_CSInterface_USBTerminal = 0x09,
192 CDC_DSUBTYPE_CSInterface_NetworkChannel = 0x0A,
193 CDC_DSUBTYPE_CSInterface_ProtocolUnit = 0x0B,
194 CDC_DSUBTYPE_CSInterface_ExtensionUnit = 0x0C,
195 CDC_DSUBTYPE_CSInterface_MultiChannel = 0x0D,
196 CDC_DSUBTYPE_CSInterface_CAPI = 0x0E,
197 CDC_DSUBTYPE_CSInterface_Ethernet = 0x0F,
198 CDC_DSUBTYPE_CSInterface_ATM = 0x10,
199 };
200
202 enum CDC_LineEncodingFormats_t
203 {
204 CDC_LINEENCODING_OneStopBit = 0,
205 CDC_LINEENCODING_OneAndAHalfStopBits = 1,
206 CDC_LINEENCODING_TwoStopBits = 2,
207 };
208
210 enum CDC_LineEncodingParity_t
211 {
212 CDC_PARITY_None = 0,
213 CDC_PARITY_Odd = 1,
214 CDC_PARITY_Even = 2,
215 CDC_PARITY_Mark = 3,
216 CDC_PARITY_Space = 4,
217 };
218
219 /* Type Defines: */
230 typedef ATTR_IAR_PACKED struct
231 {
232 USB_Descriptor_Header_t Header;
233 uint8_t Subtype;
236 uint16_t CDCSpecification;
239 } ATTR_PACKED USB_CDC_Descriptor_FunctionalHeader_t;
240
252 typedef ATTR_IAR_PACKED struct
253 {
254 uint8_t bFunctionLength;
255 uint8_t bDescriptorType;
258 uint8_t bDescriptorSubType;
261 uint16_t bcdCDC;
262 } ATTR_PACKED USB_CDC_StdDescriptor_FunctionalHeader_t;
263
273 typedef ATTR_IAR_PACKED struct
274 {
275 USB_Descriptor_Header_t Header;
276 uint8_t Subtype;
279 uint8_t Capabilities;
283 } ATTR_PACKED USB_CDC_Descriptor_FunctionalACM_t;
284
295 typedef ATTR_IAR_PACKED struct
296 {
297 uint8_t bFunctionLength;
298 uint8_t bDescriptorType;
301 uint8_t bDescriptorSubType;
304 uint8_t bmCapabilities;
308 } ATTR_PACKED USB_CDC_StdDescriptor_FunctionalACM_t;
309
319 typedef ATTR_IAR_PACKED struct
320 {
321 USB_Descriptor_Header_t Header;
322 uint8_t Subtype;
325 uint8_t MasterInterfaceNumber;
326 uint8_t SlaveInterfaceNumber;
327 } ATTR_PACKED USB_CDC_Descriptor_FunctionalUnion_t;
328
339 typedef ATTR_IAR_PACKED struct
340 {
341 uint8_t bFunctionLength;
342 uint8_t bDescriptorType;
345 uint8_t bDescriptorSubType;
348 uint8_t bMasterInterface;
349 uint8_t bSlaveInterface0;
350 } ATTR_PACKED USB_CDC_StdDescriptor_FunctionalUnion_t;
351
359 typedef ATTR_IAR_PACKED struct
360 {
361 uint32_t BaudRateBPS;
362 uint8_t CharFormat;
365 uint8_t ParityType;
368 uint8_t DataBits;
369 } ATTR_PACKED CDC_LineEncoding_t;
370
371 /* Disable C linkage for C++ Compilers: */
372 #if defined(__cplusplus)
373 }
374 #endif
375
376 #endif
377