volatile uint8_t USB_Options;\r
 #endif\r
 \r
+volatile bool FrameElapsed;\r
+\r
 void USB_Init(\r
                #if defined(USB_CAN_BE_BOTH)\r
                const uint8_t Mode\r
        }\r
        else\r
        {\r
-               RAISE_EVENT(USB_PowerOnFail, POWERON_ERROR_NoUSBModeSpecified);\r
+               EVENT_USB_InitFailure(USB_INITERROR_NoUSBModeSpecified);\r
                return;\r
        }\r
        #endif\r
 void USB_ShutDown(void)\r
 {\r
        if (USB_IsConnected)\r
-         RAISE_EVENT(USB_Disconnect);\r
+         EVENT_USB_Disconnect();\r
 \r
        USB_Detach();\r
 \r
        USB_INT_DisableAllInterrupts();\r
        USB_INT_ClearAllInterrupts();\r
 \r
-       USB_IsConnected          = false;\r
+       FrameElapsed = false;\r
+\r
+       USB_IsConnected = false;\r
 \r
        #if defined(USB_CAN_BE_HOST)\r
-       USB_HostState            = HOST_STATE_Unattached;\r
+       USB_HostState = HOST_STATE_Unattached;\r
        #endif\r
 \r
        #if defined(USB_CAN_BE_DEVICE)\r
        {\r
                USB_Descriptor_Device_t* DeviceDescriptorPtr;\r
 \r
-               if (USB_GetDescriptor((DTYPE_Device << 8), 0, (void*)&DeviceDescriptorPtr) != NO_DESCRIPTOR)\r
+               if (CALLBACK_USB_GetDescriptor((DTYPE_Device << 8), 0, (void*)&DeviceDescriptorPtr) != NO_DESCRIPTOR)\r
                {                 \r
                        #if defined(USE_RAM_DESCRIPTORS)\r
                                USB_ControlEndpointSize = DeviceDescriptorPtr->Endpoint0Size;\r
        #if defined(USB_DEVICE_ONLY)    \r
        USB_INT_Enable(USB_INT_SUSPEND);\r
        USB_INT_Enable(USB_INT_EORSTI);\r
-\r
        #if defined(CONTROL_ONLY_DEVICE)\r
        UENUM = ENDPOINT_CONTROLEP;\r
        #endif\r