diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2009-05-15 07:38:35 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2009-05-15 07:38:35 +0000 |
commit | fabfdd454a11440a5789a70f6476889b02928438 (patch) | |
tree | 350db859d2c94fc39946d5bd421b71b9a9646065 | |
parent | 32f0f605efa293430a47d60bb857695ff6937d21 (diff) | |
download | lufa-fabfdd454a11440a5789a70f6476889b02928438.tar.gz lufa-fabfdd454a11440a5789a70f6476889b02928438.tar.bz2 lufa-fabfdd454a11440a5789a70f6476889b02928438.zip |
Fixed CDCHost not clearing configured endpoints and resetting configured endpoints mask when a partially enumerated invalid CDC interface is skipped.
-rw-r--r-- | Demos/Device/RNDISEthernet/RNDISEthernet.c | 8 | ||||
-rw-r--r-- | Demos/Host/CDCHost/ConfigDescriptor.c | 8 | ||||
-rw-r--r-- | LUFA/ChangeLog.txt | 2 |
3 files changed, 14 insertions, 4 deletions
diff --git a/Demos/Device/RNDISEthernet/RNDISEthernet.c b/Demos/Device/RNDISEthernet/RNDISEthernet.c index 96fef3992..fd88ecf89 100644 --- a/Demos/Device/RNDISEthernet/RNDISEthernet.c +++ b/Demos/Device/RNDISEthernet/RNDISEthernet.c @@ -113,10 +113,6 @@ EVENT_HANDLER(USB_Disconnect) EVENT_HANDLER(USB_ConfigurationChanged)
{
/* Setup CDC Notification, Rx and Tx Endpoints */
- Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT,
- ENDPOINT_DIR_IN, CDC_NOTIFICATION_EPSIZE,
- ENDPOINT_BANK_SINGLE);
-
Endpoint_ConfigureEndpoint(CDC_TX_EPNUM, EP_TYPE_BULK,
ENDPOINT_DIR_IN, CDC_TXRX_EPSIZE,
ENDPOINT_BANK_SINGLE);
@@ -125,6 +121,10 @@ EVENT_HANDLER(USB_ConfigurationChanged) ENDPOINT_DIR_OUT, CDC_TXRX_EPSIZE,
ENDPOINT_BANK_SINGLE);
+ Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT,
+ ENDPOINT_DIR_IN, CDC_NOTIFICATION_EPSIZE,
+ ENDPOINT_BANK_SINGLE);
+
/* Indicate USB connected and ready */
UpdateStatus(Status_USBReady);
diff --git a/Demos/Host/CDCHost/ConfigDescriptor.c b/Demos/Host/CDCHost/ConfigDescriptor.c index 9a23fc3fa..29afbfaa1 100644 --- a/Demos/Host/CDCHost/ConfigDescriptor.c +++ b/Demos/Host/CDCHost/ConfigDescriptor.c @@ -95,6 +95,14 @@ uint8_t ProcessConfigurationDescriptor(void) }
else
{
+ /* Clear the found endpoints mask, since any already processed endpoints aren't in the CDC interface we need */
+ FoundEndpoints = 0;
+
+ /* Disable any already configured endpoints from the invalid CDC interfaces */
+ Endpoint_DisableEndpoint(CDC_NOTIFICATIONPIPE);
+ Endpoint_DisableEndpoint(CDC_DATAPIPE_IN);
+ Endpoint_DisableEndpoint(CDC_DATAPIPE_OUT);
+
/* Get the next CDC control interface from the configuration descriptor (CDC class has two CDC interfaces) */
if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData, NextCDCControlInterface))
{
diff --git a/LUFA/ChangeLog.txt b/LUFA/ChangeLog.txt index be15e73f8..69a60f143 100644 --- a/LUFA/ChangeLog.txt +++ b/LUFA/ChangeLog.txt @@ -15,6 +15,8 @@ * - Removed support for endpoint/pipe non-control interrupts; these did not act in the way users expected, and had many subtle issues
* - Fixed Device Mode not handling Set Feature and Clear Feature Chapter 9 requests that are addressed to the device (thanks to Brian Dickman)
* - Moved control endpoint interrupt handling into the library itself, enable via the new INTERRUPT_CONTROL_ENDPOINT token
+ * - Fixed CDCHost not clearing configured endpoints and resetting configured endpoints mask when a partially enumerated invalid CDC
+ * interface is skipped
*
*
* \section Sec_ChangeLog090510 Version 090510
|