diff --git a/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h b/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h index 787469026a..a2a2ddf0e0 100644 --- a/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h +++ b/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h @@ -213,8 +213,8 @@ UDADDR = (UDADDR & (1 << ADDEN)) | (Address & 0x7F); } - static inline void USB_Device_EnableDeviceAddress(void) ATTR_ALWAYS_INLINE; - static inline void USB_Device_EnableDeviceAddress(void) + static inline void USB_Device_EnableDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE; + static inline void USB_Device_EnableDeviceAddress(const uint8_t Address) { UDADDR |= (1 << ADDEN); } diff --git a/LUFA/Drivers/USB/Core/DeviceStandardReq.c b/LUFA/Drivers/USB/Core/DeviceStandardReq.c index 6284dd3898..3176e15bcf 100644 --- a/LUFA/Drivers/USB/Core/DeviceStandardReq.c +++ b/LUFA/Drivers/USB/Core/DeviceStandardReq.c @@ -134,7 +134,7 @@ static void USB_Device_SetAddress(void) while (!(Endpoint_IsINReady())); - USB_Device_EnableDeviceAddress(); + USB_Device_EnableDeviceAddress(DeviceAddress); USB_DeviceState = (DeviceAddress) ? DEVICE_STATE_Addressed : DEVICE_STATE_Default; } diff --git a/LUFA/Drivers/USB/Core/UC3/Device_UC3.h b/LUFA/Drivers/USB/Core/UC3/Device_UC3.h index 86583d8f3f..60a1e27a89 100644 --- a/LUFA/Drivers/USB/Core/UC3/Device_UC3.h +++ b/LUFA/Drivers/USB/Core/UC3/Device_UC3.h @@ -211,8 +211,8 @@ AVR32_USBB.UDCON.uadd = Address; } - static inline void USB_Device_EnableDeviceAddress(void) ATTR_ALWAYS_INLINE; - static inline void USB_Device_EnableDeviceAddress(void) + static inline void USB_Device_EnableDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE; + static inline void USB_Device_EnableDeviceAddress(const uint8_t Address) { AVR32_USBB.UDCON.adden = true; } diff --git a/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h b/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h index d2d506cd70..6e2380a178 100644 --- a/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h +++ b/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h @@ -205,13 +205,13 @@ static inline void USB_Device_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE; static inline void USB_Device_SetDeviceAddress(const uint8_t Address) { - USB.ADDR = Address; + /* No implementation for XMEGA architecture */ } - static inline void USB_Device_EnableDeviceAddress(void) ATTR_ALWAYS_INLINE; - static inline void USB_Device_EnableDeviceAddress(void) + static inline void USB_Device_EnableDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE; + static inline void USB_Device_EnableDeviceAddress(const uint8_t Address) { - /* No implementation for XMEGA architecture */ + USB.ADDR = Address; } static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; diff --git a/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h b/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h index 84966ad6f3..2198b53c77 100644 --- a/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h +++ b/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h @@ -57,6 +57,13 @@ /* Private Interface - For use in library only: */ #if !defined(__DOXYGEN__) + /* Macros: */ + #if defined(MAX_ENDPOINT_INDEX) + #define ENDPOINT_TABLE_COUNT (MAX_ENDPOINT_INDEX + 1) + #else + #define ENDPOINT_TABLE_COUNT 16 + #endif + /* Type Defines: */ typedef struct { @@ -64,7 +71,7 @@ { USB_EP_t OUT; USB_EP_t IN; - } Endpoints[16]; + } Endpoints[ENDPOINT_TABLE_COUNT]; uint16_t FrameNum; } ATTR_PACKED USB_EndpointTable_t;