diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2009-07-21 13:31:21 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2009-07-21 13:31:21 +0000 |
commit | e071f3897a0946c6be1e1b5e1f78eda8dcbf6fc7 (patch) | |
tree | 51ac5c80564fd76c93a357ee4d52a347384ac84b /Demos/Host/Incomplete/BluetoothHost/Lib | |
parent | 44179abcf85acb14fb3aff72ce50ae84281c0f2e (diff) | |
download | lufa-e071f3897a0946c6be1e1b5e1f78eda8dcbf6fc7.tar.gz lufa-e071f3897a0946c6be1e1b5e1f78eda8dcbf6fc7.tar.bz2 lufa-e071f3897a0946c6be1e1b5e1f78eda8dcbf6fc7.zip |
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.
Diffstat (limited to 'Demos/Host/Incomplete/BluetoothHost/Lib')
-rw-r--r-- | Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothHCICommands.c | 49 | ||||
-rw-r--r-- | Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothStack.c | 2 |
2 files changed, 43 insertions, 8 deletions
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();
|