From a9d5e129b76449c73a853af450d7d353512cd3a0 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Wed, 5 Aug 2009 09:37:45 +0000 Subject: Changed over manual loops waiting for endpoints to be ready to use the library Endpoint_WaitUntilReady() function for robustness. Fixes issues with terminated transfers on the host locking up USB devices. --- Demos/Device/LowLevel/CDC/CDC.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) (limited to 'Demos/Device/LowLevel/CDC/CDC.c') diff --git a/Demos/Device/LowLevel/CDC/CDC.c b/Demos/Device/LowLevel/CDC/CDC.c index 9ee744ea0..12cd8c40f 100644 --- a/Demos/Device/LowLevel/CDC/CDC.c +++ b/Demos/Device/LowLevel/CDC/CDC.c @@ -62,11 +62,8 @@ static int CDC_putchar(char c, FILE *stream) if (!(LineEncoding.BaudRateBPS)) return -1; - while (!(Endpoint_IsReadWriteAllowed())) - { - if (USB_DeviceState != DEVICE_STATE_Configured) - return -1; - } + if (Endpoint_WaitUntilReady()) + return -1; Endpoint_Write_Byte(c); Endpoint_ClearIN(); @@ -85,11 +82,8 @@ static int CDC_getchar(FILE *stream) for (;;) { - while (!(Endpoint_IsReadWriteAllowed())) - { - if (USB_DeviceState != DEVICE_STATE_Configured) - return -1; - } + if (Endpoint_WaitUntilReady()) + return -1; if (!(Endpoint_BytesInEndpoint())) { @@ -327,11 +321,7 @@ void CDC_Task(void) if (IsFull) { /* Wait until the endpoint is ready for another packet */ - while (!(Endpoint_IsINReady())) - { - if (USB_DeviceState == DEVICE_STATE_Unattached) - return; - } + Endpoint_WaitUntilReady(); /* Send an empty packet to ensure that the host does not buffer data sent to it */ Endpoint_ClearIN(); -- cgit v1.2.3