From 89e4d73289b6156aebf4e3e492033d6b017c7813 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 12 Jan 2010 00:42:00 +0000 Subject: Fixed incorrect interface values in the VirtualSerialMouse and KeyboardMouse demo class driver structures. Added caveat information to the CDC device class driver. --- LUFA/Drivers/USB/Class/Device/CDC.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'LUFA/Drivers/USB/Class') diff --git a/LUFA/Drivers/USB/Class/Device/CDC.h b/LUFA/Drivers/USB/Class/Device/CDC.h index 617410b11..d248868cd 100644 --- a/LUFA/Drivers/USB/Class/Device/CDC.h +++ b/LUFA/Drivers/USB/Class/Device/CDC.h @@ -38,6 +38,23 @@ * \section 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 + * it is very standardized and thus usually available as a built-in driver on + * most platforms, and so is a better choice than a proprietary serial class. + * + * 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 + * conbat this, you should use the "Interface Association Descriptor" addendum to + * the USB 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. + * * @{ */ -- cgit v1.2.3