Commit d26a9ed5 authored by Dean Camera's avatar Dean Camera
Browse files

Be doubly-certain that the incomming CDC class driver's endpoint/pipe is...

Be doubly-certain that the incomming CDC class driver's endpoint/pipe is flushed only once when the bank is empty.
parent cec699ac
...@@ -190,10 +190,17 @@ uint16_t CDC_Device_BytesReceived(USB_ClassInfo_CDC_Device_t* const CDCInterface ...@@ -190,10 +190,17 @@ uint16_t CDC_Device_BytesReceived(USB_ClassInfo_CDC_Device_t* const CDCInterface
Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataOUTEndpointNumber); Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataOUTEndpointNumber);
if (Endpoint_IsOUTReceived() && !(Endpoint_BytesInEndpoint())) if (Endpoint_IsOUTReceived())
Endpoint_ClearOUT(); {
if (!(Endpoint_BytesInEndpoint()))
Endpoint_ClearOUT();
return Endpoint_BytesInEndpoint(); return Endpoint_BytesInEndpoint();
}
else
{
return 0;
}
} }
uint8_t CDC_Device_ReceiveByte(USB_ClassInfo_CDC_Device_t* CDCInterfaceInfo) uint8_t CDC_Device_ReceiveByte(USB_ClassInfo_CDC_Device_t* CDCInterfaceInfo)
......
...@@ -309,13 +309,22 @@ uint16_t CDC_Host_BytesReceived(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo ...@@ -309,13 +309,22 @@ uint16_t CDC_Host_BytesReceived(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo
Pipe_SetPipeToken(PIPE_TOKEN_IN); Pipe_SetPipeToken(PIPE_TOKEN_IN);
Pipe_Unfreeze(); Pipe_Unfreeze();
if (Pipe_IsINReceived() && !(Pipe_BytesInPipe())) if (Pipe_IsINReceived())
Pipe_ClearIN(); {
if (!(Pipe_BytesInPipe()))
BytesInPipe = Pipe_BytesInPipe(); Pipe_ClearIN();
Pipe_Freeze();
BytesInPipe = Pipe_BytesInPipe();
return BytesInPipe; Pipe_Freeze();
return BytesInPipe;
}
else
{
Pipe_Freeze();
return 0;
}
} }
uint8_t CDC_Host_ReceiveByte(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo) uint8_t CDC_Host_ReceiveByte(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment