X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/8b5aa616013811faf53fb5c1f2fdb819dd671b36..22eeb9b4e9262e6c1db6404deeb0327a02817de8:/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h?ds=inline
diff --git a/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h b/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h
index 24942560f..3304775e7 100644
--- a/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h
+++ b/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h
@@ -1,13 +1,13 @@
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2011.
+     Copyright (C) Dean Camera, 2012.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2012  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
@@ -53,16 +53,17 @@
  *
  *        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.
  *
  *  @{
  */
@@ -96,21 +97,13 @@
 			 */
 			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  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. */
+					uint8_t ControlInterfaceNumber; /**< Interface number of the CDC control interface within the device. */
+					
+					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
 				           *   must be set or the interface will fail to enumerate and operate correctly.
 				           */
@@ -173,8 +166,8 @@
 			/** 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.
 			 */
@@ -281,7 +274,7 @@
 			/** 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.
@@ -290,8 +283,9 @@
 			 */
 			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  library that accept a \c FILE stream as a destination (e.g. \c fprintf). The created
+			 *  functions in the standard  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
@@ -299,7 +293,7 @@
 			 *  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  functions
+			 *  \note The created stream can be given as \c stdout if desired to direct the standard output from all  functions
 			 *        to the given CDC interface.
 			 *        \n\n
 			 *
@@ -321,7 +315,8 @@
 			 */
 			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__)
 		/* Function Prototypes: */
@@ -334,7 +329,7 @@
 				#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)