\r
                        do\r
                        {\r
-                               while (!(Bluetooth_GetNextHCIEventHeader()));\r
+                               while (!(Bluetooth_GetNextHCIEventHeader()))\r
+                               {\r
+                                       if (USB_HostState == HOST_STATE_Unattached)\r
+                                         return;\r
+                               }\r
+               \r
                                Bluetooth_DiscardRemainingHCIEventParameters();\r
                        } while (HCIEventHeader.EventCode != EVENT_COMMAND_COMPLETE);\r
 \r
 \r
                        do\r
                        {\r
-                               while (!(Bluetooth_GetNextHCIEventHeader()));\r
+                               while (!(Bluetooth_GetNextHCIEventHeader()))\r
+                               {\r
+                                       if (USB_HostState == HOST_STATE_Unattached)\r
+                                         return;\r
+                               }\r
+\r
                                Bluetooth_DiscardRemainingHCIEventParameters();\r
                        } while (HCIEventHeader.EventCode != EVENT_COMMAND_COMPLETE);\r
 \r
                                                                                            EventMask[3], EventMask[2], EventMask[1], EventMask[0]);\r
                        do\r
                        {\r
-                               while (!(Bluetooth_GetNextHCIEventHeader()));\r
+                               while (!(Bluetooth_GetNextHCIEventHeader()))\r
+                               {\r
+                                       if (USB_HostState == HOST_STATE_Unattached)\r
+                                         return;\r
+                               }\r
+\r
                                Bluetooth_DiscardRemainingHCIEventParameters();\r
                        } while (HCIEventHeader.EventCode != EVENT_COMMAND_COMPLETE);\r
                \r
                        \r
                        do\r
                        {\r
-                               while (!(Bluetooth_GetNextHCIEventHeader()));\r
+                               while (!(Bluetooth_GetNextHCIEventHeader()))\r
+                               {\r
+                                       if (USB_HostState == HOST_STATE_Unattached)\r
+                                         return;\r
+                               }\r
+\r
                                Bluetooth_DiscardRemainingHCIEventParameters();\r
                        } while (HCIEventHeader.EventCode != EVENT_COMMAND_COMPLETE);\r
                        \r
 \r
                        do\r
                        {\r
-                               while (!(Bluetooth_GetNextHCIEventHeader()));\r
+                               while (!(Bluetooth_GetNextHCIEventHeader()))\r
+                               {\r
+                                       if (USB_HostState == HOST_STATE_Unattached)\r
+                                         return;\r
+                               }\r
+\r
                                Bluetooth_DiscardRemainingHCIEventParameters();\r
                        } while (HCIEventHeader.EventCode != EVENT_COMMAND_COMPLETE);\r
 \r
 \r
                        do\r
                        {\r
-                               while (!(Bluetooth_GetNextHCIEventHeader()));\r
+                               while (!(Bluetooth_GetNextHCIEventHeader()))\r
+                               {\r
+                                       if (USB_HostState == HOST_STATE_Unattached)\r
+                                         return;\r
+                               }\r
+\r
                                Bluetooth_DiscardRemainingHCIEventParameters();\r
                        } while (HCIEventHeader.EventCode != EVENT_COMMAND_COMPLETE);\r
 \r
                \r
                        do\r
                        {\r
-                               while (!(Bluetooth_GetNextHCIEventHeader()));\r
+                               while (!(Bluetooth_GetNextHCIEventHeader()))\r
+                               {                               \r
+                                       if (USB_HostState == HOST_STATE_Unattached)\r
+                                         return;\r
+                               }\r
+\r
                                Bluetooth_DiscardRemainingHCIEventParameters();\r
                        } while (HCIEventHeader.EventCode != EVENT_COMMAND_COMPLETE);\r
 \r