aboutsummaryrefslogtreecommitdiffstats
path: root/Demos/Host/LowLevel/StillImageHost
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2009-07-13 05:34:43 +0000
committerDean Camera <dean@fourwalledcubicle.com>2009-07-13 05:34:43 +0000
commit0fcbe22c9eb68f5769bf57469e1bcf9b340d0ae3 (patch)
tree3c9c1613def7ed9c299d197c9a97fe7622eb987d /Demos/Host/LowLevel/StillImageHost
parenta54ed0085b29f81946f3652bd412103292da7589 (diff)
downloadlufa-0fcbe22c9eb68f5769bf57469e1bcf9b340d0ae3.tar.gz
lufa-0fcbe22c9eb68f5769bf57469e1bcf9b340d0ae3.tar.bz2
lufa-0fcbe22c9eb68f5769bf57469e1bcf9b340d0ae3.zip
Added new HOST_STATE_WaitForDeviceRemoval host state machine state for non-blocking disabling of device communications until the device has been removed (for use when an error occurs or communications with the device have completed). Changed over all host mode demos to use the new state.
Added verbose documentation for each of the USB Host state machine states.
Diffstat (limited to 'Demos/Host/LowLevel/StillImageHost')
-rw-r--r--Demos/Host/LowLevel/StillImageHost/StillImageHost.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/Demos/Host/LowLevel/StillImageHost/StillImageHost.c b/Demos/Host/LowLevel/StillImageHost/StillImageHost.c
index 524387123..0f511ad7a 100644
--- a/Demos/Host/LowLevel/StillImageHost/StillImageHost.c
+++ b/Demos/Host/LowLevel/StillImageHost/StillImageHost.c
@@ -149,7 +149,7 @@ void StillImage_Task(void)
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
/* Wait until USB device disconnected */
- while (USB_IsConnected);
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;
break;
}
@@ -162,7 +162,7 @@ void StillImage_Task(void)
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
/* Wait until USB device disconnected */
- while (USB_IsConnected);
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;
break;
}
@@ -195,6 +195,8 @@ void StillImage_Task(void)
if ((ErrorCode = SImage_RecieveBlockHeader()) != PIPE_RWSTREAM_NoError)
{
ShowCommandError(ErrorCode, false);
+
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;
break;
}
@@ -246,6 +248,8 @@ void StillImage_Task(void)
if ((ErrorCode = SImage_RecieveBlockHeader()) != PIPE_RWSTREAM_NoError)
{
ShowCommandError(ErrorCode, false);
+
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;
break;
}
@@ -253,6 +257,8 @@ void StillImage_Task(void)
if ((PIMA_ReceivedBlock.Type != CType_ResponseBlock) || (PIMA_ReceivedBlock.Code != PIMA_RESPONSE_OK))
{
ShowCommandError(PIMA_ReceivedBlock.Code, true);
+
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;
break;
}
@@ -274,6 +280,8 @@ void StillImage_Task(void)
if ((ErrorCode = SImage_RecieveBlockHeader()) != PIPE_RWSTREAM_NoError)
{
ShowCommandError(ErrorCode, false);
+
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;
break;
}
@@ -281,6 +289,8 @@ void StillImage_Task(void)
if ((PIMA_ReceivedBlock.Type != CType_ResponseBlock) || (PIMA_ReceivedBlock.Code != PIMA_RESPONSE_OK))
{
ShowCommandError(PIMA_ReceivedBlock.Code, true);
+
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;
break;
}
@@ -302,6 +312,8 @@ void StillImage_Task(void)
if ((ErrorCode = SImage_RecieveBlockHeader()) != PIPE_RWSTREAM_NoError)
{
ShowCommandError(ErrorCode, false);
+
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;
break;
}
@@ -309,6 +321,8 @@ void StillImage_Task(void)
if ((PIMA_ReceivedBlock.Type != CType_ResponseBlock) || (PIMA_ReceivedBlock.Code != PIMA_RESPONSE_OK))
{
ShowCommandError(PIMA_ReceivedBlock.Code, true);
+
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;
break;
}
@@ -363,7 +377,4 @@ void ShowCommandError(uint8_t ErrorCode, bool ResponseCodeError)
/* Indicate error via status LEDs */
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-
- /* Wait until USB device disconnected */
- while (USB_IsConnected);
}