From e071f3897a0946c6be1e1b5e1f78eda8dcbf6fc7 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 21 Jul 2009 13:31:21 +0000 Subject: Added new USB_DeviceState variable to keep track of the current Device mode USB state. Added new Endpoint_ClearStatusStage() convenience function to assist with the status stages of control transfers. Removed vague USB_IsConnected global - test USB_DeviceState or USB_HostState explicitly to gain previous functionality. Removed USB_IsSuspended global - test USB_DeviceState against DEVICE_STATE_Suspended instead. Fixed possible enumeration errors from spinloops which may fail to exit if the USB connection is severed before the exit condition becomes true. --- .../BluetoothHost/Lib/BluetoothHCICommands.c | 49 ++++++++++++++++++---- .../Incomplete/BluetoothHost/Lib/BluetoothStack.c | 2 +- 2 files changed, 43 insertions(+), 8 deletions(-) (limited to 'Demos/Host/Incomplete/BluetoothHost/Lib') diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothHCICommands.c b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothHCICommands.c index ddd159ef7..54291bf75 100644 --- a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothHCICommands.c +++ b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothHCICommands.c @@ -114,7 +114,12 @@ void Bluetooth_ProcessHCICommands(void) do { - while (!(Bluetooth_GetNextHCIEventHeader())); + while (!(Bluetooth_GetNextHCIEventHeader())) + { + if (USB_HostState == HOST_STATE_Unattached) + return; + } + Bluetooth_DiscardRemainingHCIEventParameters(); } while (HCIEventHeader.EventCode != EVENT_COMMAND_COMPLETE); @@ -133,7 +138,12 @@ void Bluetooth_ProcessHCICommands(void) do { - while (!(Bluetooth_GetNextHCIEventHeader())); + while (!(Bluetooth_GetNextHCIEventHeader())) + { + if (USB_HostState == HOST_STATE_Unattached) + return; + } + Bluetooth_DiscardRemainingHCIEventParameters(); } while (HCIEventHeader.EventCode != EVENT_COMMAND_COMPLETE); @@ -155,7 +165,12 @@ void Bluetooth_ProcessHCICommands(void) EventMask[3], EventMask[2], EventMask[1], EventMask[0]); do { - while (!(Bluetooth_GetNextHCIEventHeader())); + while (!(Bluetooth_GetNextHCIEventHeader())) + { + if (USB_HostState == HOST_STATE_Unattached) + return; + } + Bluetooth_DiscardRemainingHCIEventParameters(); } while (HCIEventHeader.EventCode != EVENT_COMMAND_COMPLETE); @@ -176,7 +191,12 @@ void Bluetooth_ProcessHCICommands(void) do { - while (!(Bluetooth_GetNextHCIEventHeader())); + while (!(Bluetooth_GetNextHCIEventHeader())) + { + if (USB_HostState == HOST_STATE_Unattached) + return; + } + Bluetooth_DiscardRemainingHCIEventParameters(); } while (HCIEventHeader.EventCode != EVENT_COMMAND_COMPLETE); @@ -195,7 +215,12 @@ void Bluetooth_ProcessHCICommands(void) do { - while (!(Bluetooth_GetNextHCIEventHeader())); + while (!(Bluetooth_GetNextHCIEventHeader())) + { + if (USB_HostState == HOST_STATE_Unattached) + return; + } + Bluetooth_DiscardRemainingHCIEventParameters(); } while (HCIEventHeader.EventCode != EVENT_COMMAND_COMPLETE); @@ -215,7 +240,12 @@ void Bluetooth_ProcessHCICommands(void) do { - while (!(Bluetooth_GetNextHCIEventHeader())); + while (!(Bluetooth_GetNextHCIEventHeader())) + { + if (USB_HostState == HOST_STATE_Unattached) + return; + } + Bluetooth_DiscardRemainingHCIEventParameters(); } while (HCIEventHeader.EventCode != EVENT_COMMAND_COMPLETE); @@ -366,7 +396,12 @@ void Bluetooth_ProcessHCICommands(void) do { - while (!(Bluetooth_GetNextHCIEventHeader())); + while (!(Bluetooth_GetNextHCIEventHeader())) + { + if (USB_DeviceState == DEVICE_STATE_Unattached) + return; + } + Bluetooth_DiscardRemainingHCIEventParameters(); } while (HCIEventHeader.EventCode != EVENT_COMMAND_COMPLETE); diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothStack.c b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothStack.c index e2659102e..628fa217c 100644 --- a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothStack.c +++ b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothStack.c @@ -41,7 +41,7 @@ Bluetooth_Device_t Bluetooth_DeviceConfiguration ATTR_WEAK = void Bluetooth_Stack_Task(void) { - if (!(USB_IsConnected) || (USB_HostState != HOST_STATE_Ready)) + if (USB_HostState != HOST_STATE_Configured) Bluetooth_HCIProcessingState = Bluetooth_Init; Bluetooth_ProcessHCICommands(); -- cgit v1.2.3