diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2010-09-29 13:56:52 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2010-09-29 13:56:52 +0000 |
commit | a509729b2d92b03a3d33ab0e1e1950ff65a96a09 (patch) | |
tree | 3d0b2af8b2bd50b8380d2e4f753134c997a81d6a /LUFA/Drivers | |
parent | c0e4f52e8fecf74bc26ba813522aa96300bb844e (diff) | |
download | lufa-a509729b2d92b03a3d33ab0e1e1950ff65a96a09.tar.gz lufa-a509729b2d92b03a3d33ab0e1e1950ff65a96a09.tar.bz2 lufa-a509729b2d92b03a3d33ab0e1e1950ff65a96a09.zip |
Changed default value for the reset polarity parameter in the AVRISP-MKII project so that it defaults to active low drive.
Fixed incorrect USB_DeviceState value when unconfiguring the device without an address set.
Diffstat (limited to 'LUFA/Drivers')
-rw-r--r-- | LUFA/Drivers/USB/HighLevel/DeviceStandardReq.c | 5 | ||||
-rw-r--r-- | LUFA/Drivers/USB/LowLevel/Device.h | 8 | ||||
-rw-r--r-- | LUFA/Drivers/USB/LowLevel/USBInterrupt.c | 7 |
3 files changed, 16 insertions, 4 deletions
diff --git a/LUFA/Drivers/USB/HighLevel/DeviceStandardReq.c b/LUFA/Drivers/USB/HighLevel/DeviceStandardReq.c index 83c85ded5..d13ac7439 100644 --- a/LUFA/Drivers/USB/HighLevel/DeviceStandardReq.c +++ b/LUFA/Drivers/USB/HighLevel/DeviceStandardReq.c @@ -191,7 +191,10 @@ static void USB_Device_SetConfiguration(void) Endpoint_ClearStatusStage(); - USB_DeviceState = (USB_ConfigurationNumber) ? DEVICE_STATE_Configured : DEVICE_STATE_Addressed; + if (USB_ConfigurationNumber) + USB_DeviceState = DEVICE_STATE_Configured; + else + USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered; EVENT_USB_Device_ConfigurationChanged(); } diff --git a/LUFA/Drivers/USB/LowLevel/Device.h b/LUFA/Drivers/USB/LowLevel/Device.h index a37e6d939..2f54d1dd4 100644 --- a/LUFA/Drivers/USB/LowLevel/Device.h +++ b/LUFA/Drivers/USB/LowLevel/Device.h @@ -223,7 +223,13 @@ { UDADDR = ((UDADDR & (1 << ADDEN)) | (Address & 0x7F)); UDADDR |= (1 << ADDEN); - } + } + + static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE; + static inline bool USB_Device_IsAddressSet(void) + { + return (UDADDR & (1 << ADDEN)); + } #endif #endif diff --git a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c index 7844a87d7..21b0a9bb1 100644 --- a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c +++ b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c @@ -128,11 +128,14 @@ ISR(USB_GEN_vect, ISR_BLOCK) USB_INT_Disable(USB_INT_WAKEUPI); USB_INT_Enable(USB_INT_SUSPI); + if (USB_ConfigurationNumber) + USB_DeviceState = DEVICE_STATE_Configured; + else + USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered; + #if defined(USB_SERIES_2_AVR) && !defined(NO_LIMITED_CONTROLLER_CONNECT) - USB_DeviceState = (USB_ConfigurationNumber) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered; EVENT_USB_Device_Connect(); #else - USB_DeviceState = (USB_ConfigurationNumber) ? DEVICE_STATE_Configured : DEVICE_STATE_Addressed; EVENT_USB_Device_WakeUp(); #endif } |