+ISR(USB_BUSEVENT_vect)\r
+{\r
+       #if !defined(NO_SOF_EVENTS)\r
+       if (USB_INT_HasOccurred(USB_INT_SOFI) && USB_INT_IsEnabled(USB_INT_SOFI))\r
+       {\r
+               USB_INT_Clear(USB_INT_SOFI);\r
+\r
+               EVENT_USB_Device_StartOfFrame();\r
+       }\r
+       #endif\r
+\r
+       if (USB_INT_HasOccurred(USB_INT_BUSEVENTI_Suspend))\r
+       {\r
+               USB_INT_Clear(USB_INT_BUSEVENTI_Suspend);\r
+\r
+               #if !defined(NO_LIMITED_CONTROLLER_CONNECT)\r
+               USB_DeviceState = DEVICE_STATE_Unattached;\r
+               EVENT_USB_Device_Disconnect();\r
+               #else\r
+               USB_DeviceState = DEVICE_STATE_Suspended;\r
+               EVENT_USB_Device_Suspend();\r
+               #endif\r
+       }\r
+\r
+       if (USB_INT_HasOccurred(USB_INT_BUSEVENTI_Resume))\r
+       {\r
+               USB_INT_Clear(USB_INT_BUSEVENTI_Resume);\r
+               \r
+               if (USB_Device_ConfigurationNumber)\r
+                 USB_DeviceState = DEVICE_STATE_Configured;\r
+               else\r
+                 USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered;\r
+\r
+               #if !defined(NO_LIMITED_CONTROLLER_CONNECT)\r
+               EVENT_USB_Device_Connect();\r
+               #else\r
+               EVENT_USB_Device_WakeUp();\r
+               #endif\r
+       }\r
+\r
+       if (USB_INT_HasOccurred(USB_INT_BUSEVENTI_Reset))\r
+       {\r
+               USB_INT_Clear(USB_INT_BUSEVENTI_Reset);\r
+               \r
+               USB_DeviceState                = DEVICE_STATE_Default;\r
+               USB_Device_ConfigurationNumber = 0;\r
+\r
+               Endpoint_ConfigureEndpoint(ENDPOINT_CONTROLEP, EP_TYPE_CONTROL,\r
+                                          ENDPOINT_DIR_OUT, USB_Device_ControlEndpointSize,\r
+                                          ENDPOINT_BANK_SINGLE);\r
+\r
+               EVENT_USB_Device_Reset();\r
+       }\r
+}\r