#endif\r
)\r
{\r
- USB_ShutDown();\r
-\r
#if defined(USB_CAN_BE_BOTH)\r
USB_CurrentMode = Mode;\r
#endif\r
\r
void USB_ShutDown(void)\r
{\r
- if (USB_IsConnected)\r
- EVENT_USB_Disconnect();\r
-\r
- USB_Detach();\r
-\r
- USB_INT_DisableAllInterrupts();\r
- USB_INT_ClearAllInterrupts();\r
-\r
- USB_IsConnected = false;\r
- USB_IsInitialized = false;\r
-\r
- #if defined(USB_CAN_BE_HOST)\r
- USB_HostState = HOST_STATE_Unattached;\r
- #endif\r
-\r
#if defined(USB_CAN_BE_DEVICE)\r
- USB_ConfigurationNumber = 0;\r
+ if (USB_DeviceState != DEVICE_STATE_Unattached)\r
+ EVENT_USB_Disconnect();\r
#endif\r
-\r
- #if defined(CAN_BE_BOTH)\r
- USB_CurrentMode = USB_MODE_NONE;\r
+ \r
+ #if defined(USB_CAN_BE_HOST)\r
+ if (USB_HostState != HOST_STATE_Unattached)\r
+ EVENT_USB_Disconnect();\r
#endif\r
\r
- USB_Interface_Disable();\r
+ USB_ResetInterface();\r
+ USB_Detach();\r
+ USB_Controller_Disable();\r
USB_PLL_Off();\r
\r
#if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)\r
#if defined(USB_CAN_BE_BOTH)\r
UHWCON &= ~(1 << UIDE);\r
#endif\r
+\r
+ USB_IsInitialized = false;\r
+\r
+ #if defined(CAN_BE_BOTH)\r
+ USB_CurrentMode = USB_MODE_NONE;\r
+ #endif\r
}\r
\r
void USB_ResetInterface(void)\r
{\r
USB_INT_DisableAllInterrupts();\r
USB_INT_ClearAllInterrupts();\r
-\r
- USB_IsConnected = false;\r
-\r
+ \r
#if defined(USB_CAN_BE_HOST)\r
- USB_HostState = HOST_STATE_Unattached;\r
+ USB_HostState = HOST_STATE_Unattached;\r
#endif\r
-\r
+ \r
#if defined(USB_CAN_BE_DEVICE)\r
+ USB_DeviceState = DEVICE_STATE_Unattached;\r
USB_ConfigurationNumber = 0;\r
- USB_IsSuspended = false;\r
USB_RemoteWakeupEnabled = false;\r
USB_CurrentlySelfPowered = false;\r
#endif\r
while (!(USB_PLL_IsReady()));\r
}\r
\r
- USB_Interface_Reset();\r
+ USB_Controller_Reset();\r
\r
#if defined(USB_CAN_BE_BOTH)\r
if (UHWCON & (1 << UIDE))\r