Move the length decrements in the pipe and endpoint stream functions to the point at which the buffers are operated on, to prevent decrements during iterations where no data is exchanged (thanks to Francisco Moraes).

pull/1469/head
Dean Camera 16 years ago
parent a504a3a010
commit e21b620bf6

@ -117,7 +117,7 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length
if ((ErrorCode = Endpoint_WaitUntilReady())) if ((ErrorCode = Endpoint_WaitUntilReady()))
return ErrorCode; return ErrorCode;
while (Length--) while (Length)
{ {
if (!(Endpoint_IsReadWriteAllowed())) if (!(Endpoint_IsReadWriteAllowed()))
{ {
@ -134,6 +134,7 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length
else else
{ {
Endpoint_Discard_Byte(); Endpoint_Discard_Byte();
Length--;
} }
} }
@ -152,7 +153,7 @@ uint8_t Endpoint_Write_Stream_LE(const void* Buffer, uint16_t Length
if ((ErrorCode = Endpoint_WaitUntilReady())) if ((ErrorCode = Endpoint_WaitUntilReady()))
return ErrorCode; return ErrorCode;
while (Length--) while (Length)
{ {
if (!(Endpoint_IsReadWriteAllowed())) if (!(Endpoint_IsReadWriteAllowed()))
{ {
@ -169,6 +170,7 @@ uint8_t Endpoint_Write_Stream_LE(const void* Buffer, uint16_t Length
else else
{ {
Endpoint_Write_Byte(*(DataStream++)); Endpoint_Write_Byte(*(DataStream++));
Length--;
} }
} }
@ -187,7 +189,7 @@ uint8_t Endpoint_Write_Stream_BE(const void* Buffer, uint16_t Length
if ((ErrorCode = Endpoint_WaitUntilReady())) if ((ErrorCode = Endpoint_WaitUntilReady()))
return ErrorCode; return ErrorCode;
while (Length--) while (Length)
{ {
if (!(Endpoint_IsReadWriteAllowed())) if (!(Endpoint_IsReadWriteAllowed()))
{ {
@ -204,6 +206,7 @@ uint8_t Endpoint_Write_Stream_BE(const void* Buffer, uint16_t Length
else else
{ {
Endpoint_Write_Byte(*(DataStream--)); Endpoint_Write_Byte(*(DataStream--));
Length--;
} }
} }
@ -222,7 +225,7 @@ uint8_t Endpoint_Read_Stream_LE(void* Buffer, uint16_t Length
if ((ErrorCode = Endpoint_WaitUntilReady())) if ((ErrorCode = Endpoint_WaitUntilReady()))
return ErrorCode; return ErrorCode;
while (Length--) while (Length)
{ {
if (!(Endpoint_IsReadWriteAllowed())) if (!(Endpoint_IsReadWriteAllowed()))
{ {
@ -239,6 +242,7 @@ uint8_t Endpoint_Read_Stream_LE(void* Buffer, uint16_t Length
else else
{ {
*(DataStream++) = Endpoint_Read_Byte(); *(DataStream++) = Endpoint_Read_Byte();
Length--;
} }
} }
@ -257,7 +261,7 @@ uint8_t Endpoint_Read_Stream_BE(void* Buffer, uint16_t Length
if ((ErrorCode = Endpoint_WaitUntilReady())) if ((ErrorCode = Endpoint_WaitUntilReady()))
return ErrorCode; return ErrorCode;
while (Length--) while (Length)
{ {
if (!(Endpoint_IsReadWriteAllowed())) if (!(Endpoint_IsReadWriteAllowed()))
{ {
@ -274,6 +278,7 @@ uint8_t Endpoint_Read_Stream_BE(void* Buffer, uint16_t Length
else else
{ {
*(DataStream--) = Endpoint_Read_Byte(); *(DataStream--) = Endpoint_Read_Byte();
Length--;
} }
} }
@ -294,7 +299,6 @@ uint8_t Endpoint_Write_Control_Stream_LE(const void* Buffer, uint16_t Length)
while (Length && (Endpoint_BytesInEndpoint() < USB_ControlEndpointSize)) while (Length && (Endpoint_BytesInEndpoint() < USB_ControlEndpointSize))
{ {
Endpoint_Write_Byte(*(DataStream++)); Endpoint_Write_Byte(*(DataStream++));
Length--; Length--;
} }
@ -329,7 +333,6 @@ uint8_t Endpoint_Write_Control_Stream_BE(const void* Buffer, uint16_t Length)
while (Length && (Endpoint_BytesInEndpoint() < USB_ControlEndpointSize)) while (Length && (Endpoint_BytesInEndpoint() < USB_ControlEndpointSize))
{ {
Endpoint_Write_Byte(*(DataStream--)); Endpoint_Write_Byte(*(DataStream--));
Length--; Length--;
} }
@ -362,7 +365,6 @@ uint8_t Endpoint_Read_Control_Stream_LE(void* Buffer, uint16_t Length)
while (Length && Endpoint_BytesInEndpoint()) while (Length && Endpoint_BytesInEndpoint())
{ {
*(DataStream++) = Endpoint_Read_Byte(); *(DataStream++) = Endpoint_Read_Byte();
Length--; Length--;
} }
@ -385,7 +387,6 @@ uint8_t Endpoint_Read_Control_Stream_BE(void* Buffer, uint16_t Length)
while (Length && Endpoint_BytesInEndpoint()) while (Length && Endpoint_BytesInEndpoint())
{ {
*(DataStream--) = Endpoint_Read_Byte(); *(DataStream--) = Endpoint_Read_Byte();
Length--; Length--;
} }

@ -114,7 +114,7 @@ uint8_t Pipe_Write_Stream_LE(const void* Data, uint16_t Length
if ((ErrorCode = Pipe_WaitUntilReady())) if ((ErrorCode = Pipe_WaitUntilReady()))
return ErrorCode; return ErrorCode;
while (Length--) while (Length)
{ {
if (!(Pipe_IsReadWriteAllowed())) if (!(Pipe_IsReadWriteAllowed()))
{ {
@ -131,6 +131,7 @@ uint8_t Pipe_Write_Stream_LE(const void* Data, uint16_t Length
else else
{ {
Pipe_Write_Byte(*(DataStream++)); Pipe_Write_Byte(*(DataStream++));
Length--;
} }
} }
@ -149,7 +150,7 @@ uint8_t Pipe_Write_Stream_BE(const void* Data, uint16_t Length
if ((ErrorCode = Pipe_WaitUntilReady())) if ((ErrorCode = Pipe_WaitUntilReady()))
return ErrorCode; return ErrorCode;
while (Length--) while (Length)
{ {
if (!(Pipe_IsReadWriteAllowed())) if (!(Pipe_IsReadWriteAllowed()))
{ {
@ -166,6 +167,7 @@ uint8_t Pipe_Write_Stream_BE(const void* Data, uint16_t Length
else else
{ {
Pipe_Write_Byte(*(DataStream--)); Pipe_Write_Byte(*(DataStream--));
Length--;
} }
} }
@ -183,7 +185,7 @@ uint8_t Pipe_Discard_Stream(uint16_t Length
if ((ErrorCode = Pipe_WaitUntilReady())) if ((ErrorCode = Pipe_WaitUntilReady()))
return ErrorCode; return ErrorCode;
while (Length--) while (Length)
{ {
if (!(Pipe_IsReadWriteAllowed())) if (!(Pipe_IsReadWriteAllowed()))
{ {
@ -200,6 +202,7 @@ uint8_t Pipe_Discard_Stream(uint16_t Length
else else
{ {
Pipe_Discard_Byte(); Pipe_Discard_Byte();
Length--;
} }
} }
@ -218,7 +221,7 @@ uint8_t Pipe_Read_Stream_LE(void* Buffer, uint16_t Length
if ((ErrorCode = Pipe_WaitUntilReady())) if ((ErrorCode = Pipe_WaitUntilReady()))
return ErrorCode; return ErrorCode;
while (Length--) while (Length)
{ {
if (!(Pipe_IsReadWriteAllowed())) if (!(Pipe_IsReadWriteAllowed()))
{ {
@ -235,6 +238,7 @@ uint8_t Pipe_Read_Stream_LE(void* Buffer, uint16_t Length
else else
{ {
*(DataStream++) = Pipe_Read_Byte(); *(DataStream++) = Pipe_Read_Byte();
Length--;
} }
} }
@ -253,7 +257,7 @@ uint8_t Pipe_Read_Stream_BE(void* Buffer, uint16_t Length
if ((ErrorCode = Pipe_WaitUntilReady())) if ((ErrorCode = Pipe_WaitUntilReady()))
return ErrorCode; return ErrorCode;
while (Length--) while (Length)
{ {
if (!(Pipe_IsReadWriteAllowed())) if (!(Pipe_IsReadWriteAllowed()))
{ {
@ -270,6 +274,7 @@ uint8_t Pipe_Read_Stream_BE(void* Buffer, uint16_t Length
else else
{ {
*(DataStream--) = Pipe_Read_Byte(); *(DataStream--) = Pipe_Read_Byte();
Length--;
} }
} }

Loading…
Cancel
Save