Fixed possible device lockup when INTERRUPT_CONTROL_ENDPOINT is enabled and the control endpoint is not properly selected when the ISR completes.
This commit is contained in:
		
							parent
							
								
									d3c623e1e1
								
							
						
					
					
						commit
						1331cce08a
					
				
					 3 changed files with 8 additions and 2 deletions
				
			
		|  | @ -237,10 +237,13 @@ ISR(USB_COM_vect, ISR_BLOCK) | |||
| 
 | ||||
| 	Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP); | ||||
| 	USB_INT_Disable(USB_INT_RXSTPI); | ||||
| 	sei(); | ||||
| 
 | ||||
| 	USB_USBTask(); | ||||
| 	NONATOMIC_BLOCK(NONATOMIC_FORCEOFF) | ||||
| 	{ | ||||
| 		USB_Device_ProcessControlRequest(); | ||||
| 	} | ||||
| 
 | ||||
| 	Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP); | ||||
| 	USB_INT_Enable(USB_INT_RXSTPI); | ||||
| 	Endpoint_SelectEndpoint(PrevSelectedEndpoint); | ||||
| } | ||||
|  |  | |||
|  | @ -44,6 +44,7 @@ | |||
| 	/* Includes: */ | ||||
| 		#include <avr/io.h> | ||||
| 		#include <avr/interrupt.h> | ||||
| 		#include <util/atomic.h> | ||||
| 		#include <stdbool.h> | ||||
| 		 | ||||
| 		#include "../../../Common/Common.h" | ||||
|  |  | |||
|  | @ -15,6 +15,8 @@ | |||
|   *    LIBUSB_DRIVER_COMPAT, as it applies to all software on all platforms using the libUSB driver | ||||
|   * | ||||
|   *  <b>Fixed:</b> | ||||
|   *  - Fixed possible device lockup when INTERRUPT_CONTROL_ENDPOINT is enabled and the control endpoint is not properly | ||||
|   *    selected when the ISR completes | ||||
|   * | ||||
|   *  \section Sec_ChangeLog100512 Version 100512 | ||||
|   * | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dean Camera
						Dean Camera