From 5d2743e85238306d993afbf2830c26e1d07cf1e7 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sat, 8 Dec 2018 11:10:28 +1100 Subject: Optimize Endpoint_Discard_Stream() and Endpoint_Null_Stream(). --- LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c | 22 ++++++---------------- LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.c | 22 ++++++---------------- LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c | 22 ++++++---------------- 3 files changed, 18 insertions(+), 48 deletions(-) diff --git a/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c b/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c index 0364c60f1..bf6fee42a 100644 --- a/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c +++ b/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c @@ -43,15 +43,12 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length, uint16_t* const BytesProcessed) { uint8_t ErrorCode; - uint16_t BytesInTransfer = 0; + uint16_t BytesInTransfer = BytesProcessed ? *BytesProcessed : 0; if ((ErrorCode = Endpoint_WaitUntilReady())) return ErrorCode; - if (BytesProcessed != NULL) - Length -= *BytesProcessed; - - while (Length) + while (BytesInTransfer < Length) { if (!(Endpoint_IsReadWriteAllowed())) { @@ -59,7 +56,7 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length, if (BytesProcessed != NULL) { - *BytesProcessed += BytesInTransfer; + *BytesProcessed = BytesInTransfer; return ENDPOINT_RWSTREAM_IncompleteTransfer; } @@ -69,8 +66,6 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length, else { Endpoint_Discard_8(); - - Length--; BytesInTransfer++; } } @@ -82,15 +77,12 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, uint16_t* const BytesProcessed) { uint8_t ErrorCode; - uint16_t BytesInTransfer = 0; + uint16_t BytesInTransfer = BytesProcessed ? *BytesProcessed : 0; if ((ErrorCode = Endpoint_WaitUntilReady())) return ErrorCode; - if (BytesProcessed != NULL) - Length -= *BytesProcessed; - - while (Length) + while (BytesInTransfer < Length) { if (!(Endpoint_IsReadWriteAllowed())) { @@ -98,7 +90,7 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, if (BytesProcessed != NULL) { - *BytesProcessed += BytesInTransfer; + *BytesProcessed = BytesInTransfer; return ENDPOINT_RWSTREAM_IncompleteTransfer; } @@ -108,8 +100,6 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, else { Endpoint_Write_8(0); - - Length--; BytesInTransfer++; } } diff --git a/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.c b/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.c index 214edd733..5a6131f1f 100644 --- a/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.c +++ b/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.c @@ -43,15 +43,12 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length, uint16_t* const BytesProcessed) { uint8_t ErrorCode; - uint16_t BytesInTransfer = 0; + uint16_t BytesInTransfer = BytesProcessed ? *BytesProcessed : 0; if ((ErrorCode = Endpoint_WaitUntilReady())) return ErrorCode; - if (BytesProcessed != NULL) - Length -= *BytesProcessed; - - while (Length) + while (BytesInTransfer < Length) { if (!(Endpoint_IsReadWriteAllowed())) { @@ -59,7 +56,7 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length, if (BytesProcessed != NULL) { - *BytesProcessed += BytesInTransfer; + *BytesProcessed = BytesInTransfer; return ENDPOINT_RWSTREAM_IncompleteTransfer; } @@ -69,8 +66,6 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length, else { Endpoint_Discard_8(); - - Length--; BytesInTransfer++; } } @@ -82,15 +77,12 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, uint16_t* const BytesProcessed) { uint8_t ErrorCode; - uint16_t BytesInTransfer = 0; + uint16_t BytesInTransfer = BytesProcessed ? *BytesProcessed : 0; if ((ErrorCode = Endpoint_WaitUntilReady())) return ErrorCode; - if (BytesProcessed != NULL) - Length -= *BytesProcessed; - - while (Length) + while (BytesInTransfer < Length) { if (!(Endpoint_IsReadWriteAllowed())) { @@ -98,7 +90,7 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, if (BytesProcessed != NULL) { - *BytesProcessed += BytesInTransfer; + *BytesProcessed = BytesInTransfer; return ENDPOINT_RWSTREAM_IncompleteTransfer; } @@ -108,8 +100,6 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, else { Endpoint_Write_8(0); - - Length--; BytesInTransfer++; } } diff --git a/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c b/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c index a24f624ab..e8ee7e645 100644 --- a/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c +++ b/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c @@ -43,15 +43,12 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length, uint16_t* const BytesProcessed) { uint8_t ErrorCode; - uint16_t BytesInTransfer = 0; + uint16_t BytesInTransfer = BytesProcessed ? *BytesProcessed : 0; if ((ErrorCode = Endpoint_WaitUntilReady())) return ErrorCode; - if (BytesProcessed != NULL) - Length -= *BytesProcessed; - - while (Length) + while (BytesInTransfer < Length) { if (!(Endpoint_IsReadWriteAllowed())) { @@ -59,7 +56,7 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length, if (BytesProcessed != NULL) { - *BytesProcessed += BytesInTransfer; + *BytesProcessed = BytesInTransfer; return ENDPOINT_RWSTREAM_IncompleteTransfer; } @@ -69,8 +66,6 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length, else { Endpoint_Discard_8(); - - Length--; BytesInTransfer++; } } @@ -82,15 +77,12 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, uint16_t* const BytesProcessed) { uint8_t ErrorCode; - uint16_t BytesInTransfer = 0; + uint16_t BytesInTransfer = BytesProcessed ? *BytesProcessed : 0; if ((ErrorCode = Endpoint_WaitUntilReady())) return ErrorCode; - if (BytesProcessed != NULL) - Length -= *BytesProcessed; - - while (Length) + while (BytesInTransfer < Length) { if (!(Endpoint_IsReadWriteAllowed())) { @@ -98,7 +90,7 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, if (BytesProcessed != NULL) { - *BytesProcessed += BytesInTransfer; + *BytesProcessed = BytesInTransfer; return ENDPOINT_RWSTREAM_IncompleteTransfer; } @@ -108,8 +100,6 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, else { Endpoint_Write_8(0); - - Length--; BytesInTransfer++; } } -- cgit v1.2.3