Merge pull request #9 from mondalaci/replace-remaining-interface-numbers-with-enums
Replace CDC interface numbers with enums.
This commit is contained in:
		
						commit
						7024bb4c79
					
				
					 25 changed files with 233 additions and 233 deletions
				
			
		| 
						 | 
				
			
			@ -123,8 +123,8 @@ const USB_Descriptor_Configuration_t ConfigurationDescriptor =
 | 
			
		|||
			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
 | 
			
		||||
			.Subtype                = 0x06,
 | 
			
		||||
 | 
			
		||||
			.MasterInterfaceNumber  = 0,
 | 
			
		||||
			.SlaveInterfaceNumber   = 1,
 | 
			
		||||
			.MasterInterfaceNumber  = INTERFACE_ID_CDC_CCI,
 | 
			
		||||
			.SlaveInterfaceNumber   = INTERFACE_ID_CDC_DCI,
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
	.CDC_NotificationEndpoint =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -48,12 +48,12 @@ const USB_Descriptor_HIDReport_Datatype_t HIDReport[] =
 | 
			
		|||
	HID_RI_USAGE_PAGE(16, 0xFFDC), /* Vendor Page 0xDC */
 | 
			
		||||
	HID_RI_USAGE(8, 0xFB), /* Vendor Usage 0xFB */
 | 
			
		||||
	HID_RI_COLLECTION(8, 0x01), /* Vendor Usage 1 */
 | 
			
		||||
	    HID_RI_USAGE(8, 0x02), /* Vendor Usage 2 */
 | 
			
		||||
	    HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
	    HID_RI_LOGICAL_MAXIMUM(8, 0xFF),
 | 
			
		||||
	    HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
	    HID_RI_REPORT_COUNT(16, (sizeof(uint16_t) + SPM_PAGESIZE)),
 | 
			
		||||
	    HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
 | 
			
		||||
		HID_RI_USAGE(8, 0x02), /* Vendor Usage 2 */
 | 
			
		||||
		HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
		HID_RI_LOGICAL_MAXIMUM(8, 0xFF),
 | 
			
		||||
		HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
		HID_RI_REPORT_COUNT(16, (sizeof(uint16_t) + SPM_PAGESIZE)),
 | 
			
		||||
		HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
 | 
			
		||||
	HID_RI_END_COLLECTION(0),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -72,7 +72,7 @@
 | 
			
		|||
		 */
 | 
			
		||||
		enum InterfaceDescriptors_t
 | 
			
		||||
		{
 | 
			
		||||
			INTERFACE_ID_Printer      = 0, /**< Printer interface descriptor ID */
 | 
			
		||||
			INTERFACE_ID_Printer = 0, /**< Printer interface descriptor ID */
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		/** Enum for the device string descriptor IDs within the device. Each string descriptor should
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -91,7 +91,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
		{
 | 
			
		||||
			.Header                 = {.Size = sizeof(USB_Descriptor_Interface_Association_t), .Type = DTYPE_InterfaceAssociation},
 | 
			
		||||
 | 
			
		||||
			.FirstInterfaceIndex    = 0,
 | 
			
		||||
			.FirstInterfaceIndex    = INTERFACE_ID_CDC1_CCI,
 | 
			
		||||
			.TotalInterfaces        = 2,
 | 
			
		||||
 | 
			
		||||
			.Class                  = CDC_CSCP_CDCClass,
 | 
			
		||||
| 
						 | 
				
			
			@ -138,8 +138,8 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
 | 
			
		||||
			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 | 
			
		||||
 | 
			
		||||
			.MasterInterfaceNumber  = 0,
 | 
			
		||||
			.SlaveInterfaceNumber   = 1,
 | 
			
		||||
			.MasterInterfaceNumber  = INTERFACE_ID_CDC1_CCI,
 | 
			
		||||
			.SlaveInterfaceNumber   = INTERFACE_ID_CDC1_DCI,
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
	.CDC1_ManagementEndpoint =
 | 
			
		||||
| 
						 | 
				
			
			@ -192,7 +192,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
		{
 | 
			
		||||
			.Header                 = {.Size = sizeof(USB_Descriptor_Interface_Association_t), .Type = DTYPE_InterfaceAssociation},
 | 
			
		||||
 | 
			
		||||
			.FirstInterfaceIndex    = 2,
 | 
			
		||||
			.FirstInterfaceIndex    = INTERFACE_ID_CDC2_CCI,
 | 
			
		||||
			.TotalInterfaces        = 2,
 | 
			
		||||
 | 
			
		||||
			.Class                  = CDC_CSCP_CDCClass,
 | 
			
		||||
| 
						 | 
				
			
			@ -239,8 +239,8 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
 | 
			
		||||
			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 | 
			
		||||
 | 
			
		||||
			.MasterInterfaceNumber  = 2,
 | 
			
		||||
			.SlaveInterfaceNumber   = 3,
 | 
			
		||||
			.MasterInterfaceNumber  = INTERFACE_ID_CDC2_CCI,
 | 
			
		||||
			.SlaveInterfaceNumber   = INTERFACE_ID_CDC2_DCI,
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
	.CDC2_ManagementEndpoint =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -53,7 +53,7 @@
 | 
			
		|||
			// Keyboard HID Interface
 | 
			
		||||
			USB_Descriptor_Interface_t            HID_Interface;
 | 
			
		||||
			USB_HID_Descriptor_HID_t              HID_KeyboardHID;
 | 
			
		||||
	        USB_Descriptor_Endpoint_t             HID_ReportINEndpoint;
 | 
			
		||||
			USB_Descriptor_Endpoint_t             HID_ReportINEndpoint;
 | 
			
		||||
		} USB_Descriptor_Configuration_t;
 | 
			
		||||
 | 
			
		||||
		/** Enum for the device interface descriptor IDs within the device. Each interface descriptor
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -44,7 +44,7 @@ static uint8_t PrevKeyboardHIDReportBuffer[sizeof(USB_KeyboardReport_Data_t)];
 | 
			
		|||
 *  within a device can be differentiated from one another.
 | 
			
		||||
 */
 | 
			
		||||
USB_ClassInfo_HID_Device_t Keyboard_HID_Interface =
 | 
			
		||||
 	{
 | 
			
		||||
	{
 | 
			
		||||
		.Config =
 | 
			
		||||
			{
 | 
			
		||||
				.InterfaceNumber              = INTERFACE_ID_Keyboard,
 | 
			
		||||
| 
						 | 
				
			
			@ -57,7 +57,7 @@ USB_ClassInfo_HID_Device_t Keyboard_HID_Interface =
 | 
			
		|||
				.PrevReportINBuffer           = PrevKeyboardHIDReportBuffer,
 | 
			
		||||
				.PrevReportINBufferSize       = sizeof(PrevKeyboardHIDReportBuffer),
 | 
			
		||||
			},
 | 
			
		||||
    };
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Main program entry point. This routine contains the overall program flow, including initial
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -52,30 +52,30 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM HIDReport[] =
 | 
			
		|||
	HID_RI_USAGE(8, 0x02), /* Mouse */
 | 
			
		||||
	HID_RI_COLLECTION(8, 0x01), /* Application */
 | 
			
		||||
		HID_RI_REPORT_ID(8, HID_REPORTID_MouseReport),
 | 
			
		||||
	    HID_RI_USAGE(8, 0x01), /* Pointer */
 | 
			
		||||
	    HID_RI_COLLECTION(8, 0x00), /* Physical */
 | 
			
		||||
	        HID_RI_USAGE_PAGE(8, 0x09), /* Button */
 | 
			
		||||
	        HID_RI_USAGE_MINIMUM(8, 0x01),
 | 
			
		||||
	        HID_RI_USAGE_MAXIMUM(8, 0x03),
 | 
			
		||||
	        HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
	        HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 | 
			
		||||
	        HID_RI_REPORT_COUNT(8, 0x03),
 | 
			
		||||
	        HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
	        HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
 | 
			
		||||
	        HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
	        HID_RI_REPORT_SIZE(8, 0x05),
 | 
			
		||||
	        HID_RI_INPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
	        HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
 | 
			
		||||
	        HID_RI_USAGE(8, 0x30), /* Usage X */
 | 
			
		||||
	        HID_RI_USAGE(8, 0x31), /* Usage Y */
 | 
			
		||||
	        HID_RI_LOGICAL_MINIMUM(8, -1),
 | 
			
		||||
	        HID_RI_LOGICAL_MAXIMUM(8, 1),
 | 
			
		||||
	        HID_RI_PHYSICAL_MINIMUM(8, -1),
 | 
			
		||||
	        HID_RI_PHYSICAL_MAXIMUM(8, 1),
 | 
			
		||||
	        HID_RI_REPORT_COUNT(8, 0x02),
 | 
			
		||||
	        HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
	        HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE),
 | 
			
		||||
	    HID_RI_END_COLLECTION(0),
 | 
			
		||||
		HID_RI_USAGE(8, 0x01), /* Pointer */
 | 
			
		||||
		HID_RI_COLLECTION(8, 0x00), /* Physical */
 | 
			
		||||
			HID_RI_USAGE_PAGE(8, 0x09), /* Button */
 | 
			
		||||
			HID_RI_USAGE_MINIMUM(8, 0x01),
 | 
			
		||||
			HID_RI_USAGE_MAXIMUM(8, 0x03),
 | 
			
		||||
			HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
			HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 | 
			
		||||
			HID_RI_REPORT_COUNT(8, 0x03),
 | 
			
		||||
			HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
			HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
 | 
			
		||||
			HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
			HID_RI_REPORT_SIZE(8, 0x05),
 | 
			
		||||
			HID_RI_INPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
			HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
 | 
			
		||||
			HID_RI_USAGE(8, 0x30), /* Usage X */
 | 
			
		||||
			HID_RI_USAGE(8, 0x31), /* Usage Y */
 | 
			
		||||
			HID_RI_LOGICAL_MINIMUM(8, -1),
 | 
			
		||||
			HID_RI_LOGICAL_MAXIMUM(8, 1),
 | 
			
		||||
			HID_RI_PHYSICAL_MINIMUM(8, -1),
 | 
			
		||||
			HID_RI_PHYSICAL_MAXIMUM(8, 1),
 | 
			
		||||
			HID_RI_REPORT_COUNT(8, 0x02),
 | 
			
		||||
			HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
			HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE),
 | 
			
		||||
		HID_RI_END_COLLECTION(0),
 | 
			
		||||
	HID_RI_END_COLLECTION(0),
 | 
			
		||||
 | 
			
		||||
	/* Keyboard Report */
 | 
			
		||||
| 
						 | 
				
			
			@ -83,34 +83,34 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM HIDReport[] =
 | 
			
		|||
	HID_RI_USAGE(8, 0x06), /* Keyboard */
 | 
			
		||||
	HID_RI_COLLECTION(8, 0x01), /* Application */
 | 
			
		||||
		HID_RI_REPORT_ID(8, HID_REPORTID_KeyboardReport),
 | 
			
		||||
	    HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */
 | 
			
		||||
	    HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */
 | 
			
		||||
	    HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */
 | 
			
		||||
	    HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
	    HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 | 
			
		||||
	    HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
	    HID_RI_REPORT_COUNT(8, 0x08),
 | 
			
		||||
	    HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
 | 
			
		||||
	    HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
	    HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
	    HID_RI_INPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
	    HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */
 | 
			
		||||
	    HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */
 | 
			
		||||
	    HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */
 | 
			
		||||
	    HID_RI_REPORT_COUNT(8, 0x05),
 | 
			
		||||
	    HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
	    HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
 | 
			
		||||
	    HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
	    HID_RI_REPORT_SIZE(8, 0x03),
 | 
			
		||||
	    HID_RI_OUTPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
	    HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
	    HID_RI_LOGICAL_MAXIMUM(8, 0x65),
 | 
			
		||||
	    HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */
 | 
			
		||||
	    HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */
 | 
			
		||||
	    HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */
 | 
			
		||||
	    HID_RI_REPORT_COUNT(8, 0x06),
 | 
			
		||||
	    HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
	    HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE),
 | 
			
		||||
		HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */
 | 
			
		||||
		HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */
 | 
			
		||||
		HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */
 | 
			
		||||
		HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
		HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 | 
			
		||||
		HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
		HID_RI_REPORT_COUNT(8, 0x08),
 | 
			
		||||
		HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
 | 
			
		||||
		HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
		HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
		HID_RI_INPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
		HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */
 | 
			
		||||
		HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */
 | 
			
		||||
		HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */
 | 
			
		||||
		HID_RI_REPORT_COUNT(8, 0x05),
 | 
			
		||||
		HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
		HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
 | 
			
		||||
		HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
		HID_RI_REPORT_SIZE(8, 0x03),
 | 
			
		||||
		HID_RI_OUTPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
		HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
		HID_RI_LOGICAL_MAXIMUM(8, 0x65),
 | 
			
		||||
		HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */
 | 
			
		||||
		HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */
 | 
			
		||||
		HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */
 | 
			
		||||
		HID_RI_REPORT_COUNT(8, 0x06),
 | 
			
		||||
		HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
		HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE),
 | 
			
		||||
	HID_RI_END_COLLECTION(0),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -108,13 +108,13 @@ void SetupHardware()
 | 
			
		|||
/** Event handler for the library USB Connection event. */
 | 
			
		||||
void EVENT_USB_Device_Connect(void)
 | 
			
		||||
{
 | 
			
		||||
    LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the library USB Disconnection event. */
 | 
			
		||||
void EVENT_USB_Device_Disconnect(void)
 | 
			
		||||
{
 | 
			
		||||
    LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
 | 
			
		||||
	LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Event handler for the library USB Configuration Changed event. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -123,8 +123,8 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
 | 
			
		||||
			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 | 
			
		||||
 | 
			
		||||
			.MasterInterfaceNumber  = 0,
 | 
			
		||||
			.SlaveInterfaceNumber   = 1,
 | 
			
		||||
			.MasterInterfaceNumber  = INTERFACE_ID_CDC_CCI,
 | 
			
		||||
			.SlaveInterfaceNumber   = INTERFACE_ID_CDC_DCI,
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
	.CDC_NotificationEndpoint =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -124,8 +124,8 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
 | 
			
		||||
			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 | 
			
		||||
 | 
			
		||||
			.MasterInterfaceNumber  = 0,
 | 
			
		||||
			.SlaveInterfaceNumber   = 1,
 | 
			
		||||
			.MasterInterfaceNumber  = INTERFACE_ID_CDC_CCI,
 | 
			
		||||
			.SlaveInterfaceNumber   = INTERFACE_ID_CDC_DCI,
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
	.CDC_NotificationEndpoint =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -91,7 +91,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
		{
 | 
			
		||||
			.Header                 = {.Size = sizeof(USB_Descriptor_Interface_Association_t), .Type = DTYPE_InterfaceAssociation},
 | 
			
		||||
 | 
			
		||||
			.FirstInterfaceIndex    = 0,
 | 
			
		||||
			.FirstInterfaceIndex    = INTERFACE_ID_CDC_CCI,
 | 
			
		||||
			.TotalInterfaces        = 2,
 | 
			
		||||
 | 
			
		||||
			.Class                  = CDC_CSCP_CDCClass,
 | 
			
		||||
| 
						 | 
				
			
			@ -138,8 +138,8 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
 | 
			
		||||
			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 | 
			
		||||
 | 
			
		||||
			.MasterInterfaceNumber  = 0,
 | 
			
		||||
			.SlaveInterfaceNumber   = 1,
 | 
			
		||||
			.MasterInterfaceNumber  = INTERFACE_ID_CDC_CCI,
 | 
			
		||||
			.SlaveInterfaceNumber   = INTERFACE_ID_CDC_DCI,
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
	.CDC_NotificationEndpoint =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -110,7 +110,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
		{
 | 
			
		||||
			.Header                 = {.Size = sizeof(USB_Descriptor_Interface_Association_t), .Type = DTYPE_InterfaceAssociation},
 | 
			
		||||
 | 
			
		||||
			.FirstInterfaceIndex    = 0,
 | 
			
		||||
			.FirstInterfaceIndex    = INTERFACE_ID_CDC_CCI,
 | 
			
		||||
			.TotalInterfaces        = 2,
 | 
			
		||||
 | 
			
		||||
			.Class                  = CDC_CSCP_CDCClass,
 | 
			
		||||
| 
						 | 
				
			
			@ -157,8 +157,8 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
 | 
			
		||||
			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 | 
			
		||||
 | 
			
		||||
			.MasterInterfaceNumber  = 0,
 | 
			
		||||
			.SlaveInterfaceNumber   = 1,
 | 
			
		||||
			.MasterInterfaceNumber  = INTERFACE_ID_CDC_CCI,
 | 
			
		||||
			.SlaveInterfaceNumber   = INTERFACE_ID_CDC_DCI,
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
	.CDC_NotificationEndpoint =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -91,7 +91,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
		{
 | 
			
		||||
			.Header                 = {.Size = sizeof(USB_Descriptor_Interface_Association_t), .Type = DTYPE_InterfaceAssociation},
 | 
			
		||||
 | 
			
		||||
			.FirstInterfaceIndex    = 0,
 | 
			
		||||
			.FirstInterfaceIndex    = INTERFACE_ID_CDC1_CCI,
 | 
			
		||||
			.TotalInterfaces        = 2,
 | 
			
		||||
 | 
			
		||||
			.Class                  = CDC_CSCP_CDCClass,
 | 
			
		||||
| 
						 | 
				
			
			@ -138,8 +138,8 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
 | 
			
		||||
			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 | 
			
		||||
 | 
			
		||||
			.MasterInterfaceNumber  = 0,
 | 
			
		||||
			.SlaveInterfaceNumber   = 1,
 | 
			
		||||
			.MasterInterfaceNumber  = INTERFACE_ID_CDC1_CCI,
 | 
			
		||||
			.SlaveInterfaceNumber   = INTERFACE_ID_CDC1_DCI,
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
	.CDC1_ManagementEndpoint =
 | 
			
		||||
| 
						 | 
				
			
			@ -192,7 +192,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
		{
 | 
			
		||||
			.Header                 = {.Size = sizeof(USB_Descriptor_Interface_Association_t), .Type = DTYPE_InterfaceAssociation},
 | 
			
		||||
 | 
			
		||||
			.FirstInterfaceIndex    = 2,
 | 
			
		||||
			.FirstInterfaceIndex    = INTERFACE_ID_CDC2_CCI,
 | 
			
		||||
			.TotalInterfaces        = 2,
 | 
			
		||||
 | 
			
		||||
			.Class                  = CDC_CSCP_CDCClass,
 | 
			
		||||
| 
						 | 
				
			
			@ -239,8 +239,8 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
 | 
			
		||||
			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 | 
			
		||||
 | 
			
		||||
			.MasterInterfaceNumber  = 2,
 | 
			
		||||
			.SlaveInterfaceNumber   = 3,
 | 
			
		||||
			.MasterInterfaceNumber  = INTERFACE_ID_CDC2_CCI,
 | 
			
		||||
			.SlaveInterfaceNumber   = INTERFACE_ID_CDC2_DCI,
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
	.CDC2_ManagementEndpoint =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -48,30 +48,30 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM JoystickReport[] =
 | 
			
		|||
	HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
 | 
			
		||||
	HID_RI_USAGE(8, 0x04), /* Joystick */
 | 
			
		||||
	HID_RI_COLLECTION(8, 0x01), /* Application */
 | 
			
		||||
	    HID_RI_USAGE(8, 0x01), /* Pointer */
 | 
			
		||||
	    HID_RI_COLLECTION(8, 0x00), /* Physical */
 | 
			
		||||
	        HID_RI_USAGE(8, 0x30), /* Usage X */
 | 
			
		||||
	        HID_RI_USAGE(8, 0x31), /* Usage Y */
 | 
			
		||||
	        HID_RI_USAGE(8, 0x32), /* Usage Z */
 | 
			
		||||
	        HID_RI_LOGICAL_MINIMUM(8, -100),
 | 
			
		||||
	        HID_RI_LOGICAL_MAXIMUM(8, 100),
 | 
			
		||||
	        HID_RI_PHYSICAL_MINIMUM(8, -1),
 | 
			
		||||
	        HID_RI_PHYSICAL_MAXIMUM(8, 1),
 | 
			
		||||
	        HID_RI_REPORT_COUNT(8, 0x03),
 | 
			
		||||
	        HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
	        HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
 | 
			
		||||
	    HID_RI_END_COLLECTION(0),
 | 
			
		||||
	    HID_RI_USAGE_PAGE(8, 0x09), /* Button */
 | 
			
		||||
	    HID_RI_USAGE_MINIMUM(8, 0x01),
 | 
			
		||||
	    HID_RI_USAGE_MAXIMUM(8, 0x02),
 | 
			
		||||
	    HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
	    HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 | 
			
		||||
	    HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
	    HID_RI_REPORT_COUNT(8, 0x02),
 | 
			
		||||
	    HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
 | 
			
		||||
	    HID_RI_REPORT_SIZE(8, 0x06),
 | 
			
		||||
	    HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
	    HID_RI_INPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
		HID_RI_USAGE(8, 0x01), /* Pointer */
 | 
			
		||||
		HID_RI_COLLECTION(8, 0x00), /* Physical */
 | 
			
		||||
			HID_RI_USAGE(8, 0x30), /* Usage X */
 | 
			
		||||
			HID_RI_USAGE(8, 0x31), /* Usage Y */
 | 
			
		||||
			HID_RI_USAGE(8, 0x32), /* Usage Z */
 | 
			
		||||
			HID_RI_LOGICAL_MINIMUM(8, -100),
 | 
			
		||||
			HID_RI_LOGICAL_MAXIMUM(8, 100),
 | 
			
		||||
			HID_RI_PHYSICAL_MINIMUM(8, -1),
 | 
			
		||||
			HID_RI_PHYSICAL_MAXIMUM(8, 1),
 | 
			
		||||
			HID_RI_REPORT_COUNT(8, 0x03),
 | 
			
		||||
			HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
			HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
 | 
			
		||||
		HID_RI_END_COLLECTION(0),
 | 
			
		||||
		HID_RI_USAGE_PAGE(8, 0x09), /* Button */
 | 
			
		||||
		HID_RI_USAGE_MINIMUM(8, 0x01),
 | 
			
		||||
		HID_RI_USAGE_MAXIMUM(8, 0x02),
 | 
			
		||||
		HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
		HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 | 
			
		||||
		HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
		HID_RI_REPORT_COUNT(8, 0x02),
 | 
			
		||||
		HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
 | 
			
		||||
		HID_RI_REPORT_SIZE(8, 0x06),
 | 
			
		||||
		HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
		HID_RI_INPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
	HID_RI_END_COLLECTION(0),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,34 +49,34 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] =
 | 
			
		|||
	HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
 | 
			
		||||
	HID_RI_USAGE(8, 0x06), /* Keyboard */
 | 
			
		||||
	HID_RI_COLLECTION(8, 0x01), /* Application */
 | 
			
		||||
	    HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */
 | 
			
		||||
	    HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */
 | 
			
		||||
	    HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */
 | 
			
		||||
	    HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
	    HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 | 
			
		||||
	    HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
	    HID_RI_REPORT_COUNT(8, 0x08),
 | 
			
		||||
	    HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
 | 
			
		||||
	    HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
	    HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
	    HID_RI_INPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
	    HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */
 | 
			
		||||
	    HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */
 | 
			
		||||
	    HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */
 | 
			
		||||
	    HID_RI_REPORT_COUNT(8, 0x05),
 | 
			
		||||
	    HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
	    HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
 | 
			
		||||
	    HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
	    HID_RI_REPORT_SIZE(8, 0x03),
 | 
			
		||||
	    HID_RI_OUTPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
	    HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
	    HID_RI_LOGICAL_MAXIMUM(8, 0x65),
 | 
			
		||||
	    HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */
 | 
			
		||||
	    HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */
 | 
			
		||||
	    HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */
 | 
			
		||||
	    HID_RI_REPORT_COUNT(8, 0x06),
 | 
			
		||||
	    HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
	    HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE),
 | 
			
		||||
		HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */
 | 
			
		||||
		HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */
 | 
			
		||||
		HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */
 | 
			
		||||
		HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
		HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 | 
			
		||||
		HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
		HID_RI_REPORT_COUNT(8, 0x08),
 | 
			
		||||
		HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
 | 
			
		||||
		HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
		HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
		HID_RI_INPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
		HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */
 | 
			
		||||
		HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */
 | 
			
		||||
		HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */
 | 
			
		||||
		HID_RI_REPORT_COUNT(8, 0x05),
 | 
			
		||||
		HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
		HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
 | 
			
		||||
		HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
		HID_RI_REPORT_SIZE(8, 0x03),
 | 
			
		||||
		HID_RI_OUTPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
		HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
		HID_RI_LOGICAL_MAXIMUM(8, 0x65),
 | 
			
		||||
		HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */
 | 
			
		||||
		HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */
 | 
			
		||||
		HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */
 | 
			
		||||
		HID_RI_REPORT_COUNT(8, 0x06),
 | 
			
		||||
		HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
		HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE),
 | 
			
		||||
	HID_RI_END_COLLECTION(0),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -51,30 +51,30 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] =
 | 
			
		|||
	HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
 | 
			
		||||
	HID_RI_USAGE(8, 0x02), /* Mouse */
 | 
			
		||||
	HID_RI_COLLECTION(8, 0x01), /* Application */
 | 
			
		||||
	    HID_RI_USAGE(8, 0x01), /* Pointer */
 | 
			
		||||
	    HID_RI_COLLECTION(8, 0x00), /* Physical */
 | 
			
		||||
	        HID_RI_USAGE_PAGE(8, 0x09), /* Button */
 | 
			
		||||
	        HID_RI_USAGE_MINIMUM(8, 0x01),
 | 
			
		||||
	        HID_RI_USAGE_MAXIMUM(8, 0x03),
 | 
			
		||||
	        HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
	        HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 | 
			
		||||
	        HID_RI_REPORT_COUNT(8, 0x03),
 | 
			
		||||
	        HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
	        HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
 | 
			
		||||
	        HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
	        HID_RI_REPORT_SIZE(8, 0x05),
 | 
			
		||||
	        HID_RI_INPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
	        HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
 | 
			
		||||
	        HID_RI_USAGE(8, 0x30), /* Usage X */
 | 
			
		||||
	        HID_RI_USAGE(8, 0x31), /* Usage Y */
 | 
			
		||||
	        HID_RI_LOGICAL_MINIMUM(8, -1),
 | 
			
		||||
	        HID_RI_LOGICAL_MAXIMUM(8, 1),
 | 
			
		||||
	        HID_RI_PHYSICAL_MINIMUM(8, -1),
 | 
			
		||||
	        HID_RI_PHYSICAL_MAXIMUM(8, 1),
 | 
			
		||||
	        HID_RI_REPORT_COUNT(8, 0x02),
 | 
			
		||||
	        HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
	        HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE),
 | 
			
		||||
	    HID_RI_END_COLLECTION(0),
 | 
			
		||||
		HID_RI_USAGE(8, 0x01), /* Pointer */
 | 
			
		||||
		HID_RI_COLLECTION(8, 0x00), /* Physical */
 | 
			
		||||
			HID_RI_USAGE_PAGE(8, 0x09), /* Button */
 | 
			
		||||
			HID_RI_USAGE_MINIMUM(8, 0x01),
 | 
			
		||||
			HID_RI_USAGE_MAXIMUM(8, 0x03),
 | 
			
		||||
			HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
			HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 | 
			
		||||
			HID_RI_REPORT_COUNT(8, 0x03),
 | 
			
		||||
			HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
			HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
 | 
			
		||||
			HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
			HID_RI_REPORT_SIZE(8, 0x05),
 | 
			
		||||
			HID_RI_INPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
			HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
 | 
			
		||||
			HID_RI_USAGE(8, 0x30), /* Usage X */
 | 
			
		||||
			HID_RI_USAGE(8, 0x31), /* Usage Y */
 | 
			
		||||
			HID_RI_LOGICAL_MINIMUM(8, -1),
 | 
			
		||||
			HID_RI_LOGICAL_MAXIMUM(8, 1),
 | 
			
		||||
			HID_RI_PHYSICAL_MINIMUM(8, -1),
 | 
			
		||||
			HID_RI_PHYSICAL_MAXIMUM(8, 1),
 | 
			
		||||
			HID_RI_REPORT_COUNT(8, 0x02),
 | 
			
		||||
			HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
			HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE),
 | 
			
		||||
		HID_RI_END_COLLECTION(0),
 | 
			
		||||
	HID_RI_END_COLLECTION(0),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -84,34 +84,34 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] =
 | 
			
		|||
	HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
 | 
			
		||||
	HID_RI_USAGE(8, 0x06), /* Keyboard */
 | 
			
		||||
	HID_RI_COLLECTION(8, 0x01), /* Application */
 | 
			
		||||
	    HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */
 | 
			
		||||
	    HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */
 | 
			
		||||
	    HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */
 | 
			
		||||
	    HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
	    HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 | 
			
		||||
	    HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
	    HID_RI_REPORT_COUNT(8, 0x08),
 | 
			
		||||
	    HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
 | 
			
		||||
	    HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
	    HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
	    HID_RI_INPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
	    HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */
 | 
			
		||||
	    HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */
 | 
			
		||||
	    HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */
 | 
			
		||||
	    HID_RI_REPORT_COUNT(8, 0x05),
 | 
			
		||||
	    HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
	    HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
 | 
			
		||||
	    HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
	    HID_RI_REPORT_SIZE(8, 0x03),
 | 
			
		||||
	    HID_RI_OUTPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
	    HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
	    HID_RI_LOGICAL_MAXIMUM(8, 0x65),
 | 
			
		||||
	    HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */
 | 
			
		||||
	    HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */
 | 
			
		||||
	    HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */
 | 
			
		||||
	    HID_RI_REPORT_COUNT(8, 0x06),
 | 
			
		||||
	    HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
	    HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE),
 | 
			
		||||
		HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */
 | 
			
		||||
		HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */
 | 
			
		||||
		HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */
 | 
			
		||||
		HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
		HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 | 
			
		||||
		HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
		HID_RI_REPORT_COUNT(8, 0x08),
 | 
			
		||||
		HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
 | 
			
		||||
		HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
		HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
		HID_RI_INPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
		HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */
 | 
			
		||||
		HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */
 | 
			
		||||
		HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */
 | 
			
		||||
		HID_RI_REPORT_COUNT(8, 0x05),
 | 
			
		||||
		HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
		HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
 | 
			
		||||
		HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
		HID_RI_REPORT_SIZE(8, 0x03),
 | 
			
		||||
		HID_RI_OUTPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
		HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
		HID_RI_LOGICAL_MAXIMUM(8, 0x65),
 | 
			
		||||
		HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */
 | 
			
		||||
		HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */
 | 
			
		||||
		HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */
 | 
			
		||||
		HID_RI_REPORT_COUNT(8, 0x06),
 | 
			
		||||
		HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
		HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE),
 | 
			
		||||
	HID_RI_END_COLLECTION(0),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -48,30 +48,30 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] =
 | 
			
		|||
	HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
 | 
			
		||||
	HID_RI_USAGE(8, 0x02), /* Mouse */
 | 
			
		||||
	HID_RI_COLLECTION(8, 0x01), /* Application */
 | 
			
		||||
	    HID_RI_USAGE(8, 0x01), /* Pointer */
 | 
			
		||||
	    HID_RI_COLLECTION(8, 0x00), /* Physical */
 | 
			
		||||
	        HID_RI_USAGE_PAGE(8, 0x09), /* Button */
 | 
			
		||||
	        HID_RI_USAGE_MINIMUM(8, 0x01),
 | 
			
		||||
	        HID_RI_USAGE_MAXIMUM(8, 0x03),
 | 
			
		||||
	        HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
	        HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 | 
			
		||||
	        HID_RI_REPORT_COUNT(8, 0x03),
 | 
			
		||||
	        HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
	        HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
 | 
			
		||||
	        HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
	        HID_RI_REPORT_SIZE(8, 0x05),
 | 
			
		||||
	        HID_RI_INPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
	        HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
 | 
			
		||||
	        HID_RI_USAGE(8, 0x30), /* Usage X */
 | 
			
		||||
	        HID_RI_USAGE(8, 0x31), /* Usage Y */
 | 
			
		||||
	        HID_RI_LOGICAL_MINIMUM(8, -1),
 | 
			
		||||
	        HID_RI_LOGICAL_MAXIMUM(8, 1),
 | 
			
		||||
	        HID_RI_PHYSICAL_MINIMUM(8, -1),
 | 
			
		||||
	        HID_RI_PHYSICAL_MAXIMUM(8, 1),
 | 
			
		||||
	        HID_RI_REPORT_COUNT(8, 0x02),
 | 
			
		||||
	        HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
	        HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE),
 | 
			
		||||
	    HID_RI_END_COLLECTION(0),
 | 
			
		||||
		HID_RI_USAGE(8, 0x01), /* Pointer */
 | 
			
		||||
		HID_RI_COLLECTION(8, 0x00), /* Physical */
 | 
			
		||||
			HID_RI_USAGE_PAGE(8, 0x09), /* Button */
 | 
			
		||||
			HID_RI_USAGE_MINIMUM(8, 0x01),
 | 
			
		||||
			HID_RI_USAGE_MAXIMUM(8, 0x03),
 | 
			
		||||
			HID_RI_LOGICAL_MINIMUM(8, 0x00),
 | 
			
		||||
			HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 | 
			
		||||
			HID_RI_REPORT_COUNT(8, 0x03),
 | 
			
		||||
			HID_RI_REPORT_SIZE(8, 0x01),
 | 
			
		||||
			HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
 | 
			
		||||
			HID_RI_REPORT_COUNT(8, 0x01),
 | 
			
		||||
			HID_RI_REPORT_SIZE(8, 0x05),
 | 
			
		||||
			HID_RI_INPUT(8, HID_IOF_CONSTANT),
 | 
			
		||||
			HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
 | 
			
		||||
			HID_RI_USAGE(8, 0x30), /* Usage X */
 | 
			
		||||
			HID_RI_USAGE(8, 0x31), /* Usage Y */
 | 
			
		||||
			HID_RI_LOGICAL_MINIMUM(8, -1),
 | 
			
		||||
			HID_RI_LOGICAL_MAXIMUM(8, 1),
 | 
			
		||||
			HID_RI_PHYSICAL_MINIMUM(8, -1),
 | 
			
		||||
			HID_RI_PHYSICAL_MAXIMUM(8, 1),
 | 
			
		||||
			HID_RI_REPORT_COUNT(8, 0x02),
 | 
			
		||||
			HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
			HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE),
 | 
			
		||||
		HID_RI_END_COLLECTION(0),
 | 
			
		||||
	HID_RI_END_COLLECTION(0),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -123,8 +123,8 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
 | 
			
		||||
			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 | 
			
		||||
 | 
			
		||||
			.MasterInterfaceNumber  = 0,
 | 
			
		||||
			.SlaveInterfaceNumber   = 1,
 | 
			
		||||
			.MasterInterfaceNumber  = INTERFACE_ID_CDC_CCI,
 | 
			
		||||
			.SlaveInterfaceNumber   = INTERFACE_ID_CDC_DCI,
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
	.CDC_NotificationEndpoint =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -124,8 +124,8 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
 | 
			
		||||
			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 | 
			
		||||
 | 
			
		||||
			.MasterInterfaceNumber  = 0,
 | 
			
		||||
			.SlaveInterfaceNumber   = 1,
 | 
			
		||||
			.MasterInterfaceNumber  = INTERFACE_ID_CDC_CCI,
 | 
			
		||||
			.SlaveInterfaceNumber   = INTERFACE_ID_CDC_DCI,
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
	.CDC_NotificationEndpoint =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -123,8 +123,8 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
 | 
			
		||||
			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 | 
			
		||||
 | 
			
		||||
			.MasterInterfaceNumber  = 0,
 | 
			
		||||
			.SlaveInterfaceNumber   = 1,
 | 
			
		||||
			.MasterInterfaceNumber  = INTERFACE_ID_CDC_CCI,
 | 
			
		||||
			.SlaveInterfaceNumber   = INTERFACE_ID_CDC_DCI,
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
	.CDC_NotificationEndpoint =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -124,8 +124,8 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
 | 
			
		||||
			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 | 
			
		||||
 | 
			
		||||
			.MasterInterfaceNumber  = 0,
 | 
			
		||||
			.SlaveInterfaceNumber   = 1,
 | 
			
		||||
			.MasterInterfaceNumber  = INTERFACE_ID_CDC_CCI,
 | 
			
		||||
			.SlaveInterfaceNumber   = INTERFACE_ID_CDC_DCI,
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
	.CDC_NotificationEndpoint =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -136,8 +136,8 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
 | 
			
		||||
			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 | 
			
		||||
 | 
			
		||||
			.MasterInterfaceNumber  = 0,
 | 
			
		||||
			.SlaveInterfaceNumber   = 1,
 | 
			
		||||
			.MasterInterfaceNumber  = INTERFACE_ID_CDC_CCI,
 | 
			
		||||
			.SlaveInterfaceNumber   = INTERFACE_ID_CDC_DCI,
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
	.CDC_NotificationEndpoint =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -124,8 +124,8 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
 | 
			
		||||
			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 | 
			
		||||
 | 
			
		||||
			.MasterInterfaceNumber  = 0,
 | 
			
		||||
			.SlaveInterfaceNumber   = 1,
 | 
			
		||||
			.MasterInterfaceNumber  = INTERFACE_ID_CDC_CCI,
 | 
			
		||||
			.SlaveInterfaceNumber   = INTERFACE_ID_CDC_DCI,
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
	.CDC_NotificationEndpoint =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -91,7 +91,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
		{
 | 
			
		||||
			.Header                 = {.Size = sizeof(USB_Descriptor_Interface_Association_t), .Type = DTYPE_InterfaceAssociation},
 | 
			
		||||
 | 
			
		||||
			.FirstInterfaceIndex    = 0,
 | 
			
		||||
			.FirstInterfaceIndex    = INTERFACE_ID_CDC_CCI,
 | 
			
		||||
			.TotalInterfaces        = 2,
 | 
			
		||||
 | 
			
		||||
			.Class                  = CDC_CSCP_CDCClass,
 | 
			
		||||
| 
						 | 
				
			
			@ -138,8 +138,8 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 | 
			
		|||
			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
 | 
			
		||||
			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 | 
			
		||||
 | 
			
		||||
			.MasterInterfaceNumber  = 0,
 | 
			
		||||
			.SlaveInterfaceNumber   = 1,
 | 
			
		||||
			.MasterInterfaceNumber  = INTERFACE_ID_CDC_CCI,
 | 
			
		||||
			.SlaveInterfaceNumber   = INTERFACE_ID_CDC_DCI,
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
	.CDC_NotificationEndpoint =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -124,8 +124,8 @@ const USART_USB_Descriptor_Configuration_t PROGMEM USART_ConfigurationDescriptor
 | 
			
		|||
			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
 | 
			
		||||
			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 | 
			
		||||
 | 
			
		||||
			.MasterInterfaceNumber  = 0,
 | 
			
		||||
			.SlaveInterfaceNumber   = 1,
 | 
			
		||||
			.MasterInterfaceNumber  = INTERFACE_ID_CDC_CCI,
 | 
			
		||||
			.SlaveInterfaceNumber   = INTERFACE_ID_CDC_DCI,
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
	.CDC_NotificationEndpoint =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue