Move new Class Driver powered demos to a new ClassDriver subdirectory, re-add old...
[pub/USBasp.git] / LUFA / Drivers / USB / LowLevel / Pipe.c
index 5850fcf..720da17 100644 (file)
@@ -37,7 +37,7 @@
 \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
@@ -70,9 +70,11 @@ void Pipe_ClearPipes(void)
 \r
 uint8_t Pipe_WaitUntilReady(void)\r
 {\r
+       #if (USB_STREAM_TIMEOUT_MS < 0xFF)\r
+       uint8_t  TimeoutMSRem = USB_STREAM_TIMEOUT_MS;  \r
+       #else\r
        uint16_t TimeoutMSRem = USB_STREAM_TIMEOUT_MS;\r
-\r
-       USB_INT_Clear(USB_INT_HSOFI);\r
+       #endif\r
 \r
        for (;;)\r
        {\r
@@ -92,9 +94,9 @@ uint8_t Pipe_WaitUntilReady(void)
                else if (!(USB_IsConnected))\r
                  return PIPE_READYWAIT_DeviceDisconnected;\r
                          \r
-               if (USB_INT_HasOccurred(USB_INT_HSOFI))\r
+               if (FrameElapsed)\r
                {\r
-                       USB_INT_Clear(USB_INT_HSOFI);\r
+                       FrameElapsed = false;\r
 \r
                        if (!(TimeoutMSRem--))\r
                          return PIPE_READYWAIT_Timeout;\r
@@ -104,7 +106,7 @@ uint8_t Pipe_WaitUntilReady(void)
 \r
 uint8_t Pipe_Write_Stream_LE(const void* Data, uint16_t Length\r
 #if !defined(NO_STREAM_CALLBACKS)\r
-                                 , uint8_t (* const Callback)(void)\r
+                                 , StreamCallbackPtr_t Callback\r
 #endif\r
                                                                 )\r
 {\r
@@ -114,7 +116,7 @@ uint8_t Pipe_Write_Stream_LE(const void* Data, uint16_t Length
        if ((ErrorCode = Pipe_WaitUntilReady()))\r
          return ErrorCode;\r
 \r
-       while (Length--)\r
+       while (Length)\r
        {\r
                if (!(Pipe_IsReadWriteAllowed()))\r
                {\r
@@ -122,7 +124,7 @@ uint8_t Pipe_Write_Stream_LE(const void* Data, uint16_t Length
                                \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
@@ -131,15 +133,16 @@ uint8_t Pipe_Write_Stream_LE(const void* Data, uint16_t Length
                else\r
                {\r
                        Pipe_Write_Byte(*(DataStream++));\r
+                       Length--;\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
 #if !defined(NO_STREAM_CALLBACKS)\r
-                                 , uint8_t (* const Callback)(void)\r
+                                 , StreamCallbackPtr_t Callback\r
 #endif\r
                                                                 )\r
 {\r
@@ -149,7 +152,7 @@ uint8_t Pipe_Write_Stream_BE(const void* Data, uint16_t Length
        if ((ErrorCode = Pipe_WaitUntilReady()))\r
          return ErrorCode;\r
 \r
-       while (Length--)\r
+       while (Length)\r
        {\r
                if (!(Pipe_IsReadWriteAllowed()))\r
                {\r
@@ -157,7 +160,7 @@ uint8_t Pipe_Write_Stream_BE(const void* Data, uint16_t Length
                                \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
@@ -166,15 +169,16 @@ uint8_t Pipe_Write_Stream_BE(const void* Data, uint16_t Length
                else\r
                {\r
                        Pipe_Write_Byte(*(DataStream--));\r
+                       Length--;\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
 #if !defined(NO_STREAM_CALLBACKS)\r
-                                 , uint8_t (* const Callback)(void)\r
+                                 , StreamCallbackPtr_t Callback\r
 #endif\r
                                                                 )\r
 {\r
@@ -183,7 +187,7 @@ uint8_t Pipe_Discard_Stream(uint16_t Length
        if ((ErrorCode = Pipe_WaitUntilReady()))\r
          return ErrorCode;\r
 \r
-       while (Length--)\r
+       while (Length)\r
        {\r
                if (!(Pipe_IsReadWriteAllowed()))\r
                {\r
@@ -191,7 +195,7 @@ uint8_t Pipe_Discard_Stream(uint16_t Length
                                \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
@@ -200,15 +204,16 @@ uint8_t Pipe_Discard_Stream(uint16_t Length
                else\r
                {\r
                        Pipe_Discard_Byte();\r
+                       Length--;\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
 #if !defined(NO_STREAM_CALLBACKS)\r
-                                 , uint8_t (* const Callback)(void)\r
+                                 , StreamCallbackPtr_t Callback\r
 #endif\r
                                                                 )\r
 {\r
@@ -218,7 +223,7 @@ uint8_t Pipe_Read_Stream_LE(void* Buffer, uint16_t Length
        if ((ErrorCode = Pipe_WaitUntilReady()))\r
          return ErrorCode;\r
 \r
-       while (Length--)\r
+       while (Length)\r
        {\r
                if (!(Pipe_IsReadWriteAllowed()))\r
                {\r
@@ -226,7 +231,7 @@ uint8_t Pipe_Read_Stream_LE(void* Buffer, uint16_t Length
                                \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
@@ -235,15 +240,16 @@ uint8_t Pipe_Read_Stream_LE(void* Buffer, uint16_t Length
                else\r
                {\r
                        *(DataStream++) = Pipe_Read_Byte();\r
+                       Length--;\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
 #if !defined(NO_STREAM_CALLBACKS)\r
-                                 , uint8_t (* const Callback)(void)\r
+                                 , StreamCallbackPtr_t Callback\r
 #endif\r
                                                                 )\r
 {\r
@@ -253,7 +259,7 @@ uint8_t Pipe_Read_Stream_BE(void* Buffer, uint16_t Length
        if ((ErrorCode = Pipe_WaitUntilReady()))\r
          return ErrorCode;\r
 \r
-       while (Length--)\r
+       while (Length)\r
        {\r
                if (!(Pipe_IsReadWriteAllowed()))\r
                {\r
@@ -261,7 +267,7 @@ uint8_t Pipe_Read_Stream_BE(void* Buffer, uint16_t Length
                                \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
@@ -270,10 +276,11 @@ uint8_t Pipe_Read_Stream_BE(void* Buffer, uint16_t Length
                else\r
                {\r
                        *(DataStream--) = Pipe_Read_Byte();\r
+                       Length--;\r
                }\r
        }\r
        \r
-       return PIPE_RWSTREAM_ERROR_NoError;\r
+       return PIPE_RWSTREAM_NoError;\r
 }\r
 \r
 #endif\r