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. --- LUFA/Drivers/USB/Class/Device/CDC.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) (limited to 'LUFA/Drivers/USB/Class/Device/CDC.c') diff --git a/LUFA/Drivers/USB/Class/Device/CDC.c b/LUFA/Drivers/USB/Class/Device/CDC.c index 9da0ed1eb..0d6b37850 100644 --- a/LUFA/Drivers/USB/Class/Device/CDC.c +++ b/LUFA/Drivers/USB/Class/Device/CDC.c @@ -126,12 +126,7 @@ void CDC_Device_USBTask(USB_ClassInfo_CDC_Device_t* CDCInterfaceInfo) if (!(Endpoint_IsReadWriteAllowed())) { Endpoint_ClearIN(); - - while (!(Endpoint_IsReadWriteAllowed())) - { - if (USB_DeviceState == DEVICE_STATE_Unattached) - return; - } + Endpoint_WaitUntilReady(); } Endpoint_ClearIN(); @@ -156,12 +151,7 @@ void CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, con if (!(Endpoint_IsReadWriteAllowed())) { Endpoint_ClearIN(); - - while (!(Endpoint_IsReadWriteAllowed())) - { - if (USB_DeviceState == DEVICE_STATE_Unattached) - return; - } + Endpoint_WaitUntilReady(); } Endpoint_Write_Byte(Data); -- cgit v1.2.3