From a509729b2d92b03a3d33ab0e1e1950ff65a96a09 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Wed, 29 Sep 2010 13:56:52 +0000 Subject: [PATCH] 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. --- LUFA/Drivers/USB/HighLevel/DeviceStandardReq.c | 5 ++++- LUFA/Drivers/USB/LowLevel/Device.h | 8 +++++++- LUFA/Drivers/USB/LowLevel/USBInterrupt.c | 7 +++++-- LUFA/ManPages/ChangeLog.txt | 2 ++ LUFA/ManPages/LUFAPoweredProjects.txt | 2 +- Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c | 4 +++- Projects/AVRISP-MKII/Lib/V2ProtocolParams.c | 2 +- 7 files changed, 23 insertions(+), 7 deletions(-) diff --git a/LUFA/Drivers/USB/HighLevel/DeviceStandardReq.c b/LUFA/Drivers/USB/HighLevel/DeviceStandardReq.c index 83c85ded57..d13ac7439d 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 a37e6d939f..2f54d1dd4c 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 7844a87d71..21b0a9bb16 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 } diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index cbedf18409..55cfae0731 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -44,6 +44,7 @@ * - All project makefiles now correctly clean intermediate build files from assembly and C++ sources (thanks to Daniel Czigany) * - Removed the EVENT_USB_InitFailure() event, not specifying a USB mode now defaults to UID selection mode * - Renamed and moved class driver common constant definitions to make the naming scheme more uniform + * - Changed default value for the reset polarity parameter in the AVRISP-MKII project so that it defaults to active low drive * * Fixed: * - Fixed USB_GetHIDReportItemInfo() function modifying the given report item's data when the report item does not exist @@ -64,6 +65,7 @@ * - Fixed incorrect command name for EEPROM memory programming in the makefile dfu-ee target * - Fixed BootloaderCDC project failing on some operating systems due to removed Line Encoding options (thanks to Alexey Belyaev) * - Fixed incorrect LEDs_ChangeLEDs() function in the Benito board LED driver + * - Fixed incorrect USB_DeviceState value when unconfiguring the device without an address set * * \section Sec_ChangeLog100807 Version 100807 * New: diff --git a/LUFA/ManPages/LUFAPoweredProjects.txt b/LUFA/ManPages/LUFAPoweredProjects.txt index ba68f5e887..f1cf03135b 100644 --- a/LUFA/ManPages/LUFAPoweredProjects.txt +++ b/LUFA/ManPages/LUFAPoweredProjects.txt @@ -38,7 +38,7 @@ * - Arcade Controller: http://fletchtronics.net/arcade-controller-made-petunia * - AVR USB Modem, a 3G Wireless Modem host: http://code.google.com/p/avrusbmodem/ * - Bicycle POV: http://www.code.google.com/p/bicycleledpov/ - * - BusNinja, an AVR clone of the popular BusPirate project: http://blog.hodgepig.org/busninja/ + * - Bus Ninja, an AVR clone of the popular BusPirate project: http://blog.hodgepig.org/busninja/ * - CAMTRIG, a remote Camera Trigger device: http://code.astraw.com/projects/motmot/camtrig * - CD Driver Emulator Dongle for ISO Files: http://cdemu.blogspot.com/ * - ClockTamer, a configurable clock generator: http://code.google.com/p/clock-tamer/ diff --git a/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c b/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c index 55d65511e9..294edce0e9 100644 --- a/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c +++ b/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c @@ -216,7 +216,9 @@ void ISPTarget_ChangeTargetResetLine(const bool ResetTarget) AUX_LINE_DDR |= AUX_LINE_MASK; if (!(V2Params_GetParameterValue(PARAM_RESET_POLARITY))) - AUX_LINE_PORT |= AUX_LINE_MASK; + AUX_LINE_PORT |= AUX_LINE_MASK; + else + AUX_LINE_PORT &= ~AUX_LINE_MASK; } else { diff --git a/Projects/AVRISP-MKII/Lib/V2ProtocolParams.c b/Projects/AVRISP-MKII/Lib/V2ProtocolParams.c index f4ab2bd691..31303c77d6 100644 --- a/Projects/AVRISP-MKII/Lib/V2ProtocolParams.c +++ b/Projects/AVRISP-MKII/Lib/V2ProtocolParams.c @@ -72,7 +72,7 @@ static ParameterItem_t ParameterTable[] = { .ParamID = PARAM_RESET_POLARITY, .ParamPrivileges = PARAM_PRIV_WRITE, - .ParamValue = 0x00 }, + .ParamValue = 0x01 }, { .ParamID = PARAM_STATUS_TGT_CONN, .ParamPrivileges = PARAM_PRIV_READ,