From 38039765346c7441208dbcb3fd3cf8f13b7ced58 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 10 Mar 2009 05:56:17 +0000 Subject: Fixed incorrect/missing control status stage transfers on demos, bootloaders and applications (thanks to Nate Lawson). --- LUFA/ChangeLog.txt | 6 ++++-- LUFA/Drivers/USB/LowLevel/Endpoint.h | 10 +++++----- LUFA/Drivers/USB/LowLevel/LowLevel.h | 2 +- LUFA/Drivers/USB/LowLevel/Pipe.h | 4 ++-- LUFA/MigrationInformation.txt | 3 +++ 5 files changed, 15 insertions(+), 10 deletions(-) (limited to 'LUFA') diff --git a/LUFA/ChangeLog.txt b/LUFA/ChangeLog.txt index 1a2b9f8a1..d283d7f95 100644 --- a/LUFA/ChangeLog.txt +++ b/LUFA/ChangeLog.txt @@ -29,13 +29,15 @@ * - Function attribute ATTR_ALWAYSINLINE renamed to ATTR_ALWAYS_INLINE to match other function attribute macro naming conventions * - Added ATTR_ALWAYS_INLINE attribute to several key inlined library components, to ensure they are inlined in all circumstances * - Removed SetSystemClockPrescaler() macro, the clock_prescale_set() avr-libc macro has been corrected in recent avr-libc versions + * - Fixed incorrect/missing control status stage transfers on demos, bootloaders and applications (thanks to Nate Lawson) * * \section Sec_ChangeLog090209 Version 090209 * * - PWM timer mode in AudioOut demo changed to Fast PWM for speed * - Updated Magstripe project to work with the latest hardware revision * - Fixed library not responding to the BCERRI flag correctly in host mode, leading to device lockups - * - Fixed library handling Get Descriptor requests when not addressed as standard requests to the device or interface + * - Fixed library handling Get Descriptor requests when not addressed as standard requests to the device or interface (thanks to + * Nate Lawson) * - Fixed serious data corruption issue in MassStorage demo dataflash write routine * - Added new NO_CLEARSET_FEATURE_REQUEST compile time token * - USB task now restores previous global interrupt state after execution, rather than forcing global interrupts to be enabled @@ -326,7 +328,7 @@ * - Added Endpoint_Read_Stream, Endpoint_Write_Stream, Pipe_Read_Stream and Pipe_Write_Stream functions * (including Big and Little Endian variants) * - Made Dataflash functions inline for speed, removed now empty Dataflash.c driver file - * - Added new SetSystemClockPrescaler() macro - thanks to Joerg Wunsch + * - Added new SetSystemClockPrescaler() macro (thanks to Joerg Wunsch) * - Fixed Endpoint_ClearStall() to function correctly on full USB controller AVRs (AT90USBXXX6/7) * - Endpoint_Setup_In_Clear() and Endpoint_Setup_Out_Clear() no longer set FIFOCON, in line with the * directives in the datasheet diff --git a/LUFA/Drivers/USB/LowLevel/Endpoint.h b/LUFA/Drivers/USB/LowLevel/Endpoint.h index d1ad1315a..16266868c 100644 --- a/LUFA/Drivers/USB/LowLevel/Endpoint.h +++ b/LUFA/Drivers/USB/LowLevel/Endpoint.h @@ -256,7 +256,7 @@ /** Sends an IN packet to the host on the currently selected CONTROL type endpoint. */ #define Endpoint_ClearSetupIN() MACROS{ UEINTX &= ~(1 << TXINI); }MACROE - /** Acknowedges an OUT packet to the host on the currently selected CONTROL type endpoint, freeing + /** Acknowledges an OUT packet to the host on the currently selected CONTROL type endpoint, freeing * up the endpoint for the next packet. */ #define Endpoint_ClearSetupOUT() MACROS{ UEINTX &= ~(1 << RXOUTI); }MACROE @@ -667,7 +667,7 @@ ) ATTR_NON_NULL_PTR_ARG(1); /** Writes the given number of bytes to the CONTROL type endpoint from the given buffer in little endian, - * sending full packets to the host as needed. The host OUT acknowedgement is not automatically cleared + * sending full packets to the host as needed. The host OUT acknowledgement is not automatically cleared * in both failure and success states; the user is responsible for manually clearing the setup OUT to * finalize the transfer via the Endpoint_ClearSetupOUT() macro. * @@ -684,7 +684,7 @@ uint8_t Endpoint_Write_Control_Stream_LE(const void* Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1); /** Writes the given number of bytes to the CONTROL type endpoint from the given buffer in big endian, - * sending full packets to the host as needed. The host OUT acknowedgement is not automatically cleared + * sending full packets to the host as needed. The host OUT acknowledgement is not automatically cleared * in both failure and success states; the user is responsible for manually clearing the setup OUT to * finalize the transfer via the Endpoint_ClearSetupOUT() macro. * @@ -701,7 +701,7 @@ uint8_t Endpoint_Write_Control_Stream_BE(const void* Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1); /** Reads the given number of bytes from the CONTROL endpoint from the given buffer in little endian, - * discarding fully read packets from the host as needed. The device IN acknowedgement is not + * discarding fully read packets from the host as needed. The device IN acknowledgement is not * automatically sent after success or failure states; the user is responsible for manually sending the * setup IN to finalize the transfer via the Endpoint_ClearSetupIN() macro. * @@ -718,7 +718,7 @@ uint8_t Endpoint_Read_Control_Stream_LE(void* Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1); /** Reads the given number of bytes from the CONTROL endpoint from the given buffer in big endian, - * discarding fully read packets from the host as needed. The device IN acknowedgement is not + * discarding fully read packets from the host as needed. The device IN acknowledgement is not * automatically sent after success or failure states; the user is responsible for manually sending the * setup IN to finalize the transfer via the Endpoint_ClearSetupIN() macro. * diff --git a/LUFA/Drivers/USB/LowLevel/LowLevel.h b/LUFA/Drivers/USB/LowLevel/LowLevel.h index 9721baca0..98deaaca1 100644 --- a/LUFA/Drivers/USB/LowLevel/LowLevel.h +++ b/LUFA/Drivers/USB/LowLevel/LowLevel.h @@ -205,7 +205,7 @@ #if !defined(USB_STREAM_TIMEOUT_MS) || defined(__DOXYGEN__) /** Constant for the maximum software timeout period of the USB data stream transfer functions * (both control and standard) when in either device or host mode. If the next packet of a stream - * is not received or acknowedged within this time period, the stream function will fail. + * is not received or acknowledged within this time period, the stream function will fail. * * This value may be overridden in the user project makefile as the value of the * USB_STREAM_TIMEOUT_MS token, and passed to the compiler using the -D switch. diff --git a/LUFA/Drivers/USB/LowLevel/Pipe.h b/LUFA/Drivers/USB/LowLevel/Pipe.h index f7d10bc1d..5d4793eb2 100644 --- a/LUFA/Drivers/USB/LowLevel/Pipe.h +++ b/LUFA/Drivers/USB/LowLevel/Pipe.h @@ -347,7 +347,7 @@ */ #define Pipe_IsSetupOUTReady() ((UPINTX & (1 << TXOUTI)) ? true : false) - /** Acknowedges the reception of a setup IN request from the attached device on the currently selected + /** Acknowledges the reception of a setup IN request from the attached device on the currently selected * CONTROL type endpoint, allowing for the transmission of a setup OUT packet, or the reception of * another setup IN packet. */ @@ -356,7 +356,7 @@ /** Sends the currently selected CONTROL type pipe's contents to the device as a setup OUT packet. */ #define Pipe_ClearSetupOUT() MACROS{ UPINTX &= ~(1 << TXOUTI); UPINTX &= ~(1 << FIFOCON); }MACROE - /** Returns true if the device sent a NAK (Negative Acknowedge) in response to the last sent packet on + /** Returns true if the device sent a NAK (Negative Acknowledge) in response to the last sent packet on * the currently selected pipe. This ocurrs when the host sends a packet to the device, but the device * is not currently ready to handle the packet (i.e. its endpoint banks are full). Once a NAK has been * received, it must be cleard using Pipe_ClearNAKReceived() before the previous (or any other) packet diff --git a/LUFA/MigrationInformation.txt b/LUFA/MigrationInformation.txt index 364f09c3e..75b5d1912 100644 --- a/LUFA/MigrationInformation.txt +++ b/LUFA/MigrationInformation.txt @@ -22,6 +22,9 @@ * * Library Demos * - The USBtoSerial demo now discards all data when not connected to a host, rather than buffering it for later transmission. + * - Most demos, bootloaders and applications have had their control request handling code corrected, to properly send the status + * stage in all handled requests. If you are using code based off one of the library demos, bootloaders or applications, you should + * update to the latest revisions. * * Non-USB Library Components * - The ATTR_ALWAYSINLINE function attribute macro has been renamed to ATTR_ALWAYS_INLINE. -- cgit v1.2.3