+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