forked from mirror/qmk_firmware
Fixed incorrect/missing control status stage transfers on demos, bootloaders and applications (thanks to Nate Lawson).
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -22,6 +22,9 @@
|
||||
*
|
||||
* <b>Library Demos</b>
|
||||
* - 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.
|
||||
*
|
||||
* <b>Non-USB Library Components</b>
|
||||
* - The ATTR_ALWAYSINLINE function attribute macro has been renamed to ATTR_ALWAYS_INLINE.
|
||||
|
||||
Reference in New Issue
Block a user