mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-09-10 17:15:43 +00:00
Fixed CDCHost not clearing configured endpoints and resetting configured endpoints mask when a partially enumerated invalid CDC interface is skipped.
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user