diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2009-07-21 02:48:41 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2009-07-21 02:48:41 +0000 |
commit | 67f390fe746ccc4d1dceac23f590eb1723cb7ff2 (patch) | |
tree | eafc8a4dcb64a038afcb16fcae8d48033dc74249 /Demos/Host/ClassDriver | |
parent | bf50959b8016adbf6b295178b26b8173514dd060 (diff) | |
download | lufa-67f390fe746ccc4d1dceac23f590eb1723cb7ff2.tar.gz lufa-67f390fe746ccc4d1dceac23f590eb1723cb7ff2.tar.bz2 lufa-67f390fe746ccc4d1dceac23f590eb1723cb7ff2.zip |
Add explicit guards to all device mode tasks to ensure the device is connected and configured before running the task, to prevent any user tasks from locking up the main USB task if the device has not been properly configured.
Diffstat (limited to 'Demos/Host/ClassDriver')
-rw-r--r-- | Demos/Host/ClassDriver/CDCHost/CDCHost.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/Demos/Host/ClassDriver/CDCHost/CDCHost.c b/Demos/Host/ClassDriver/CDCHost/CDCHost.c index 1edb352f5..0c331bcde 100644 --- a/Demos/Host/ClassDriver/CDCHost/CDCHost.c +++ b/Demos/Host/ClassDriver/CDCHost/CDCHost.c @@ -62,7 +62,7 @@ int main(void) {
SetupHardware();
- puts_P(PSTR(ESC_FG_CYAN "CDC Host Demo running.\r\n"));
+ puts_P(PSTR(ESC_FG_CYAN "CDC Host Demo running.\r\n" ESC_FG_WHITE));
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
@@ -72,8 +72,11 @@ int main(void) {
case HOST_STATE_Addressed:
if (!(CDC_Host_ConfigurePipes(&VirtualSerial_CDC_Interface)))
- LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-
+ {
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;
+ }
+
USB_HostState = HOST_STATE_Configured;
break;
case HOST_STATE_Configured:
@@ -135,8 +138,8 @@ void EVENT_USB_HostError(const uint8_t ErrorCode) {
USB_ShutDown();
- puts_P(PSTR(ESC_FG_RED "Host Mode Error\r\n" ESC_FG_WHITE));
- printf_P(PSTR(" -- Error Code %d\r\n"), ErrorCode);
+ puts_P(PSTR(ESC_FG_RED "Host Mode Error\r\n"));
+ printf_P(PSTR(" -- Error Code %d\r\n" ESC_FG_WHITE), ErrorCode);
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
for(;;);
|