aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA/Drivers/USB/Class/Device/CDC.c
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2009-08-31 12:43:28 +0000
committerDean Camera <dean@fourwalledcubicle.com>2009-08-31 12:43:28 +0000
commitcf2776531c04b0ebe4fdd9d4ef5324dacefd5639 (patch)
tree77b16f5d7549c309950e0c0b9eadc527382ba613 /LUFA/Drivers/USB/Class/Device/CDC.c
parent778da9dc6d48c670b9fb0ce219e8df083a33e0c6 (diff)
downloadlufa-cf2776531c04b0ebe4fdd9d4ef5324dacefd5639.tar.gz
lufa-cf2776531c04b0ebe4fdd9d4ef5324dacefd5639.tar.bz2
lufa-cf2776531c04b0ebe4fdd9d4ef5324dacefd5639.zip
Add extra check for OUT ZLP in the CDC Device Class driver service task to quickly clear zero-length termination packets from the host.
Diffstat (limited to 'LUFA/Drivers/USB/Class/Device/CDC.c')
-rw-r--r--LUFA/Drivers/USB/Class/Device/CDC.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/LUFA/Drivers/USB/Class/Device/CDC.c b/LUFA/Drivers/USB/Class/Device/CDC.c
index 31fd8f1b0..816a5f13d 100644
--- a/LUFA/Drivers/USB/Class/Device/CDC.c
+++ b/LUFA/Drivers/USB/Class/Device/CDC.c
@@ -118,6 +118,11 @@ void CDC_Device_USBTask(USB_ClassInfo_CDC_Device_t* CDCInterfaceInfo)
if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
return;
+ Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataOUTEndpointNumber);
+
+ if (Endpoint_IsOUTReceived() && !(Endpoint_BytesInEndpoint()))
+ Endpoint_ClearOUT();
+
CDC_Device_Flush(CDCInterfaceInfo);
}