Add explicit guards to all device mode tasks to ensure the device is connected and configured before running the task, to prevent any user tasks from locking up the main USB task if the device has not been properly configured.
This commit is contained in:
		
							parent
							
								
									bf50959b80
								
							
						
					
					
						commit
						67f390fe74
					
				
					 19 changed files with 245 additions and 216 deletions
				
			
		| 
						 | 
				
			
			@ -114,7 +114,7 @@ bool CDC_Device_ConfigureEndpoints(USB_ClassInfo_CDC_Device_t* CDCInterfaceInfo)
 | 
			
		|||
 | 
			
		||||
void CDC_Device_USBTask(USB_ClassInfo_CDC_Device_t* CDCInterfaceInfo)
 | 
			
		||||
{
 | 
			
		||||
	if (!(USB_IsConnected))
 | 
			
		||||
	if (!(USB_IsConnected) || !(USB_ConfigurationNumber))
 | 
			
		||||
	  return;
 | 
			
		||||
 | 
			
		||||
	Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpointNumber);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -152,7 +152,7 @@ bool HID_Device_ConfigureEndpoints(USB_ClassInfo_HID_Device_t* const HIDInterfac
 | 
			
		|||
		
 | 
			
		||||
void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo)
 | 
			
		||||
{
 | 
			
		||||
	if (!(USB_IsConnected))
 | 
			
		||||
	if (!(USB_IsConnected) || !(USB_ConfigurationNumber))
 | 
			
		||||
	  return;
 | 
			
		||||
 | 
			
		||||
	Endpoint_SelectEndpoint(HIDInterfaceInfo->Config.ReportINEndpointNumber);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -96,7 +96,7 @@ bool MS_Device_ConfigureEndpoints(USB_ClassInfo_MS_Device_t* const MSInterfaceIn
 | 
			
		|||
 | 
			
		||||
void MS_Device_USBTask(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo)
 | 
			
		||||
{
 | 
			
		||||
	if (!(USB_IsConnected))
 | 
			
		||||
	if (!(USB_IsConnected) || !(USB_ConfigurationNumber))
 | 
			
		||||
	  return;
 | 
			
		||||
 | 
			
		||||
	Endpoint_SelectEndpoint(MSInterfaceInfo->Config.DataOUTEndpointNumber);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -138,7 +138,7 @@ bool RNDIS_Device_ConfigureEndpoints(USB_ClassInfo_RNDIS_Device_t* const RNDISIn
 | 
			
		|||
 | 
			
		||||
void RNDIS_Device_USBTask(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo)
 | 
			
		||||
{
 | 
			
		||||
	if (!(USB_IsConnected))
 | 
			
		||||
	if (!(USB_IsConnected) || !(USB_ConfigurationNumber))
 | 
			
		||||
	  return;
 | 
			
		||||
 | 
			
		||||
	RNDIS_Message_Header_t* MessageHeader = (RNDIS_Message_Header_t*)&RNDISInterfaceInfo->State.RNDISMessageBuffer;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue