Add host mode USB Class driver stubs, add beginnings of a CDC host class driver.
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Device / CDC.h
index c0d1ccd..6938eb3 100644 (file)
   this software.\r
 */\r
 \r
-/** \ingroup Group_USBDeviceClassDrivers\r
- *  @defgroup Group_USBClassCDCDevice CDC Device Class Driver - LUFA/Drivers/Class/Device/CDC.h\r
- *\r
- *  \section Sec_Dependencies Module Source Dependencies\r
- *  The following files must be built with any user project that uses this module:\r
- *    - LUFA/Drivers/USB/Class/Device/CDC.c\r
+/** \ingroup Group_USBClassCDC\r
+ *  @defgroup Group_USBClassCDCDevice CDC Class Device Mode Driver\r
  *\r
  *  \section Module Description\r
- *  Functions, macros, variables, enums and types related to the management of USB CDC Class interfaces\r
- *  within a USB device, for the implementation of CDC-ACM virtual serial ports.\r
+ *  Device Mode USB Class driver framework interface, for the CDC USB Class driver.\r
  *\r
  *  @{\r
  */\r
  \r
-#ifndef _CDC_CLASS_H_\r
-#define _CDC_CLASS_H_\r
+#ifndef _CDC_CLASS_DEVICE_H_\r
+#define _CDC_CLASS_DEVICE_H_\r
 \r
        /* Includes: */\r
                #include "../../USB.h"\r
+               #include "../Common/CDC.h"\r
 \r
                #include <string.h>\r
 \r
                        extern "C" {\r
                #endif\r
 \r
-       /* Macros: */\r
-               /** CDC Class specific request to get the current virtual serial port configuration settings. */\r
-               #define REQ_GetLineEncoding              0x21\r
-\r
-               /** CDC Class specific request to set the current virtual serial port configuration settings. */\r
-               #define REQ_SetLineEncoding              0x20\r
-\r
-               /** CDC Class specific request to set the current virtual serial port handshake line states. */\r
-               #define REQ_SetControlLineState          0x22\r
-               \r
-               /** Notification type constant for a change in the virtual serial port handshake line states, for\r
-                *  use with a USB_Notification_Header_t notification structure when sent to the host via the CDC \r
-                *  notification endpoint.\r
-                */\r
-               #define NOTIF_SerialState                0x20\r
-\r
-               /** Mask for the DTR handshake line for use with the REQ_SetControlLineState class specific request\r
-                *  from the host, to indicate that the DTR line state should be high.\r
-                */\r
-               #define CDC_CONTROL_LINE_OUT_DTR         (1 << 0)\r
-\r
-               /** Mask for the RTS handshake line for use with the REQ_SetControlLineState class specific request\r
-                *  from the host, to indicate that theRTS line state should be high.\r
-                */\r
-               #define CDC_CONTROL_LINE_OUT_RTS         (1 << 1)\r
-               \r
-               /** Mask for the DCD handshake line for use with the a NOTIF_SerialState class specific notification\r
-                *  from the device to the host, to indicate that the DCD line state is currently high.\r
-                */\r
-               #define CDC_CONTROL_LINE_IN_DCD          (1 << 0)\r
-\r
-               /** Mask for the DSR handshake line for use with the a NOTIF_SerialState class specific notification\r
-                *  from the device to the host, to indicate that the DSR line state is currently high.\r
-                */\r
-               #define CDC_CONTROL_LINE_IN_DSR          (1 << 1)\r
-\r
-               /** Mask for the BREAK handshake line for use with the a NOTIF_SerialState class specific notification\r
-                *  from the device to the host, to indicate that the BREAK line state is currently high.\r
-                */\r
-               #define CDC_CONTROL_LINE_IN_BREAK        (1 << 2)\r
-\r
-               /** Mask for the RING handshake line for use with the a NOTIF_SerialState class specific notification\r
-                *  from the device to the host, to indicate that the RING line state is currently high.\r
-                */\r
-               #define CDC_CONTROL_LINE_IN_RING         (1 << 3)\r
-\r
-               /** Mask for use with the a NOTIF_SerialState class specific notification from the device to the host,\r
-                *  to indicate that a framing error has occurred on the virtual serial port.\r
-                */\r
-               #define CDC_CONTROL_LINE_IN_FRAMEERROR   (1 << 4)\r
-\r
-               /** Mask for use with the a NOTIF_SerialState class specific notification from the device to the host,\r
-                *  to indicate that a parity error has occurred on the virtual serial port.\r
-                */\r
-               #define CDC_CONTROL_LINE_IN_PARITYERROR  (1 << 5)\r
-\r
-               /** Mask for use with the a NOTIF_SerialState class specific notification from the device to the host,\r
-                *  to indicate that a data overrun error has occurred on the virtual serial port.\r
-                */\r
-               #define CDC_CONTROL_LINE_IN_OVERRUNERROR (1 << 6)\r
-               \r
-               /** Macro to define a CDC class-specific functional descriptor. CDC functional descriptors have a\r
-                *  uniform structure but variable sized data payloads, thus cannot be represented accurately by\r
-                *  a single typedef struct. A macro is used instead so that functional descriptors can be created\r
-                *  easily by specifying the size of the payload. This allows sizeof() to work correctly.\r
-                *\r
-                *  \param DataSize  Size in bytes of the CDC functional descriptor's data payload\r
-                */\r
-               #define CDC_FUNCTIONAL_DESCRIPTOR(DataSize)        \\r
-                    struct                                        \\r
-                    {                                             \\r
-                         USB_Descriptor_Header_t Header;          \\r
-                             uint8_t                 SubType;         \\r
-                         uint8_t                 Data[DataSize];  \\r
-                    }\r
-\r
-       /* Enums: */\r
-               /** Enum for the possible line encoding formats of a virtual serial port. */\r
-               enum CDCDevice_CDC_LineCodingFormats_t\r
-               {\r
-                       CDC_LINEENCODING_OneStopBit          = 0, /**< Each frame contains one stop bit */\r
-                       CDC_LINEENCODING_OneAndAHalfStopBits = 1, /**< Each frame contains one and a half stop bits */\r
-                       CDC_LINEENCODING_TwoStopBits         = 2, /**< Each frame contains two stop bits */\r
-               };\r
-               \r
-               /** Enum for the possible line encoding parity settings of a virtual serial port. */\r
-               enum CDCDevice_LineCodingParity_t\r
-               {\r
-                       CDC_PARITY_None    = 0, /**< No parity bit mode on each frame */\r
-                       CDC_PARITY_Odd     = 1, /**< Odd parity bit mode on each frame */\r
-                       CDC_PARITY_Even    = 2, /**< Even parity bit mode on each frame */\r
-                       CDC_PARITY_Mark    = 3, /**< Mark parity bit mode on each frame */\r
-                       CDC_PARITY_Space   = 4, /**< Space parity bit mode on each frame */\r
-               };\r
-\r
-       /* Type Defines: */\r
-               /** Class state structure. An instance of this structure should be made for each CDC interface\r
-                *  within the user application, and passed to each of the CDC class driver functions as the\r
-                *  CDCInterfaceInfo parameter. The contents of this structure should be set to their correct\r
-                *  values when used, or ommitted to force the library to use default values.\r
-                */\r
-               typedef struct\r
-               {\r
-                       uint8_t  ControlInterfaceNumber; /**< Interface number of the CDC control interface within the device */\r
-\r
-                       uint8_t  DataINEndpointNumber; /**< Endpoint number of the CDC interface's IN data endpoint */\r
-                       uint16_t DataINEndpointSize; /**< Size in bytes of the CDC interface's IN data endpoint */\r
-\r
-                       uint8_t  DataOUTEndpointNumber; /**< Endpoint number of the CDC interface's OUT data endpoint */\r
-                       uint16_t DataOUTEndpointSize;  /**< Size in bytes of the CDC interface's OUT data endpoint */\r
-\r
-                       uint8_t  NotificationEndpointNumber; /**< Endpoint number of the CDC interface's IN notification endpoint, if used */\r
-                       uint16_t NotificationEndpointSize;  /**< Size in bytes of the CDC interface's IN notification endpoint, if used */\r
-\r
-                       uint8_t  ControlLineState; /**< Current control line states, as set by the host */\r
-\r
-                       struct\r
-                       {\r
-                               uint32_t BaudRateBPS; /**< Baud rate of the virtual serial port, in bits per second */\r
-                               uint8_t  CharFormat; /**< Character format of the virtual serial port, a value from the\r
-                                                                         *   CDCDevice_CDC_LineCodingFormats_t enum\r
-                                                                         */\r
-                               uint8_t  ParityType; /**< Parity setting of the virtual serial port, a value from the\r
-                                                                         *   CDCDevice_LineCodingParity_t enum\r
-                                                                         */\r
-                               uint8_t  DataBits; /**< Bits of data per character of the virtual serial port */\r
-                       } LineEncoding;\r
-               } USB_ClassInfo_CDC_t;\r
-               \r
        /* Function Prototypes: */\r
-               #if defined(INCLUDE_FROM_CDC_CLASS_C)\r
+               #if defined(INCLUDE_FROM_CDC_CLASS_DEVICE_C)\r
                        void CDC_Device_Event_Stub(void);\r
                        void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_t* CDCInterfaceInfo)\r
                                                                                                      ATTR_WEAK ATTR_ALIAS(CDC_Device_Event_Stub);\r