From 89e4d73289b6156aebf4e3e492033d6b017c7813 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 12 Jan 2010 00:42:00 +0000 Subject: [PATCH] Fixed incorrect interface values in the VirtualSerialMouse and KeyboardMouse demo class driver structures. Added caveat information to the CDC device class driver. --- .../ClassDriver/KeyboardMouse/KeyboardMouse.c | 10 +++++----- .../ClassDriver/RNDISEthernet/RNDISEthernet.h | 2 +- .../VirtualSerialMouse/Descriptors.c | 2 +- .../VirtualSerialMouse/VirtualSerialMouse.c | 2 +- LUFA/Doxygen.conf | 4 ++-- LUFA/Drivers/USB/Class/Device/CDC.h | 17 +++++++++++++++++ LUFA/ManPages/ChangeLog.txt | 1 + 7 files changed, 28 insertions(+), 10 deletions(-) diff --git a/Demos/Device/ClassDriver/KeyboardMouse/KeyboardMouse.c b/Demos/Device/ClassDriver/KeyboardMouse/KeyboardMouse.c index ec17bf69a5..dcdf88682b 100644 --- a/Demos/Device/ClassDriver/KeyboardMouse/KeyboardMouse.c +++ b/Demos/Device/ClassDriver/KeyboardMouse/KeyboardMouse.c @@ -72,13 +72,13 @@ USB_ClassInfo_HID_Device_t Mouse_HID_Interface = { .Config = { - .InterfaceNumber = 0, + .InterfaceNumber = 1, - .ReportINEndpointNumber = MOUSE_IN_EPNUM, - .ReportINEndpointSize = HID_EPSIZE, + .ReportINEndpointNumber = MOUSE_IN_EPNUM, + .ReportINEndpointSize = HID_EPSIZE, - .PrevReportINBuffer = PrevMouseHIDReportBuffer, - .PrevReportINBufferSize = sizeof(PrevMouseHIDReportBuffer), + .PrevReportINBuffer = PrevMouseHIDReportBuffer, + .PrevReportINBufferSize = sizeof(PrevMouseHIDReportBuffer), }, }; diff --git a/Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.h b/Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.h index f6681f47f7..3bed7f8514 100644 --- a/Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.h +++ b/Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.h @@ -53,7 +53,7 @@ #include #include - #include + #include #include #include diff --git a/Demos/Device/ClassDriver/VirtualSerialMouse/Descriptors.c b/Demos/Device/ClassDriver/VirtualSerialMouse/Descriptors.c index b2c8ae21b6..8bb8a1eed7 100644 --- a/Demos/Device/ClassDriver/VirtualSerialMouse/Descriptors.c +++ b/Demos/Device/ClassDriver/VirtualSerialMouse/Descriptors.c @@ -246,7 +246,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = { .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, - .InterfaceNumber = 3, + .InterfaceNumber = 2, .AlternateSetting = 0, .TotalEndpoints = 1, diff --git a/Demos/Device/ClassDriver/VirtualSerialMouse/VirtualSerialMouse.c b/Demos/Device/ClassDriver/VirtualSerialMouse/VirtualSerialMouse.c index 87b149b79e..5edda2f9d4 100644 --- a/Demos/Device/ClassDriver/VirtualSerialMouse/VirtualSerialMouse.c +++ b/Demos/Device/ClassDriver/VirtualSerialMouse/VirtualSerialMouse.c @@ -71,7 +71,7 @@ USB_ClassInfo_HID_Device_t Mouse_HID_Interface = { .Config = { - .InterfaceNumber = 0, + .InterfaceNumber = 2, .ReportINEndpointNumber = MOUSE_EPNUM, .ReportINEndpointSize = MOUSE_EPSIZE, diff --git a/LUFA/Doxygen.conf b/LUFA/Doxygen.conf index 265a27ec6e..c46aba6a18 100644 --- a/LUFA/Doxygen.conf +++ b/LUFA/Doxygen.conf @@ -872,14 +872,14 @@ GENERATE_HTMLHELP = NO # can add a path in front of the file if the result should not be # written to the html output directory. -CHM_FILE = +CHM_FILE = ../LUFA.chm # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. -HHC_LOCATION = +HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that diff --git a/LUFA/Drivers/USB/Class/Device/CDC.h b/LUFA/Drivers/USB/Class/Device/CDC.h index 617410b11b..d248868cd1 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. + * * @{ */ diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index 351c33f3e5..d0043223ea 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -34,6 +34,7 @@ * - Fixed blocking CDC streams not aborting when the host is disconnected * - Fixed XPLAIN board Dataflash driver broken due to incorrect preprocessor commands * - Fixed inverted XPLAIN LED driver output (LED turned on when it was supposed to be turned off, and vice-versa) + * - Fixed Class Driver struct interface numbers in the KeyboardMouse and VirtualSerialMouse demos * * \section Sec_ChangeLog091223 Version 091223 *