Removed complicated logic for the Endpoint_ConfigureEndpoint() function to use inlined or function called versions depending of if the given bank size is a compile time constant, as the compiler does a better job of optimizing with basic code.
Changed over all device demos to use a clearer algorithm for the configuring of the application's endpoints.
This commit is contained in:
		
							parent
							
								
									be520aed52
								
							
						
					
					
						commit
						508e905d8d
					
				
					 43 changed files with 374 additions and 510 deletions
				
			
		| 
						 | 
				
			
			@ -136,10 +136,11 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
/** Event handler for the library USB Configuration Changed event. */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	
 | 
			
		||||
	if (!(Audio_Device_ConfigureEndpoints(&Microphone_Audio_Interface)))
 | 
			
		||||
	  LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	ConfigSuccess &= Audio_Device_ConfigureEndpoints(&Microphone_Audio_Interface);
 | 
			
		||||
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the library USB Unhandled Control Request event. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -188,10 +188,11 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
/** Event handler for the library USB Configuration Changed event. */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	
 | 
			
		||||
	if (!(Audio_Device_ConfigureEndpoints(&Speaker_Audio_Interface)))
 | 
			
		||||
	  LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	ConfigSuccess &= Audio_Device_ConfigureEndpoints(&Speaker_Audio_Interface);
 | 
			
		||||
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the library USB Unhandled Control Request event. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -175,13 +175,12 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
/** Event handler for the library USB Configuration Changed event. */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	if (!(CDC_Device_ConfigureEndpoints(&VirtualSerial1_CDC_Interface)))
 | 
			
		||||
	  LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial1_CDC_Interface);
 | 
			
		||||
	ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial2_CDC_Interface);
 | 
			
		||||
 | 
			
		||||
	if (!(CDC_Device_ConfigureEndpoints(&VirtualSerial2_CDC_Interface)))
 | 
			
		||||
	  LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the library USB Unhandled Control Request event. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -113,12 +113,13 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
/** Event handler for the library USB Configuration Changed event. */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	if (!(HID_Device_ConfigureEndpoints(&Generic_HID_Interface)))
 | 
			
		||||
	  LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	ConfigSuccess &= HID_Device_ConfigureEndpoints(&Generic_HID_Interface);
 | 
			
		||||
 | 
			
		||||
	USB_Device_EnableSOFEvents();
 | 
			
		||||
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the library USB Unhandled Control Request event. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -107,12 +107,13 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
/** Event handler for the library USB Configuration Changed event. */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	if (!(HID_Device_ConfigureEndpoints(&Joystick_HID_Interface)))
 | 
			
		||||
	  LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	ConfigSuccess &= HID_Device_ConfigureEndpoints(&Joystick_HID_Interface);
 | 
			
		||||
 | 
			
		||||
	USB_Device_EnableSOFEvents();
 | 
			
		||||
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the library USB Unhandled Control Request event. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -107,12 +107,13 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
/** Event handler for the library USB Configuration Changed event. */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	if (!(HID_Device_ConfigureEndpoints(&Keyboard_HID_Interface)))
 | 
			
		||||
	  LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	ConfigSuccess &= HID_Device_ConfigureEndpoints(&Keyboard_HID_Interface);
 | 
			
		||||
 | 
			
		||||
	USB_Device_EnableSOFEvents();
 | 
			
		||||
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the library USB Unhandled Control Request event. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -130,15 +130,14 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
/** Event handler for the library USB Configuration Changed event. */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	if (!(HID_Device_ConfigureEndpoints(&Keyboard_HID_Interface)))
 | 
			
		||||
	  LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	
 | 
			
		||||
	if (!(HID_Device_ConfigureEndpoints(&Mouse_HID_Interface)))
 | 
			
		||||
	  LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	ConfigSuccess &= HID_Device_ConfigureEndpoints(&Keyboard_HID_Interface);
 | 
			
		||||
	ConfigSuccess &= HID_Device_ConfigureEndpoints(&Mouse_HID_Interface);
 | 
			
		||||
 | 
			
		||||
	USB_Device_EnableSOFEvents();
 | 
			
		||||
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the library USB Unhandled Control Request event. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -180,10 +180,13 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
/** Event handler for the library USB Configuration Changed event. */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	
 | 
			
		||||
	if (!(MIDI_Device_ConfigureEndpoints(&Keyboard_MIDI_Interface)))
 | 
			
		||||
	  LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	ConfigSuccess &= MIDI_Device_ConfigureEndpoints(&Keyboard_MIDI_Interface);
 | 
			
		||||
 | 
			
		||||
	USB_Device_EnableSOFEvents();
 | 
			
		||||
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the library USB Unhandled Control Request event. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -110,10 +110,13 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
/** Event handler for the library USB Configuration Changed event. */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	if (!(MS_Device_ConfigureEndpoints(&Disk_MS_Interface)))
 | 
			
		||||
	  LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	ConfigSuccess &= MS_Device_ConfigureEndpoints(&Disk_MS_Interface);
 | 
			
		||||
 | 
			
		||||
	USB_Device_EnableSOFEvents();
 | 
			
		||||
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the library USB Unhandled Control Request event. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -136,15 +136,14 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
/** Event handler for the library USB Configuration Changed event. */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	if (!(MS_Device_ConfigureEndpoints(&Disk_MS_Interface)))
 | 
			
		||||
	  LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
 | 
			
		||||
	if (!(HID_Device_ConfigureEndpoints(&Keyboard_HID_Interface)))
 | 
			
		||||
	  LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	ConfigSuccess &= MS_Device_ConfigureEndpoints(&Disk_MS_Interface);
 | 
			
		||||
	ConfigSuccess &= HID_Device_ConfigureEndpoints(&Keyboard_HID_Interface);
 | 
			
		||||
 | 
			
		||||
	USB_Device_EnableSOFEvents();
 | 
			
		||||
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the library USB Unhandled Control Request event. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -107,12 +107,13 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
/** Event handler for the library USB Configuration Changed event. */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	if (!(HID_Device_ConfigureEndpoints(&Mouse_HID_Interface)))
 | 
			
		||||
	  LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	ConfigSuccess &= HID_Device_ConfigureEndpoints(&Mouse_HID_Interface);
 | 
			
		||||
 | 
			
		||||
	USB_Device_EnableSOFEvents();
 | 
			
		||||
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the library USB Unhandled Control Request event. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -123,10 +123,11 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
/** Event handler for the library USB Configuration Changed event. */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	if (!(RNDIS_Device_ConfigureEndpoints(&Ethernet_RNDIS_Interface)))
 | 
			
		||||
	  LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	ConfigSuccess &= RNDIS_Device_ConfigureEndpoints(&Ethernet_RNDIS_Interface);
 | 
			
		||||
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the library USB Unhandled Control Request event. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -153,10 +153,11 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
/** Event handler for the library USB Configuration Changed event. */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	if (!(CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface)))
 | 
			
		||||
	  LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);
 | 
			
		||||
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the library USB Unhandled Control Request event. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -164,15 +164,14 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
/** Event handler for the library USB Configuration Changed event. */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	if (!(CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface)))
 | 
			
		||||
	  LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);
 | 
			
		||||
	ConfigSuccess &= HID_Device_ConfigureEndpoints(&Mouse_HID_Interface);
 | 
			
		||||
 | 
			
		||||
	if (!(HID_Device_ConfigureEndpoints(&Mouse_HID_Interface)))
 | 
			
		||||
	  LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	  
 | 
			
		||||
	USB_Device_EnableSOFEvents();
 | 
			
		||||
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);	  
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the library USB Unhandled Control Request event. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -95,22 +95,16 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	/* Setup Sideshow In and Out Endpoints */
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(SIDESHOW_IN_EPNUM, EP_TYPE_BULK,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, SIDESHOW_IO_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	/* Setup Sideshow Data Endpoints */
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(SIDESHOW_IN_EPNUM,  EP_TYPE_BULK, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            SIDESHOW_IO_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(SIDESHOW_OUT_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT,
 | 
			
		||||
	                                            SIDESHOW_IO_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(SIDESHOW_OUT_EPNUM, EP_TYPE_BULK,
 | 
			
		||||
		                             ENDPOINT_DIR_OUT, SIDESHOW_IO_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	/* Indicate endpoint configuration success or failure */
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EVENT_USB_Device_UnhandledControlRequest(void)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -118,29 +118,18 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
 */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	/* Setup TMC In, Out and Notification Endpoints */
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(TMC_IN_EPNUM, EP_TYPE_BULK,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, TMC_IO_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(TMC_IN_EPNUM,  EP_TYPE_BULK, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            TMC_IO_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(TMC_OUT_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT,
 | 
			
		||||
	                                            TMC_IO_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(TMC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            TMC_IO_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(TMC_OUT_EPNUM, EP_TYPE_BULK,
 | 
			
		||||
		                             ENDPOINT_DIR_OUT, TMC_IO_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(TMC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, TMC_NOTIFICATION_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	/* Indicate endpoint configuration success or failure */
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -110,16 +110,14 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
 */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	/* Indicate USB connected and ready */
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	/* Setup audio stream endpoint */
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(AUDIO_STREAM_EPNUM, EP_TYPE_ISOCHRONOUS,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, AUDIO_STREAM_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_DOUBLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	/* Setup Audio Stream Endpoint */
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(AUDIO_STREAM_EPNUM, EP_TYPE_ISOCHRONOUS, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            AUDIO_STREAM_EPSIZE, ENDPOINT_BANK_DOUBLE);
 | 
			
		||||
 | 
			
		||||
	/* Indicate endpoint configuration success or failure */
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -137,16 +137,14 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
 */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	/* Indicate USB connected and ready */
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	/* Setup audio stream endpoint */
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(AUDIO_STREAM_EPNUM, EP_TYPE_ISOCHRONOUS,
 | 
			
		||||
		                             ENDPOINT_DIR_OUT, AUDIO_STREAM_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_DOUBLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	/* Setup Audio Stream Endpoint */
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(AUDIO_STREAM_EPNUM, EP_TYPE_ISOCHRONOUS, ENDPOINT_DIR_OUT,
 | 
			
		||||
	                                            AUDIO_STREAM_EPSIZE, ENDPOINT_BANK_DOUBLE);
 | 
			
		||||
 | 
			
		||||
	/* Indicate endpoint configuration success or failure */
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -119,57 +119,31 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
 *  of the USB device after enumeration - the device endpoints are configured and the CDC management tasks are started.
 | 
			
		||||
 */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{							   
 | 
			
		||||
	/* Indicate USB connected and ready */
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
{
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	/* Setup first CDC Interface's Endpoints */
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC1_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            CDC_NOTIFICATION_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC1_TX_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            CDC_TXRX_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC1_RX_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT,
 | 
			
		||||
	                                            CDC_TXRX_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
 | 
			
		||||
	/* Setup second CDC Interface's Endpoints */
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC2_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            CDC_NOTIFICATION_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC2_TX_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            CDC_TXRX_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC2_RX_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT,
 | 
			
		||||
	                                            CDC_TXRX_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
 | 
			
		||||
	/* Setup CDC Notification, Rx and Tx Endpoints for the first CDC */
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(CDC1_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, CDC_NOTIFICATION_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(CDC1_TX_EPNUM, EP_TYPE_BULK,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, CDC_TXRX_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(CDC1_RX_EPNUM, EP_TYPE_BULK,
 | 
			
		||||
		                             ENDPOINT_DIR_OUT, CDC_TXRX_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/* Setup CDC Notification, Rx and Tx Endpoints for the second CDC */
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(CDC2_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, CDC_NOTIFICATION_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(CDC2_TX_EPNUM, EP_TYPE_BULK,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, CDC_TXRX_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(CDC2_RX_EPNUM, EP_TYPE_BULK,
 | 
			
		||||
		                             ENDPOINT_DIR_OUT, CDC_TXRX_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/* Reset line encoding baud rates so that the host knows to send new values */
 | 
			
		||||
	LineEncoding1.BaudRateBPS = 0;
 | 
			
		||||
	LineEncoding2.BaudRateBPS = 0;
 | 
			
		||||
 | 
			
		||||
	/* Indicate endpoint configuration success or failure */
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -95,24 +95,16 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
 */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	/* Indicate USB connected and ready */
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	/* Setup Generic IN Report Endpoint */
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(GENERIC_IN_EPNUM, EP_TYPE_INTERRUPT,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, GENERIC_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/* Setup Generic OUT Report Endpoint */
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(GENERIC_OUT_EPNUM, EP_TYPE_INTERRUPT,
 | 
			
		||||
		                             ENDPOINT_DIR_OUT, GENERIC_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	/* Setup HID Report Endpoints */
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(GENERIC_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            GENERIC_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(GENERIC_OUT_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT,
 | 
			
		||||
	                                            GENERIC_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
 | 
			
		||||
	/* Indicate endpoint configuration success or failure */
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -93,16 +93,14 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
 */ 
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	/* Indicate USB connected and ready */
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	/* Setup Joystick Report Endpoint */
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(JOYSTICK_EPNUM, EP_TYPE_INTERRUPT,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, JOYSTICK_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	/* Setup HID Report Endpoint */
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(JOYSTICK_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            JOYSTICK_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
 | 
			
		||||
	/* Indicate endpoint configuration success or failure */
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -160,7 +160,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
		{
 | 
			
		||||
			.Header                 = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
 | 
			
		||||
 | 
			
		||||
			.EndpointAddress        = (ENDPOINT_DESCRIPTOR_DIR_IN | KEYBOARD_EPNUM),
 | 
			
		||||
			.EndpointAddress        = (ENDPOINT_DESCRIPTOR_DIR_IN | KEYBOARD_IN_EPNUM),
 | 
			
		||||
			.Attributes             = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
 | 
			
		||||
			.EndpointSize           = KEYBOARD_EPSIZE,
 | 
			
		||||
			.PollingIntervalMS      = 0x0A
 | 
			
		||||
| 
						 | 
				
			
			@ -170,7 +170,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
		{
 | 
			
		||||
			.Header                 = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
 | 
			
		||||
 | 
			
		||||
			.EndpointAddress        = (ENDPOINT_DESCRIPTOR_DIR_OUT | KEYBOARD_LEDS_EPNUM),
 | 
			
		||||
			.EndpointAddress        = (ENDPOINT_DESCRIPTOR_DIR_OUT | KEYBOARD_OUT_EPNUM),
 | 
			
		||||
			.Attributes             = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
 | 
			
		||||
			.EndpointSize           = KEYBOARD_EPSIZE,
 | 
			
		||||
			.PollingIntervalMS      = 0x0A
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -77,13 +77,13 @@
 | 
			
		|||
					
 | 
			
		||||
	/* Macros: */
 | 
			
		||||
		/** Endpoint number of the Keyboard HID reporting IN endpoint. */
 | 
			
		||||
		#define KEYBOARD_EPNUM               1
 | 
			
		||||
		#define KEYBOARD_IN_EPNUM         1
 | 
			
		||||
 | 
			
		||||
		/** Endpoint number of the Keyboard HID reporting OUT endpoint. */
 | 
			
		||||
		#define KEYBOARD_LEDS_EPNUM          2
 | 
			
		||||
		#define KEYBOARD_OUT_EPNUM        2
 | 
			
		||||
		
 | 
			
		||||
		/** Size in bytes of the Keyboard HID reporting IN and OUT endpoints. */		
 | 
			
		||||
		#define KEYBOARD_EPSIZE              8
 | 
			
		||||
		#define KEYBOARD_EPSIZE           8
 | 
			
		||||
 | 
			
		||||
		/** Descriptor header type value, to indicate a HID class HID descriptor. */
 | 
			
		||||
		#define DTYPE_HID                 0x21
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -114,26 +114,19 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
 */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{	
 | 
			
		||||
	/* Indicate USB connected and ready */
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	/* Setup Keyboard Keycode Report Endpoint */
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(KEYBOARD_EPNUM, EP_TYPE_INTERRUPT,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, KEYBOARD_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/* Setup Keyboard LED Report Endpoint */
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(KEYBOARD_LEDS_EPNUM, EP_TYPE_INTERRUPT,
 | 
			
		||||
		                             ENDPOINT_DIR_OUT, KEYBOARD_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/* Setup HID Report Endpoints */
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(KEYBOARD_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            KEYBOARD_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(KEYBOARD_OUT_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT,
 | 
			
		||||
	                                            KEYBOARD_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
 | 
			
		||||
	/* Turn on Start-of-Frame events for tracking HID report period exiry */
 | 
			
		||||
	USB_Device_EnableSOFEvents();
 | 
			
		||||
 | 
			
		||||
	/* Indicate endpoint configuration success or failure */
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);	
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
 | 
			
		||||
| 
						 | 
				
			
			@ -332,7 +325,7 @@ void SendNextReport(void)
 | 
			
		|||
	}
 | 
			
		||||
	
 | 
			
		||||
	/* Select the Keyboard Report Endpoint */
 | 
			
		||||
	Endpoint_SelectEndpoint(KEYBOARD_EPNUM);
 | 
			
		||||
	Endpoint_SelectEndpoint(KEYBOARD_IN_EPNUM);
 | 
			
		||||
 | 
			
		||||
	/* Check if Keyboard Endpoint Ready for Read/Write and if we should send a new report */
 | 
			
		||||
	if (Endpoint_IsReadWriteAllowed() && SendReport)
 | 
			
		||||
| 
						 | 
				
			
			@ -352,7 +345,7 @@ void SendNextReport(void)
 | 
			
		|||
void ReceiveNextReport(void)
 | 
			
		||||
{
 | 
			
		||||
	/* Select the Keyboard LED Report Endpoint */
 | 
			
		||||
	Endpoint_SelectEndpoint(KEYBOARD_LEDS_EPNUM);
 | 
			
		||||
	Endpoint_SelectEndpoint(KEYBOARD_OUT_EPNUM);
 | 
			
		||||
 | 
			
		||||
	/* Check if Keyboard LED Endpoint contains a packet */
 | 
			
		||||
	if (Endpoint_IsOUTReceived())
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -101,32 +101,20 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
 */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	/* Indicate USB connected and ready */
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	/* Setup Keyboard Report Endpoint */
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(KEYBOARD_IN_EPNUM, EP_TYPE_INTERRUPT,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, HID_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/* Setup Keyboard LED Report Endpoint */
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(KEYBOARD_OUT_EPNUM, EP_TYPE_INTERRUPT,
 | 
			
		||||
		                             ENDPOINT_DIR_OUT, HID_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	/* Setup Keyboard HID Report Endpoints */
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(KEYBOARD_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            HID_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(KEYBOARD_OUT_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT,
 | 
			
		||||
	                                            HID_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
 | 
			
		||||
	/* Setup Mouse Report Endpoint */
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(MOUSE_IN_EPNUM, EP_TYPE_INTERRUPT,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, HID_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	/* Setup Mouse HID Report Endpoint */
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(MOUSE_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            HID_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
 | 
			
		||||
	/* Indicate endpoint configuration success or failure */
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);	
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the USB_UnhandledControlPacket event. This is used to catch standard and class specific
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -91,23 +91,16 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
 */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	/* Indicate USB connected and ready */
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	/* Setup MIDI stream endpoints */
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(MIDI_STREAM_OUT_EPNUM, EP_TYPE_BULK,
 | 
			
		||||
		                             ENDPOINT_DIR_OUT, MIDI_STREAM_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}	
 | 
			
		||||
	
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(MIDI_STREAM_IN_EPNUM, EP_TYPE_BULK,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, MIDI_STREAM_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	/* Setup MIDI Data Endpoints */
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(MIDI_STREAM_OUT_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT,
 | 
			
		||||
	                                            MIDI_STREAM_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(MIDI_STREAM_IN_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            MIDI_STREAM_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
 | 
			
		||||
	/* Indicate endpoint configuration success or failure */
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);	
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Task to handle the generation of MIDI note change events in response to presses of the board joystick, and send them
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -108,23 +108,16 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
 */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	/* Indicate USB connected and ready */
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	/* Setup Mass Storage In and Out Endpoints */
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(MASS_STORAGE_IN_EPNUM, EP_TYPE_BULK,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, MASS_STORAGE_IO_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(MASS_STORAGE_OUT_EPNUM, EP_TYPE_BULK,
 | 
			
		||||
		                             ENDPOINT_DIR_OUT, MASS_STORAGE_IO_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}							   
 | 
			
		||||
	/* Setup Mass Storage Data Endpoints */
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(MASS_STORAGE_IN_EPNUM,  EP_TYPE_BULK, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            MASS_STORAGE_IO_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(MASS_STORAGE_OUT_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT,
 | 
			
		||||
	                                            MASS_STORAGE_IO_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
 | 
			
		||||
	/* Indicate endpoint configuration success or failure */
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);							   
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the USB_UnhandledControlPacket event. This is used to catch standard and class specific
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -113,18 +113,17 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
 */ 
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	/* Indicate USB connected and ready */
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	
 | 
			
		||||
	/* Setup Mouse Report Endpoint */
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(MOUSE_EPNUM, EP_TYPE_INTERRUPT,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, MOUSE_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	/* Setup HID Report Endpoint */
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(MOUSE_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            MOUSE_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
 | 
			
		||||
	/* Turn on Start-of-Frame events for tracking HID report period exiry */
 | 
			
		||||
	USB_Device_EnableSOFEvents();
 | 
			
		||||
 | 
			
		||||
	/* Indicate endpoint configuration success or failure */
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);	
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -98,30 +98,18 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
 */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	/* Indicate USB connected and ready */
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	/* Setup CDC Notification, Rx and Tx Endpoints */
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(CDC_TX_EPNUM, EP_TYPE_BULK,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, CDC_TXRX_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}							   
 | 
			
		||||
	/* Setup RNDIS Data Endpoints */
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_TX_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            CDC_TXRX_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_RX_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT,
 | 
			
		||||
	                                            CDC_TXRX_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            CDC_NOTIFICATION_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(CDC_RX_EPNUM, EP_TYPE_BULK,
 | 
			
		||||
		                             ENDPOINT_DIR_OUT, CDC_TXRX_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, CDC_NOTIFICATION_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	/* Indicate endpoint configuration success or failure */
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -105,33 +105,21 @@ void EVENT_USB_Device_Disconnect(void)
 | 
			
		|||
 */
 | 
			
		||||
void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		||||
{
 | 
			
		||||
	/* Indicate USB connected and ready */
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 | 
			
		||||
	bool ConfigSuccess = true;
 | 
			
		||||
 | 
			
		||||
	/* Setup CDC Data Endpoints */
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            CDC_NOTIFICATION_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_TX_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_IN,
 | 
			
		||||
	                                            CDC_TXRX_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
	ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_RX_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT,
 | 
			
		||||
	                                            CDC_TXRX_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
 | 
			
		||||
	/* Setup CDC Notification, Rx and Tx Endpoints */
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, CDC_NOTIFICATION_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(CDC_TX_EPNUM, EP_TYPE_BULK,
 | 
			
		||||
		                             ENDPOINT_DIR_IN, CDC_TXRX_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	if (!(Endpoint_ConfigureEndpoint(CDC_RX_EPNUM, EP_TYPE_BULK,
 | 
			
		||||
		                             ENDPOINT_DIR_OUT, CDC_TXRX_EPSIZE,
 | 
			
		||||
	                                 ENDPOINT_BANK_SINGLE)))
 | 
			
		||||
	{
 | 
			
		||||
		LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/* Reset line encoding baud rate so that the host knows to send new values */
 | 
			
		||||
	LineEncoding.BaudRateBPS = 0;
 | 
			
		||||
 | 
			
		||||
	/* Indicate endpoint configuration success or failure */
 | 
			
		||||
	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);	
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue