Fix code style in the HID parser module.
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Device / CDCClassDevice.h
index 2494256..2c66289 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2011.
+     Copyright (C) Dean Camera, 2013.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2013  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
@@ -18,7 +18,7 @@
   advertising or publicity pertaining to distribution of the
   software without specific, written prior permission.
 
-  The author disclaim all warranties with regard to this
+  The author disclaims all warranties with regard to this
   software, including all implied warranties of merchantability
   and fitness.  In no event shall the author be liable for any
   special, indirect or consequential damages or any damages
 /** \ingroup Group_USBClassCDC
  *  \defgroup Group_USBClassCDCDevice CDC Class Device Mode Driver
  *
- *  \section Sec_Dependencies Module Source Dependencies
+ *  \section Sec_USBClassCDCDevice_Dependencies Module Source Dependencies
  *  The following files must be built with any user project that uses this module:
  *    - LUFA/Drivers/USB/Class/Device/CDCClassDevice.c <i>(Makefile source module name: LUFA_SRC_USBCLASS)</i>
  *
- *  \section Sec_ModDescription Module Description
+ *  \section Sec_USBClassCDCDevice_ModDescription Module Description
  *  Device Mode USB Class driver framework interface, for the CDC USB Class driver.
  *
  *  \note There are several major drawbacks to the CDC-ACM standard USB class, however
  *
  *        One major issue with CDC-ACM is that it requires two Interface descriptors,
  *        which will upset most hosts when part of a multi-function "Composite" USB
- *        device, as each interface will be loaded into a separate driver instance. To
- *        combat this, you should use the "Interface Association Descriptor" addendum to
- *        the USB standard which is available on most OSes when creating Composite devices.
+ *        device. This is because each interface will be loaded into a separate driver
+ *        instance, causing the two interfaces be become unlinked. To prevent this, you
+ *        should use the "Interface Association Descriptor" addendum to the USB 2.0 standard
+ *        which is available on most OSes when creating Composite devices.
  *
  *        Another major oversight is that there is no mechanism for the host to notify the
  *        device that there is a data sink on the host side ready to accept data. This
  *        means that the device may try to send data while the host isn't listening, causing
- *        lengthy blocking timeouts in the transmission routines. To combat this, it is
- *        recommended that the virtual serial line DTR (Data Terminal Ready) be used where
- *        possible to determine if a host application is ready for data.
+ *        lengthy blocking timeouts in the transmission routines. It is thus highly recommended
+ *        that the virtual serial line DTR (Data Terminal Ready) signal be used where possible
+ *        to determine if a host application is ready for data.
  *
  *  @{
  */
                         */
                        typedef struct
                        {
-                               const struct
+                               struct
                                {
-                                       uint8_t  ControlInterfaceNumber; /**< Interface number of the CDC control interface within the device. */
-
-                                       uint8_t  DataINEndpointNumber; /**< Endpoint number of the CDC interface's IN data endpoint. */
-                                       uint16_t DataINEndpointSize; /**< Size in bytes of the CDC interface's IN data endpoint. */
-                                       bool     DataINEndpointDoubleBank; /**< Indicates if the CDC interface's IN data endpoint should use double banking. */
-
-                                       uint8_t  DataOUTEndpointNumber; /**< Endpoint number of the CDC interface's OUT data endpoint. */
-                                       uint16_t DataOUTEndpointSize;  /**< Size in bytes of the CDC interface's OUT data endpoint. */
-                                       bool     DataOUTEndpointDoubleBank; /**< Indicates if the CDC interface's OUT data endpoint should use double banking. */
+                                       uint8_t ControlInterfaceNumber; /**< Interface number of the CDC control interface within the device. */
 
-                                       uint8_t  NotificationEndpointNumber; /**< Endpoint number of the CDC interface's IN notification endpoint, if used. */
-                                       uint16_t NotificationEndpointSize;  /**< Size in bytes of the CDC interface's IN notification endpoint, if used. */
-                                       bool     NotificationEndpointDoubleBank; /**< Indicates if the CDC interface's notification endpoint should use double banking. */
+                                       USB_Endpoint_Table_t DataINEndpoint; /**< Data IN endpoint configuration table. */
+                                       USB_Endpoint_Table_t DataOUTEndpoint; /**< Data OUT endpoint configuration table. */
+                                       USB_Endpoint_Table_t NotificationEndpoint; /**< Notification IN Endpoint configuration table. */
                                } Config; /**< Config data for the USB class interface within the device. All elements in this section
                                           *   <b>must</b> be set or the interface will fail to enumerate and operate correctly.
                                           */
                                                                                            */
                                        } ControlLineStates; /**< Current states of the virtual serial port's control lines between the device and host. */
 
-                                       CDC_LineEncoding_t LineEncoding; /** Line encoding used in the virtual serial port, for the device's information.
-                                                                         *  This is generally only used if the virtual serial port data is to be
-                                                                         *  reconstructed on a physical UART.
+                                       CDC_LineEncoding_t LineEncoding; /**< Line encoding used in the virtual serial port, for the device's information.
+                                                                         *   This is generally only used if the virtual serial port data is to be
+                                                                         *   reconstructed on a physical UART.
                                                                          */
                                } State; /**< State data for the USB class interface within the device. All elements in this section
                                          *   are reset to their defaults when the interface is enumerated.
                        /** CDC class driver event for a line encoding change on a CDC interface. This event fires each time the host requests a
                         *  line encoding change (containing the serial parity, baud and other configuration information) and may be hooked in the
                         *  user program by declaring a handler function with the same name and parameters listed here. The new line encoding
-                        *  settings are available in the LineEncoding structure inside the CDC interface structure passed as a parameter.
+                        *  settings are available in the \c LineEncoding structure inside the CDC interface structure passed as a parameter.
                         *
                         *  \param[in,out] CDCInterfaceInfo  Pointer to a structure containing a CDC Class configuration and state.
                         */
                        /** CDC class driver event for a control line state change on a CDC interface. This event fires each time the host requests a
                         *  control line state change (containing the virtual serial control line states, such as DTR) and may be hooked in the
                         *  user program by declaring a handler function with the same name and parameters listed here. The new control line states
-                        *  are available in the State.ControlLineStates.HostToDevice value inside the CDC interface structure passed as a parameter, set as
-                        *  a mask of CDC_CONTROL_LINE_OUT_* masks.
+                        *  are available in the \c ControlLineStates.HostToDevice value inside the CDC interface structure passed as a parameter, set as
+                        *  a mask of \c CDC_CONTROL_LINE_OUT_* masks.
                         *
                         *  \param[in,out] CDCInterfaceInfo  Pointer to a structure containing a CDC Class configuration and state.
                         */
                         *  \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
                         */
                        uint8_t CDC_Device_SendData(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
-                                                   const char* const Buffer,
+                                                   const void* const Buffer,
                                                    const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 
                        /** Sends a given null terminated string to the attached USB host, if connected. If a host is not connected when
                        /** Sends a Serial Control Line State Change notification to the host. This should be called when the virtual serial
                         *  control lines (DCD, DSR, etc.) have changed states, or to give BREAK notifications to the host. Line states persist
                         *  until they are cleared via a second notification. This should be called each time the CDC class driver's
-                        *  ControlLineStates.DeviceToHost value is updated to push the new states to the USB host.
+                        *  \c ControlLineStates.DeviceToHost value is updated to push the new states to the USB host.
                         *
                         *  \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or
                         *       the call will fail.
                         */
                        void CDC_Device_SendControlLineStateChange(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 
+                       #if defined(FDEV_SETUP_STREAM) || defined(__DOXYGEN__)
                        /** Creates a standard character stream for the given CDC Device instance so that it can be used with all the regular
-                        *  functions in the standard <stdio.h> library that accept a \c FILE stream as a destination (e.g. \c fprintf). The created
+                        *  functions in the standard <stdio.h> library that accept a \c FILE stream as a destination (e.g. \c fprintf()). The created
                         *  stream is bidirectional and can be used for both input and output functions.
                         *
                         *  Reading data from this stream is non-blocking, i.e. in most instances, complete strings cannot be read in by a single
                         *  be used when the read data is processed byte-per-bye (via \c getc()) or when the user application will implement its own
                         *  line buffering.
                         *
-                        *  \note The created stream can be given as stdout if desired to direct the standard output from all <stdio.h> functions
+                        *  \note The created stream can be given as \c stdout if desired to direct the standard output from all \c <stdio.h> functions
                         *        to the given CDC interface.
                         *        \n\n
                         *
                         */
                        void CDC_Device_CreateBlockingStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
                                                             FILE* const Stream) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
+                       #endif
 
        /* Private Interface - For use in library only: */
        #if !defined(__DOXYGEN__)
                                #endif
 
                                void CDC_Device_Event_Stub(void) ATTR_CONST;
-                               
+
                                void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
                                                                          ATTR_WEAK ATTR_NON_NULL_PTR_ARG(1) ATTR_ALIAS(CDC_Device_Event_Stub);
                                void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)