Fixed incorrect/missing control status stage transfers on demos, bootloaders and applications (thanks to Nate Lawson).
This commit is contained in:
		
							parent
							
								
									4a09da2098
								
							
						
					
					
						commit
						3803976534
					
				
					 23 changed files with 157 additions and 67 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue