X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/f1b6ddb7107fd9534cc6a8d6ab2d46f349d9cdb7..c7344c22ac700dacf55a8dc729111dd7781c5fed:/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h diff --git a/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h b/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h index 6e005efbf..508c234d7 100644 --- a/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h +++ b/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h @@ -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. */ @@ -299,7 +292,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 *