Skip to content
Snippets Groups Projects
Select Git revision
  • c58c53dba90fdc19d38f5e5d6957f2ede2a740f3
  • master default protected
  • LUFA-170418
  • LUFA-151115
  • LUFA-140928
  • LUFA-140302
  • LUFA-130901
  • LUFA-130901-BETA
  • LUFA-130303
  • LUFA-120730
  • LUFA-120730-BETA
  • LUFA-120219
  • LUFA-120219-BETA
  • LUFA-111009
  • LUFA-111009-BETA
  • LUFA-110528
  • LUFA-110528-BETA
17 results

BootloaderDFU.txt

Blame
  • Template_Endpoint_Control_R.c 1.04 KiB
    uint8_t TEMPLATE_FUNC_NAME (void* Buffer,
                                uint16_t Length)
    {
    	uint8_t* DataStream = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length));
    	
    	if (!(Length))
    	  Endpoint_ClearOUT();
    	
    	while (Length)
    	{
    		if (Endpoint_IsSETUPReceived())
    		  return ENDPOINT_RWCSTREAM_HostAborted;
    
    		if (USB_DeviceState == DEVICE_STATE_Unattached)
    		  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
    		else if (USB_DeviceState == DEVICE_STATE_Suspended)
    		  return ENDPOINT_RWCSTREAM_BusSuspended;
    		  
    		if (Endpoint_IsOUTReceived())
    		{
    			while (Length && Endpoint_BytesInEndpoint())
    			{
    				TEMPLATE_TRANSFER_BYTE(DataStream);
    				Length--;
    			}
    			
    			Endpoint_ClearOUT();
    		}		  
    	}
    	
    	while (!(Endpoint_IsINReady()))
    	{
    		if (USB_DeviceState == DEVICE_STATE_Unattached)
    		  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
    		else if (USB_DeviceState == DEVICE_STATE_Suspended)
    		  return ENDPOINT_RWCSTREAM_BusSuspended;
    	}
    	
    	return ENDPOINT_RWCSTREAM_NoError;
    }
    
    
    #undef TEMPLATE_BUFFER_OFFSET
    #undef TEMPLATE_FUNC_NAME
    #undef TEMPLATE_TRANSFER_BYTE