Fix incorrect definition for the XMEGA Endpoint_BytesInEndpoint() function when used...
authorDean Camera <dean@fourwalledcubicle.com>
Sat, 26 May 2012 15:06:00 +0000 (15:06 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Sat, 26 May 2012 15:06:00 +0000 (15:06 +0000)
LUFA/Drivers/USB/Core/XMEGA/Endpoint_XMEGA.h

index 720b5f3..23de8fc 100644 (file)
                        static inline uint16_t Endpoint_BytesInEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline uint16_t Endpoint_BytesInEndpoint(void)
                        {
                        static inline uint16_t Endpoint_BytesInEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline uint16_t Endpoint_BytesInEndpoint(void)
                        {
-                               return USB_Endpoint_SelectedFIFO->Position;
+                               if (USB_Endpoint_SelectedEndpoint & ENDPOINT_DIR_IN)
+                                 return USB_Endpoint_SelectedFIFO->Position;
+                               else
+                                 return (USB_Endpoint_SelectedFIFO->Length - USB_Endpoint_SelectedFIFO->Position);
                        }
 
                        /** Get the endpoint address of the currently selected endpoint. This is typically used to save
                        }
 
                        /** Get the endpoint address of the currently selected endpoint. This is typically used to save