projects
/
pub
/
USBasp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix build errors in Joystick device demo and library LEDs driver (on *nix systems).
[pub/USBasp.git]
/
LUFA
/
Drivers
/
USB
/
LowLevel
/
Pipe.c
diff --git
a/LUFA/Drivers/USB/LowLevel/Pipe.c
b/LUFA/Drivers/USB/LowLevel/Pipe.c
index
496df33
..
c81ee64
100644
(file)
--- a/
LUFA/Drivers/USB/LowLevel/Pipe.c
+++ b/
LUFA/Drivers/USB/LowLevel/Pipe.c
@@
-27,7
+27,9
@@
arising out of or in connection with the use or performance of
\r
this software.
\r
*/
\r
arising out of or in connection with the use or performance of
\r
this software.
\r
*/
\r
-#include "USBMode.h"
\r
+
\r
+#include "../HighLevel/USBMode.h"
\r
+
\r
#if defined(USB_CAN_BE_HOST)
\r
\r
#define INCLUDE_FROM_PIPE_C
\r
#if defined(USB_CAN_BE_HOST)
\r
\r
#define INCLUDE_FROM_PIPE_C
\r
@@
-35,7
+37,7
@@
\r
uint8_t USB_ControlPipeSize = PIPE_CONTROLPIPE_DEFAULT_SIZE;
\r
\r
\r
uint8_t USB_ControlPipeSize = PIPE_CONTROLPIPE_DEFAULT_SIZE;
\r
\r
-bool Pipe_ConfigurePipe(const uint8_t
Number, const uint8_t Type, const uint8_t Token, const uint8_t EndpointNumber,
\r
+bool Pipe_ConfigurePipe(const uint8_t Number, const uint8_t Type, const uint8_t Token, const uint8_t EndpointNumber,
\r
const uint16_t Size, const uint8_t Banks)
\r
{
\r
Pipe_SelectPipe(Number);
\r
const uint16_t Size, const uint8_t Banks)
\r
{
\r
Pipe_SelectPipe(Number);
\r
@@
-72,8
+74,19
@@
uint8_t Pipe_WaitUntilReady(void)
\r
USB_INT_Clear(USB_INT_HSOFI);
\r
\r
\r
USB_INT_Clear(USB_INT_HSOFI);
\r
\r
-
while (!(Pipe_ReadWriteAllowed())
)
\r
+
for (;;
)
\r
{
\r
{
\r
+ if (Pipe_GetPipeToken() == PIPE_TOKEN_IN)
\r
+ {
\r
+ if (Pipe_IsINReceived())
\r
+ return PIPE_READYWAIT_NoError;
\r
+ }
\r
+ else
\r
+ {
\r
+ if (Pipe_IsOUTReady())
\r
+ return PIPE_READYWAIT_NoError;
\r
+ }
\r
+
\r
if (Pipe_IsStalled())
\r
return PIPE_READYWAIT_PipeStalled;
\r
else if (!(USB_IsConnected))
\r
if (Pipe_IsStalled())
\r
return PIPE_READYWAIT_PipeStalled;
\r
else if (!(USB_IsConnected))
\r
@@
-87,8
+100,6
@@
uint8_t Pipe_WaitUntilReady(void)
return PIPE_READYWAIT_Timeout;
\r
}
\r
}
\r
return PIPE_READYWAIT_Timeout;
\r
}
\r
}
\r
-
\r
- return PIPE_READYWAIT_NoError;
\r
}
\r
\r
uint8_t Pipe_Write_Stream_LE(const void* Data, uint16_t Length
\r
}
\r
\r
uint8_t Pipe_Write_Stream_LE(const void* Data, uint16_t Length
\r
@@
-103,25
+114,28
@@
uint8_t Pipe_Write_Stream_LE(const void* Data, uint16_t Length
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
\r
- while (Length
--
)
\r
+ while (Length)
\r
{
\r
{
\r
- if (!(Pipe_ReadWriteAllowed()))
\r
+ if (!(Pipe_
Is
ReadWriteAllowed()))
\r
{
\r
{
\r
- Pipe_Clear
CurrentBank
();
\r
+ Pipe_Clear
OUT
();
\r
\r
#if !defined(NO_STREAM_CALLBACKS)
\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))
\r
\r
#if !defined(NO_STREAM_CALLBACKS)
\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))
\r
- return PIPE_RWSTREAM_
ERROR_
CallbackAborted;
\r
+ return PIPE_RWSTREAM_CallbackAborted;
\r
#endif
\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
}
\r
#endif
\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
}
\r
-
\r
- Pipe_Write_Byte(*(DataStream++));
\r
+ else
\r
+ {
\r
+ Pipe_Write_Byte(*(DataStream++));
\r
+ Length--;
\r
+ }
\r
}
\r
\r
}
\r
\r
- return PIPE_RWSTREAM_
ERROR_
NoError;
\r
+ return PIPE_RWSTREAM_NoError;
\r
}
\r
\r
uint8_t Pipe_Write_Stream_BE(const void* Data, uint16_t Length
\r
}
\r
\r
uint8_t Pipe_Write_Stream_BE(const void* Data, uint16_t Length
\r
@@
-136,25
+150,28
@@
uint8_t Pipe_Write_Stream_BE(const void* Data, uint16_t Length
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
\r
- while (Length
--
)
\r
+ while (Length)
\r
{
\r
{
\r
- if (!(Pipe_ReadWriteAllowed()))
\r
+ if (!(Pipe_
Is
ReadWriteAllowed()))
\r
{
\r
{
\r
- Pipe_Clear
CurrentBank
();
\r
+ Pipe_Clear
OUT
();
\r
\r
#if !defined(NO_STREAM_CALLBACKS)
\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))
\r
\r
#if !defined(NO_STREAM_CALLBACKS)
\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))
\r
- return PIPE_RWSTREAM_
ERROR_
CallbackAborted;
\r
+ return PIPE_RWSTREAM_CallbackAborted;
\r
#endif
\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
}
\r
#endif
\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
}
\r
-
\r
- Pipe_Write_Byte(*(DataStream--));
\r
+ else
\r
+ {
\r
+ Pipe_Write_Byte(*(DataStream--));
\r
+ Length--;
\r
+ }
\r
}
\r
\r
}
\r
\r
- return PIPE_RWSTREAM_
ERROR_
NoError;
\r
+ return PIPE_RWSTREAM_NoError;
\r
}
\r
\r
uint8_t Pipe_Discard_Stream(uint16_t Length
\r
}
\r
\r
uint8_t Pipe_Discard_Stream(uint16_t Length
\r
@@
-168,29
+185,32
@@
uint8_t Pipe_Discard_Stream(uint16_t Length
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
\r
- while (Length
--
)
\r
+ while (Length)
\r
{
\r
{
\r
- if (!(Pipe_ReadWriteAllowed()))
\r
+ if (!(Pipe_
Is
ReadWriteAllowed()))
\r
{
\r
{
\r
- Pipe_Clear
CurrentBank
();
\r
+ Pipe_Clear
IN
();
\r
\r
#if !defined(NO_STREAM_CALLBACKS)
\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))
\r
\r
#if !defined(NO_STREAM_CALLBACKS)
\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))
\r
- return PIPE_RWSTREAM_
ERROR_
CallbackAborted;
\r
+ return PIPE_RWSTREAM_CallbackAborted;
\r
#endif
\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
}
\r
#endif
\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
}
\r
-
\r
- Pipe_Discard_Byte();
\r
+ else
\r
+ {
\r
+ Pipe_Discard_Byte();
\r
+ Length--;
\r
+ }
\r
}
\r
\r
}
\r
\r
- return PIPE_RWSTREAM_
ERROR_
NoError;
\r
+ return PIPE_RWSTREAM_NoError;
\r
}
\r
\r
uint8_t Pipe_Read_Stream_LE(void* Buffer, uint16_t Length
\r
}
\r
\r
uint8_t Pipe_Read_Stream_LE(void* Buffer, uint16_t Length
\r
-
#if !defined(NO_STREAM_CALLBACKS)
\r
+#if !defined(NO_STREAM_CALLBACKS)
\r
, uint8_t (* const Callback)(void)
\r
#endif
\r
)
\r
, uint8_t (* const Callback)(void)
\r
#endif
\r
)
\r
@@
-201,29
+221,32
@@
uint8_t Pipe_Read_Stream_LE(void* Buffer, uint16_t Length
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
\r
- while (Length
--
)
\r
+ while (Length)
\r
{
\r
{
\r
- if (!(Pipe_ReadWriteAllowed()))
\r
+ if (!(Pipe_
Is
ReadWriteAllowed()))
\r
{
\r
{
\r
- Pipe_Clear
CurrentBank
();
\r
+ Pipe_Clear
IN
();
\r
\r
#if !defined(NO_STREAM_CALLBACKS)
\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))
\r
\r
#if !defined(NO_STREAM_CALLBACKS)
\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))
\r
- return PIPE_RWSTREAM_
ERROR_
CallbackAborted;
\r
+ return PIPE_RWSTREAM_CallbackAborted;
\r
#endif
\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
}
\r
#endif
\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
}
\r
-
\r
- *(DataStream++) = Pipe_Read_Byte();
\r
+ else
\r
+ {
\r
+ *(DataStream++) = Pipe_Read_Byte();
\r
+ Length--;
\r
+ }
\r
}
\r
\r
}
\r
\r
- return PIPE_RWSTREAM_
ERROR_
NoError;
\r
+ return PIPE_RWSTREAM_NoError;
\r
}
\r
\r
uint8_t Pipe_Read_Stream_BE(void* Buffer, uint16_t Length
\r
}
\r
\r
uint8_t Pipe_Read_Stream_BE(void* Buffer, uint16_t Length
\r
-
#if !defined(NO_STREAM_CALLBACKS)
\r
+#if !defined(NO_STREAM_CALLBACKS)
\r
, uint8_t (* const Callback)(void)
\r
#endif
\r
)
\r
, uint8_t (* const Callback)(void)
\r
#endif
\r
)
\r
@@
-234,25
+257,28
@@
uint8_t Pipe_Read_Stream_BE(void* Buffer, uint16_t Length
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
\r
- while (Length
--
)
\r
+ while (Length)
\r
{
\r
{
\r
- if (!(Pipe_ReadWriteAllowed()))
\r
+ if (!(Pipe_
Is
ReadWriteAllowed()))
\r
{
\r
{
\r
- Pipe_Clear
CurrentBank
();
\r
+ Pipe_Clear
IN
();
\r
\r
#if !defined(NO_STREAM_CALLBACKS)
\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))
\r
\r
#if !defined(NO_STREAM_CALLBACKS)
\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))
\r
- return PIPE_RWSTREAM_
ERROR_
CallbackAborted;
\r
+ return PIPE_RWSTREAM_CallbackAborted;
\r
#endif
\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
}
\r
#endif
\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))
\r
return ErrorCode;
\r
}
\r
-
\r
- *(DataStream--) = Pipe_Read_Byte();
\r
+ else
\r
+ {
\r
+ *(DataStream--) = Pipe_Read_Byte();
\r
+ Length--;
\r
+ }
\r
}
\r
\r
}
\r
\r
- return PIPE_RWSTREAM_
ERROR_
NoError;
\r
+ return PIPE_RWSTREAM_NoError;
\r
}
\r
\r
#endif
\r
}
\r
\r
#endif
\r