X-Git-Url: http://git.linex4red.de/pub/lufa.git/blobdiff_plain/df29aa37c05ff0251bd17f54c750bac56d7279b7..df5500e81cc40633eb5edee59410030f0aa77c2d:/LUFA/Drivers/USB/Class/Device/CDC.c?ds=inline diff --git a/LUFA/Drivers/USB/Class/Device/CDC.c b/LUFA/Drivers/USB/Class/Device/CDC.c index a6e5e2689..cbb9a8585 100644 --- a/LUFA/Drivers/USB/Class/Device/CDC.c +++ b/LUFA/Drivers/USB/Class/Device/CDC.c @@ -115,21 +115,10 @@ bool CDC_Device_ConfigureEndpoints(USB_ClassInfo_CDC_Device_t* CDCInterfaceInfo) void CDC_Device_USBTask(USB_ClassInfo_CDC_Device_t* CDCInterfaceInfo) { - if (USB_DeviceState != DEVICE_STATE_Configured) + if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) return; - Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpointNumber); - - if (!(Endpoint_BytesInEndpoint())) - return; - - if (!(Endpoint_IsReadWriteAllowed())) - { - Endpoint_ClearIN(); - Endpoint_WaitUntilReady(); - } - - Endpoint_ClearIN(); + CDC_Device_Flush(CDCInterfaceInfo); } void CDC_Device_SendString(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, char* const Data, const uint16_t Length) @@ -157,6 +146,23 @@ void CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, con Endpoint_Write_Byte(Data); } +void CDC_Device_Flush(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) +{ + if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) + return; + + Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpointNumber); + + if (Endpoint_BytesInEndpoint()) + { + Endpoint_ClearIN(); + Endpoint_WaitUntilReady(); + } + + Endpoint_ClearIN(); + Endpoint_WaitUntilReady(); +} + uint16_t CDC_Device_BytesReceived(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) { Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataOUTEndpointNumber);