X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/ed7067e89f4adc1c5b9317caa0253d866ad2bf56..accadba2dda2614d6a6669cb7eba9d8357274bfe:/LUFA/Drivers/USB/LowLevel/USBInterrupt.c diff --git a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c index 66a86a1b2..21b0a9bb1 100644 --- a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c +++ b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c @@ -34,7 +34,7 @@ void USB_INT_DisableAllInterrupts(void) { #if defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) - USBCON &= ~((1 << OTGPADE) | (1 << VBUSTE) | (1 << IDTE)); + USBCON &= ~((1 << VBUSTE) | (1 << IDTE)); #elif defined(USB_SERIES_4_AVR) USBCON &= ~(1 << VBUSTE); #endif @@ -128,11 +128,14 @@ ISR(USB_GEN_vect, ISR_BLOCK) USB_INT_Disable(USB_INT_WAKEUPI); USB_INT_Enable(USB_INT_SUSPI); + if (USB_ConfigurationNumber) + USB_DeviceState = DEVICE_STATE_Configured; + else + USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered; + #if defined(USB_SERIES_2_AVR) && !defined(NO_LIMITED_CONTROLLER_CONNECT) - USB_DeviceState = (USB_ConfigurationNumber) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered; EVENT_USB_Device_Connect(); #else - USB_DeviceState = (USB_ConfigurationNumber) ? DEVICE_STATE_Configured : DEVICE_STATE_Addressed; EVENT_USB_Device_WakeUp(); #endif } @@ -168,8 +171,6 @@ ISR(USB_GEN_vect, ISR_BLOCK) #endif #if defined(USB_CAN_BE_HOST) - bool MustResetInterface = false; - if (USB_INT_HasOccurred(USB_INT_DDISCI) && USB_INT_IsEnabled(USB_INT_DDISCI)) { USB_INT_Clear(USB_INT_DDISCI); @@ -177,8 +178,8 @@ ISR(USB_GEN_vect, ISR_BLOCK) USB_INT_Disable(USB_INT_DDISCI); EVENT_USB_Host_DeviceUnattached(); - - MustResetInterface = true; + + USB_ResetInterface(); } if (USB_INT_HasOccurred(USB_INT_VBERRI) && USB_INT_IsEnabled(USB_INT_VBERRI)) @@ -213,7 +214,7 @@ ISR(USB_GEN_vect, ISR_BLOCK) EVENT_USB_Host_DeviceEnumerationFailed(HOST_ENUMERROR_NoDeviceDetected, 0); EVENT_USB_Host_DeviceUnattached(); - MustResetInterface = true; + USB_ResetInterface(); } if (USB_INT_HasOccurred(USB_INT_HSOFI) && USB_INT_IsEnabled(USB_INT_HSOFI)) @@ -236,13 +237,10 @@ ISR(USB_GEN_vect, ISR_BLOCK) EVENT_USB_Host_DeviceUnattached(); USB_CurrentMode = USB_GetUSBModeFromUID(); - EVENT_USB_UIDChange(); + USB_ResetInterface(); - MustResetInterface = true; + EVENT_USB_UIDChange(); } - - if (MustResetInterface) - USB_ResetInterface(); #endif }