mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 13:22:31 +01:00 
			
		
		
		
	Minor correction to the DevChapter9.c handling of Set and Clear feature requests -- remote wake up requests now complete correctly rather than stalling the request.
This commit is contained in:
		
							parent
							
								
									a908773a13
								
							
						
					
					
						commit
						2bd88ebc4f
					
				| @ -274,6 +274,8 @@ static void USB_Device_ClearSetFeature(void) | |||||||
| 		case REQREC_DEVICE: | 		case REQREC_DEVICE: | ||||||
| 			if ((uint8_t)USB_ControlRequest.wValue == FEATURE_REMOTE_WAKEUP) | 			if ((uint8_t)USB_ControlRequest.wValue == FEATURE_REMOTE_WAKEUP) | ||||||
| 			  USB_RemoteWakeupEnabled = (USB_ControlRequest.bRequest == REQ_SetFeature); | 			  USB_RemoteWakeupEnabled = (USB_ControlRequest.bRequest == REQ_SetFeature); | ||||||
|  | 			else | ||||||
|  | 			  return; | ||||||
| 			 | 			 | ||||||
| 			break;			 | 			break;			 | ||||||
| #if !defined(CONTROL_ONLY_DEVICE) | #if !defined(CONTROL_ONLY_DEVICE) | ||||||
| @ -282,8 +284,9 @@ static void USB_Device_ClearSetFeature(void) | |||||||
| 			{ | 			{ | ||||||
| 				uint8_t EndpointIndex = ((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK); | 				uint8_t EndpointIndex = ((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK); | ||||||
| 				 | 				 | ||||||
| 				if (EndpointIndex != ENDPOINT_CONTROLEP) | 				if (EndpointIndex == ENDPOINT_CONTROLEP) | ||||||
| 				{ | 				  return; | ||||||
|  | 
 | ||||||
| 				Endpoint_SelectEndpoint(EndpointIndex); | 				Endpoint_SelectEndpoint(EndpointIndex); | ||||||
| 
 | 
 | ||||||
| 				if (Endpoint_IsEnabled()) | 				if (Endpoint_IsEnabled()) | ||||||
| @ -299,16 +302,20 @@ static void USB_Device_ClearSetFeature(void) | |||||||
| 						Endpoint_StallTransaction();						 | 						Endpoint_StallTransaction();						 | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 
 |  | ||||||
| 					Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP); |  | ||||||
| 					Endpoint_ClearSETUP(); |  | ||||||
| 					Endpoint_ClearIN(); |  | ||||||
| 				} |  | ||||||
| 			} | 			} | ||||||
| 			 | 			 | ||||||
| 			break; | 			break; | ||||||
| #endif | #endif | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP); | ||||||
|  | 
 | ||||||
|  | 	Endpoint_ClearSETUP(); | ||||||
|  | 
 | ||||||
|  | 	Endpoint_ClearIN(); | ||||||
|  | 
 | ||||||
|  | 	while (!(Endpoint_IsOUTReceived())); | ||||||
|  | 	Endpoint_ClearOUT(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Dean Camera
						Dean Camera