X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/713670043a1edb714461fc83c2b8817f3db99961..d41cd9a41aca81eaa21e65e6c53672fe604fa3d5:/LUFA/Drivers/USB/Class/Common/CDC.h diff --git a/LUFA/Drivers/USB/Class/Common/CDC.h b/LUFA/Drivers/USB/Class/Common/CDC.h index 99a1d8f9c..aaaf12144 100644 --- a/LUFA/Drivers/USB/Class/Common/CDC.h +++ b/LUFA/Drivers/USB/Class/Common/CDC.h @@ -1,21 +1,21 @@ /* LUFA Library Copyright (C) Dean Camera, 2010. - + dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com + www.lufa-lib.org */ /* Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - Permission to use, copy, modify, distribute, and sell this + Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in + without fee, provided that the above copyright notice appear in all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the software without specific, written prior permission. The author disclaim all warranties with regard to this @@ -33,8 +33,8 @@ * * Common definitions and declarations for the library USB CDC Class driver. * - * \note This file should not be included directly. It is automatically included as needed by the class driver - * dispatch header located in LUFA/Drivers/USB/Class/CDC.h. + * \note This file should not be included directly. It is automatically included as needed by the USB module driver + * dispatch header located in LUFA/Drivers/USB.h. */ /** \ingroup Group_USBClassCDC @@ -46,12 +46,12 @@ * * @{ */ - + #ifndef _CDC_CLASS_COMMON_H_ #define _CDC_CLASS_COMMON_H_ /* Includes: */ - #include "../../USB.h" + #include "../../HighLevel/StdDescriptors.h" #include @@ -62,54 +62,57 @@ /* Preprocessor Checks: */ #if !defined(__INCLUDE_FROM_CDC_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/Class/CDC.h instead. + #error Do not include this file directly. Include LUFA/Drivers/USB.h instead. #endif - + /* Macros: */ - /** Mask for the DTR handshake line for use with the REQ_SetControlLineState class-specific request + /** \name Virtual Control Line Masks */ + //@{ + /** Mask for the DTR handshake line for use with the \ref CDC_REQ_SetControlLineState class-specific request * from the host, to indicate that the DTR line state should be high. */ #define CDC_CONTROL_LINE_OUT_DTR (1 << 0) - /** Mask for the RTS handshake line for use with the REQ_SetControlLineState class-specific request - * from the host, to indicate that theRTS line state should be high. + /** Mask for the RTS handshake line for use with the \ref CDC_REQ_SetControlLineState class-specific request + * from the host, to indicate that the RTS line state should be high. */ #define CDC_CONTROL_LINE_OUT_RTS (1 << 1) - - /** Mask for the DCD handshake line for use with the a NOTIF_SerialState class-specific notification + + /** Mask for the DCD handshake line for use with the \ref CDC_NOTIF_SerialState class-specific notification * from the device to the host, to indicate that the DCD line state is currently high. */ #define CDC_CONTROL_LINE_IN_DCD (1 << 0) - /** Mask for the DSR handshake line for use with the a NOTIF_SerialState class-specific notification + /** Mask for the DSR handshake line for use with the \ref CDC_NOTIF_SerialState class-specific notification * from the device to the host, to indicate that the DSR line state is currently high. */ #define CDC_CONTROL_LINE_IN_DSR (1 << 1) - /** Mask for the BREAK handshake line for use with the a NOTIF_SerialState class-specific notification + /** Mask for the BREAK handshake line for use with the \ref CDC_NOTIF_SerialState class-specific notification * from the device to the host, to indicate that the BREAK line state is currently high. */ #define CDC_CONTROL_LINE_IN_BREAK (1 << 2) - /** Mask for the RING handshake line for use with the a NOTIF_SerialState class-specific notification + /** Mask for the RING handshake line for use with the \ref CDC_NOTIF_SerialState class-specific notification * from the device to the host, to indicate that the RING line state is currently high. */ #define CDC_CONTROL_LINE_IN_RING (1 << 3) - /** Mask for use with the a NOTIF_SerialState class-specific notification from the device to the host, + /** Mask for use with the \ref CDC_NOTIF_SerialState class-specific notification from the device to the host, * to indicate that a framing error has occurred on the virtual serial port. */ #define CDC_CONTROL_LINE_IN_FRAMEERROR (1 << 4) - /** Mask for use with the a NOTIF_SerialState class-specific notification from the device to the host, + /** Mask for use with the \ref CDC_NOTIF_SerialState class-specific notification from the device to the host, * to indicate that a parity error has occurred on the virtual serial port. */ #define CDC_CONTROL_LINE_IN_PARITYERROR (1 << 5) - /** Mask for use with the a NOTIF_SerialState class-specific notification from the device to the host, + /** Mask for use with the \ref CDC_NOTIF_SerialState class-specific notification from the device to the host, * to indicate that a data overrun error has occurred on the virtual serial port. */ #define CDC_CONTROL_LINE_IN_OVERRUNERROR (1 << 6) + //@} /** Macro to define a CDC class-specific functional descriptor. CDC functional descriptors have a * uniform structure but variable sized data payloads, thus cannot be represented accurately by @@ -125,29 +128,63 @@ uint8_t SubType; \ uint8_t Data[DataSize]; \ } - + /* Enums: */ + /** Enum for possible Class, Subclass and Protocol values of device and interface descriptors relating to the CDC + * device class. + */ + enum CDC_Descriptor_ClassSubclassProtocol_t + { + CDC_CSCP_CDCClass = 0x02, /**< Descriptor Class value indicating that the device or interface + * belongs to the CDC class. + */ + CDC_CSCP_NoSpecificSubclass = 0x00, /**< Descriptor Subclass value indicating that the device or interface + * belongs to no specific subclass of the CDC class. + */ + CDC_CSCP_ACMSubclass = 0x02, /**< Descriptor Subclass value indicating that the device or interface + * belongs to the Abstract Control Model CDC subclass. + */ + CDC_CSCP_ATCommandProtocol = 0x01, /**< Descriptor Protocol value indicating that the device or interface + * belongs to the AT Command protocol of the CDC class. + */ + CDC_CSCP_NoSpecificProtocol = 0x00, /**< Descriptor Class value indicating that the device or interface + * belongs to no specific protocol of the CDC class. + */ + CDC_CSCP_VendorSpecificProtocol = 0xFF, /**< Descriptor Class value indicating that the device or interface + * belongs to a vendor-specific protocol of the CDC class. + */ + CDC_CSCP_CDCDataClass = 0x0A, /**< Descriptor Class value indicating that the device or interface + * belongs to the CDC Data class. + */ + CDC_CSCP_NoDataSubclass = 0x00, /**< Descriptor Subclass value indicating that the device or interface + * belongs to no specific subclass of the CDC data class. + */ + CDC_CSCP_NoDataProtocol = 0x00, /**< Descriptor Protocol value indicating that the device or interface + * belongs to no specific protocol of the CDC data class. + */ + }; + /** Enum for the CDC class specific control requests that can be issued by the USB bus host. */ enum CDC_ClassRequests_t - { + { CDC_REQ_SendEncapsulatedCommand = 0x00, /**< CDC class-specific request to send an encapsulated command to the device. */ - CDC_REQ_GetEncapsulatedResponse = 0x01, /**< CDC class-specific request to retrieve an encapsulated command response from the device. */ + CDC_REQ_GetEncapsulatedResponse = 0x01, /**< CDC class-specific request to retrieve an encapsulated command response from the device. */ CDC_REQ_SetLineEncoding = 0x20, /**< CDC class-specific request to set the current virtual serial port configuration settings. */ CDC_REQ_GetLineEncoding = 0x21, /**< CDC class-specific request to get the current virtual serial port configuration settings. */ CDC_REQ_SetControlLineState = 0x22, /**< CDC class-specific request to set the current virtual serial port handshake line states. */ CDC_REQ_SendBreak = 0x23, /**< CDC class-specific request to send a break to the receiver via the carrier channel. */ }; - + /** Enum for the CDC class specific notification requests that can be issued by a CDC device to a host. */ enum CDC_ClassNotifications_t { CDC_NOTIF_SerialState = 0x20, /**< Notification type constant for a change in the virtual serial port - * handshake line states, for use with a USB_Notification_Header_t + * handshake line states, for use with a \ref USB_Request_Header_t * notification structure when sent to the host via the CDC notification * endpoint. */ }; - + /** Enum for the CDC class specific interface descriptor subtypes. */ enum CDC_DescriptorSubtypes_t { @@ -169,7 +206,7 @@ CDC_DSUBTYPE_CSInterface_Ethernet = 0x0F, /**< CDC class-specific Ethernet functional descriptor. */ CDC_DSUBTYPE_CSInterface_ATM = 0x10, /**< CDC class-specific Asynchronous Transfer Mode functional descriptor. */ }; - + /** Enum for the possible line encoding formats of a virtual serial port. */ enum CDC_LineEncodingFormats_t { @@ -177,7 +214,7 @@ CDC_LINEENCODING_OneAndAHalfStopBits = 1, /**< Each frame contains one and a half stop bits. */ CDC_LINEENCODING_TwoStopBits = 2, /**< Each frame contains two stop bits. */ }; - + /** Enum for the possible line encoding parity settings of a virtual serial port. */ enum CDC_LineEncodingParity_t { @@ -270,7 +307,7 @@ * to the CDC ACM specification. */ } USB_CDC_StdDescriptor_FunctionalACM_t; - + /** \brief CDC class-specific Functional Union Descriptor (LUFA naming conventions). * * Type define for a CDC class-specific functional Union descriptor. This indicates to the host that specific @@ -287,7 +324,7 @@ uint8_t MasterInterfaceNumber; /**< Interface number of the CDC Control interface. */ uint8_t SlaveInterfaceNumber; /**< Interface number of the CDC Data interface. */ } USB_CDC_Descriptor_FunctionalUnion_t; - + /** \brief CDC class-specific Functional Union Descriptor (USB-IF naming conventions). * * Type define for a CDC class-specific functional Union descriptor. This indicates to the host that specific @@ -308,12 +345,28 @@ uint8_t bMasterInterface; /**< Interface number of the CDC Control interface. */ uint8_t bSlaveInterface0; /**< Interface number of the CDC Data interface. */ } USB_CDC_StdDescriptor_FunctionalUnion_t; + + /** Type define for a CDC Line Encoding structure, used to hold the various encoding parameters for a virtual + * serial port. + */ + typedef struct + { + uint32_t BaudRateBPS; /**< Baud rate of the virtual serial port, in bits per second. */ + uint8_t CharFormat; /**< Character format of the virtual serial port, a value from the + * \ref CDC_LineEncodingFormats_t enum. + */ + uint8_t ParityType; /**< Parity setting of the virtual serial port, a value from the + * \ref CDC_LineEncodingParity_t enum. + */ + uint8_t DataBits; /**< Bits of data per character of the virtual serial port. */ + } CDC_LineEncoding_t; /* Disable C linkage for C++ Compilers: */ #if defined(__cplusplus) } #endif - + #endif /** @} */ +