projects
/
pub
/
USBasp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Prevent the CDC Device Class driver from sending empty IN packets on every service...
[pub/USBasp.git]
/
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
816a5f1
..
aaa821e
100644
(file)
--- a/
LUFA/Drivers/USB/Class/Device/CDC.c
+++ b/
LUFA/Drivers/USB/Class/Device/CDC.c
@@
-143,11
+143,11
@@
uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpointNumber);
\r
\r
if (!(Endpoint_IsReadWriteAllowed()))
\r
Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpointNumber);
\r
\r
if (!(Endpoint_IsReadWriteAllowed()))
\r
- {
\r
- uint8_t ErrorCode;
\r
-
\r
+ {
\r
Endpoint_ClearIN();
\r
\r
Endpoint_ClearIN();
\r
\r
+ uint8_t ErrorCode;
\r
+
\r
if ((ErrorCode = Endpoint_WaitUntilReady()) != ENDPOINT_READYWAIT_NoError)
\r
return ErrorCode;
\r
}
\r
if ((ErrorCode = Endpoint_WaitUntilReady()) != ENDPOINT_READYWAIT_NoError)
\r
return ErrorCode;
\r
}
\r
@@
-161,20
+161,26
@@
uint8_t CDC_Device_Flush(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
\r
return ENDPOINT_READYWAIT_NoError;
\r
\r
if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
\r
return ENDPOINT_READYWAIT_NoError;
\r
\r
+ uint8_t ErrorCode;
\r
+
\r
Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpointNumber);
\r
Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpointNumber);
\r
+
\r
+ if (!(Endpoint_BytesInEndpoint()))
\r
+ return ENDPOINT_READYWAIT_NoError;
\r
+
\r
+ bool BankFull = !(Endpoint_IsReadWriteAllowed());
\r
\r
\r
- if (Endpoint_BytesInEndpoint())
\r
+ Endpoint_ClearIN();
\r
+
\r
+ if (BankFull)
\r
{
\r
{
\r
- uint8_t ErrorCode;
\r
-
\r
- Endpoint_ClearIN();
\r
-
\r
if ((ErrorCode = Endpoint_WaitUntilReady()) != ENDPOINT_READYWAIT_NoError)
\r
return ErrorCode;
\r
if ((ErrorCode = Endpoint_WaitUntilReady()) != ENDPOINT_READYWAIT_NoError)
\r
return ErrorCode;
\r
+
\r
+ Endpoint_ClearIN();
\r
}
\r
\r
}
\r
\r
- Endpoint_ClearIN();
\r
- return Endpoint_WaitUntilReady();
\r
+ return ENDPOINT_READYWAIT_NoError;
\r
}
\r
\r
uint16_t CDC_Device_BytesReceived(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
\r
}
\r
\r
uint16_t CDC_Device_BytesReceived(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
\r