From ee5ea4ce2bc463206ed8fe01c71b31585c0cc280 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 11 May 2010 13:45:23 +0000 Subject: Fix nasty bug in USBInterrupt.c which would cause a lockup if the control endpoint was not selected at the point the USB endpoint interrupt fires when INTERRUPT_CONTROL_ENDPOINT is defined. --- LUFA/Drivers/USB/LowLevel/USBInterrupt.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'LUFA/Drivers') diff --git a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c index 7edd3ce6a..43df5f61a 100644 --- a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c +++ b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c @@ -233,15 +233,15 @@ ISR(USB_GEN_vect, ISR_BLOCK) #if defined(INTERRUPT_CONTROL_ENDPOINT) && defined(USB_CAN_BE_DEVICE) ISR(USB_COM_vect, ISR_BLOCK) { - uint8_t PrevSelectedEndpoint = Endpoint_GetCurrentEndpoint(); + uint8_t PrevSelectedEndpoint = Endpoint_GetCurrentEndpoint(); + Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP); USB_INT_Disable(USB_INT_RXSTPI); sei(); + USB_USBTask(); - USB_INT_Enable(USB_INT_RXSTPI); - USB_INT_Clear(USB_INT_RXSTPI); - + USB_INT_Enable(USB_INT_RXSTPI); Endpoint_SelectEndpoint(PrevSelectedEndpoint); } #endif -- cgit v1.2.3