Update CDC Class Driver character stream functions to use the correct avr-libc return...
[pub/lufa.git] / LUFA / Drivers / USB / LowLevel / Endpoint.c
index f9db9cd..6d59510 100644 (file)
@@ -71,6 +71,30 @@ void Endpoint_ClearEndpoints(void)
        }\r
 }\r
 \r
+void Endpoint_ClearStatusStage(void)\r
+{\r
+       if (USB_ControlRequest.bmRequestType & REQDIR_DEVICETOHOST)\r
+       {\r
+               while (!(Endpoint_IsOUTReceived()))\r
+               {\r
+                       if (USB_DeviceState == DEVICE_STATE_Unattached)\r
+                         return;\r
+               }\r
+\r
+               Endpoint_ClearOUT();\r
+       }\r
+       else\r
+       {\r
+               while (!(Endpoint_IsINReady()))\r
+               {\r
+                       if (USB_DeviceState == DEVICE_STATE_Unattached)\r
+                         return;\r
+               }\r
+               \r
+               Endpoint_ClearIN();\r
+       }\r
+}\r
+\r
 #if !defined(CONTROL_ONLY_DEVICE)\r
 uint8_t Endpoint_WaitUntilReady(void)\r
 {\r
@@ -93,7 +117,7 @@ uint8_t Endpoint_WaitUntilReady(void)
                          return ENDPOINT_READYWAIT_NoError;            \r
                }\r
                \r
-               if (!(USB_IsConnected))\r
+               if (USB_DeviceState == DEVICE_STATE_Unattached)\r
                  return ENDPOINT_READYWAIT_DeviceDisconnected;\r
                else if (Endpoint_IsStalled())\r
                  return ENDPOINT_READYWAIT_EndpointStalled;\r
@@ -184,115 +208,125 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length
 }\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Write_Stream_LE\r
+#define  TEMPLATE_BUFFER_TYPE                      const void*\r
 #define  TEMPLATE_CLEAR_ENDPOINT()                 Endpoint_ClearIN()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            0\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(*(BufferPtr++))\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(*((uint8_t*)BufferPtr++))\r
 #include "Template/Template_Endpoint_RW.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Write_PStream_LE\r
+#define  TEMPLATE_BUFFER_TYPE                      const void*\r
 #define  TEMPLATE_CLEAR_ENDPOINT()                 Endpoint_ClearIN()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            0\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(pgm_read_byte(BufferPtr++))\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(pgm_read_byte((uint8_t*)BufferPtr++))\r
 #include "Template/Template_Endpoint_RW.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Write_EStream_LE\r
+#define  TEMPLATE_BUFFER_TYPE                      const void*\r
 #define  TEMPLATE_CLEAR_ENDPOINT()                 Endpoint_ClearIN()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            0\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(eeprom_read_byte(BufferPtr++))\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(eeprom_read_byte((uint8_t*)BufferPtr++))\r
 #include "Template/Template_Endpoint_RW.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Write_Stream_BE\r
+#define  TEMPLATE_BUFFER_TYPE                      const void*\r
 #define  TEMPLATE_CLEAR_ENDPOINT()                 Endpoint_ClearIN()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            Length - 1\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(*(BufferPtr--))\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(*((uint8_t*)BufferPtr--))\r
 #include "Template/Template_Endpoint_RW.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Write_EStream_BE\r
+#define  TEMPLATE_BUFFER_TYPE                      const void*\r
 #define  TEMPLATE_CLEAR_ENDPOINT()                 Endpoint_ClearIN()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            Length - 1\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(eeprom_read_byte(BufferPtr--))\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(eeprom_read_byte((uint8_t*)BufferPtr--))\r
 #include "Template/Template_Endpoint_RW.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Write_PStream_BE\r
+#define  TEMPLATE_BUFFER_TYPE                      const void*\r
 #define  TEMPLATE_CLEAR_ENDPOINT()                 Endpoint_ClearIN()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            Length - 1\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(pgm_read_byte(BufferPtr--))\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(pgm_read_byte((uint8_t*)BufferPtr--))\r
 #include "Template/Template_Endpoint_RW.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Read_Stream_LE\r
+#define  TEMPLATE_BUFFER_TYPE                      void*\r
 #define  TEMPLATE_CLEAR_ENDPOINT()                 Endpoint_ClearOUT()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            0\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         *(BufferPtr++) = Endpoint_Read_Byte()\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         *((uint8_t*)BufferPtr++) = Endpoint_Read_Byte()\r
 #include "Template/Template_Endpoint_RW.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Read_EStream_LE\r
+#define  TEMPLATE_BUFFER_TYPE                      void*\r
 #define  TEMPLATE_CLEAR_ENDPOINT()                 Endpoint_ClearOUT()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            0\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         eeprom_write_byte(BufferPtr++, Endpoint_Read_Byte())\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         eeprom_write_byte((uint8_t*)BufferPtr++, Endpoint_Read_Byte())\r
 #include "Template/Template_Endpoint_RW.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Read_Stream_BE\r
+#define  TEMPLATE_BUFFER_TYPE                      void*\r
 #define  TEMPLATE_CLEAR_ENDPOINT()                 Endpoint_ClearOUT()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            Length - 1\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         *(BufferPtr--) = Endpoint_Read_Byte()\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         *((uint8_t*)BufferPtr--) = Endpoint_Read_Byte()\r
 #include "Template/Template_Endpoint_RW.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Read_EStream_BE\r
+#define  TEMPLATE_BUFFER_TYPE                      void*\r
 #define  TEMPLATE_CLEAR_ENDPOINT()                 Endpoint_ClearOUT()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            Length - 1\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         eeprom_write_byte(BufferPtr--, Endpoint_Read_Byte())\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         eeprom_write_byte((uint8_t*)BufferPtr--, Endpoint_Read_Byte())\r
 #include "Template/Template_Endpoint_RW.c"\r
 \r
 #endif\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Write_Control_Stream_LE\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            0\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(*(BufferPtr++))\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(*((uint8_t*)BufferPtr++))\r
 #include "Template/Template_Endpoint_Control_W.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Write_Control_PStream_LE\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            0\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(pgm_read_byte(BufferPtr++))\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(pgm_read_byte((uint8_t*)BufferPtr++))\r
 #include "Template/Template_Endpoint_Control_W.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Write_Control_EStream_LE\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            0\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(eeprom_read_byte(BufferPtr++))\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(eeprom_read_byte((uint8_t*)BufferPtr++))\r
 #include "Template/Template_Endpoint_Control_W.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Write_Control_Stream_BE\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            Length - 1\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(*(BufferPtr--))\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(*((uint8_t*)BufferPtr--))\r
 #include "Template/Template_Endpoint_Control_W.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Write_Control_PStream_BE\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            Length - 1\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(pgm_read_byte(BufferPtr--))\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(pgm_read_byte((uint8_t*)BufferPtr--))\r
 #include "Template/Template_Endpoint_Control_W.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Write_Control_EStream_BE\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            Length - 1\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(eeprom_read_byte(BufferPtr--))\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Endpoint_Write_Byte(eeprom_read_byte((uint8_t*)BufferPtr--))\r
 #include "Template/Template_Endpoint_Control_W.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Read_Control_Stream_LE\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            0\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         *(BufferPtr++) = Endpoint_Read_Byte()\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         *((uint8_t*)BufferPtr++) = Endpoint_Read_Byte()\r
 #include "Template/Template_Endpoint_Control_R.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Read_Control_EStream_LE\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            0\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         eeprom_write_byte(BufferPtr++, Endpoint_Read_Byte())\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         eeprom_write_byte((uint8_t*)BufferPtr++, Endpoint_Read_Byte())\r
 #include "Template/Template_Endpoint_Control_R.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Read_Control_Stream_BE\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            Length - 1\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         *(BufferPtr--) = Endpoint_Read_Byte()\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         *((uint8_t*)BufferPtr--) = Endpoint_Read_Byte()\r
 #include "Template/Template_Endpoint_Control_R.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Endpoint_Read_Control_EStream_BE\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            Length - 1\r
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         eeprom_write_byte(BufferPtr--, Endpoint_Read_Byte())\r
+#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         eeprom_write_byte((uint8_t*)BufferPtr--, Endpoint_Read_Byte())\r
 #include "Template/Template_Endpoint_Control_R.c"\r
 \r
 #endif\r