mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-30 21:02:32 +01:00 
			
		
		
		
	Changed the signature of the CALLBACK_USB_GetDescriptor() callback function so that the descriptor pointer is const, to remove the need for extra casting inside the callback (thanks to Jonathan Kollasch).
This commit is contained in:
		
							parent
							
								
									ed8ad18f26
								
							
						
					
					
						commit
						092f82e06f
					
				| @ -203,33 +203,33 @@ USB_Descriptor_String_t ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration: | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String: | ||||
| 			if (!(DescriptorNumber)) | ||||
| 			{ | ||||
| 				Address = (void*)&LanguageString; | ||||
| 				Address = &LanguageString; | ||||
| 				Size    = LanguageString.Header.Size; | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				Address = (void*)&ProductString; | ||||
| 				Address = &ProductString; | ||||
| 				Size    = ProductString.Header.Size; | ||||
| 			} | ||||
| 			 | ||||
|  | ||||
| @ -142,6 +142,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -145,13 +145,13 @@ USB_Descriptor_String_t ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
|  | ||||
| @ -168,6 +168,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -273,37 +273,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -78,6 +78,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -273,37 +273,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration: | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00: | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -78,6 +78,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -340,37 +340,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -98,6 +98,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -191,48 +191,48 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
| 			 | ||||
| 			break; | ||||
| 		case DTYPE_HID:  | ||||
| 			Address = (void*)&ConfigurationDescriptor.HID_GenericHID; | ||||
| 			Address = &ConfigurationDescriptor.HID_GenericHID; | ||||
| 			Size    = sizeof(USB_HID_Descriptor_t); | ||||
| 			break; | ||||
| 		case DTYPE_Report:  | ||||
| 			Address = (void*)&GenericReport; | ||||
| 			Address = &GenericReport; | ||||
| 			Size    = sizeof(GenericReport); | ||||
| 			break; | ||||
| 	} | ||||
|  | ||||
| @ -68,6 +68,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 											 | ||||
| #endif | ||||
|  | ||||
| @ -201,48 +201,48 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
| 			 | ||||
| 			break; | ||||
| 		case DTYPE_HID:  | ||||
| 			Address = (void*)&ConfigurationDescriptor.HID_JoystickHID; | ||||
| 			Address = &ConfigurationDescriptor.HID_JoystickHID; | ||||
| 			Size    = sizeof(USB_HID_Descriptor_t); | ||||
| 			break; | ||||
| 		case DTYPE_Report:  | ||||
| 			Address = (void*)&JoystickReport; | ||||
| 			Address = &JoystickReport; | ||||
| 			Size    = sizeof(JoystickReport); | ||||
| 			break; | ||||
| 	} | ||||
|  | ||||
| @ -65,7 +65,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -205,48 +205,50 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the | ||||
|  *  USB host. | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device:  | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
| 			 | ||||
| 			break; | ||||
| 		case DTYPE_HID:  | ||||
| 			Address = (void*)&ConfigurationDescriptor.HID_KeyboardHID; | ||||
| 			Address = &ConfigurationDescriptor.HID_KeyboardHID; | ||||
| 			Size    = sizeof(USB_HID_Descriptor_t); | ||||
| 			break; | ||||
| 		case DTYPE_Report:  | ||||
| 			Address = (void*)&KeyboardReport; | ||||
| 			Address = &KeyboardReport; | ||||
| 			Size    = sizeof(KeyboardReport); | ||||
| 			break; | ||||
| 	} | ||||
|  | ||||
| @ -65,6 +65,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -277,37 +277,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device:  | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
| @ -316,24 +316,24 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		case DTYPE_HID:  | ||||
| 			if (!(wIndex)) | ||||
| 			{ | ||||
| 				Address = (void*)&ConfigurationDescriptor.HID1_KeyboardHID; | ||||
| 				Address = &ConfigurationDescriptor.HID1_KeyboardHID; | ||||
| 				Size    = sizeof(USB_HID_Descriptor_t); | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				Address = (void*)&ConfigurationDescriptor.HID2_MouseHID; | ||||
| 				Address = &ConfigurationDescriptor.HID2_MouseHID; | ||||
| 				Size    = sizeof(USB_HID_Descriptor_t);			 | ||||
| 			} | ||||
| 			break; | ||||
| 		case DTYPE_Report:  | ||||
| 			if (!(wIndex)) | ||||
| 			{ | ||||
| 				Address = (void*)&KeyboardReport; | ||||
| 				Address = &KeyboardReport; | ||||
| 				Size    = sizeof(KeyboardReport); | ||||
| 			} | ||||
| 			else | ||||
| 			{			 | ||||
| 				Address = (void*)&MouseReport; | ||||
| 				Address = &MouseReport; | ||||
| 				Size    = sizeof(MouseReport); | ||||
| 			} | ||||
| 			 | ||||
|  | ||||
| @ -71,6 +71,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -285,37 +285,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device:  | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -77,6 +77,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -176,37 +176,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device:  | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -68,6 +68,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -256,48 +256,48 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device:  | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
| 			 | ||||
| 			break; | ||||
| 		case DTYPE_HID: | ||||
| 			Address = (void*)&ConfigurationDescriptor.HID_KeyboardHID; | ||||
| 			Address = &ConfigurationDescriptor.HID_KeyboardHID; | ||||
| 			Size    = sizeof(USB_HID_Descriptor_t); | ||||
| 			break; | ||||
| 		case DTYPE_Report: | ||||
| 			Address = (void*)&KeyboardReport; | ||||
| 			Address = &KeyboardReport; | ||||
| 			Size    = sizeof(KeyboardReport); | ||||
| 			break; | ||||
| 	} | ||||
|  | ||||
| @ -79,6 +79,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -201,48 +201,48 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration: | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String: | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00: | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01: | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02: | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
| 			 | ||||
| 			break; | ||||
| 		case DTYPE_HID:  | ||||
| 			Address = (void*)&ConfigurationDescriptor.HID_MouseHID; | ||||
| 			Address = &ConfigurationDescriptor.HID_MouseHID; | ||||
| 			Size    = sizeof(USB_HID_Descriptor_t); | ||||
| 			break; | ||||
| 		case DTYPE_Report:  | ||||
| 			Address = (void*)&MouseReport; | ||||
| 			Address = &MouseReport; | ||||
| 			Size    = sizeof(MouseReport); | ||||
| 			break; | ||||
| 	} | ||||
|  | ||||
| @ -65,6 +65,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -214,37 +214,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String: | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00: | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01: | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02: | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -79,6 +79,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -226,37 +226,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*          Address = NULL; | ||||
| 	uint16_t       Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -79,6 +79,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -313,48 +313,48 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*          Address = NULL; | ||||
| 	uint16_t       Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
| 			 | ||||
| 			break; | ||||
| 		case DTYPE_HID:  | ||||
| 			Address = (void*)&ConfigurationDescriptor.HID_MouseHID; | ||||
| 			Address = &ConfigurationDescriptor.HID_MouseHID; | ||||
| 			Size    = sizeof(USB_HID_Descriptor_t); | ||||
| 			break; | ||||
| 		case DTYPE_Report:  | ||||
| 			Address = (void*)&MouseReport; | ||||
| 			Address = &MouseReport; | ||||
| 			Size    = sizeof(MouseReport); | ||||
| 			break; | ||||
| 	} | ||||
|  | ||||
| @ -90,6 +90,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -156,48 +156,48 @@ USB_OSCompatibleIDDescriptor_t PROGMEM DevCompatIDs = | ||||
| 
 | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration: | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String: | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00: | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01: | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02: | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x03: | ||||
| 					Address = (void*)&SerialNumberString; | ||||
| 					Address = &SerialNumberString; | ||||
| 					Size    = pgm_read_byte(&SerialNumberString.Header.Size); | ||||
| 					break; | ||||
| 				case 0xEE: | ||||
| 					/* A Microsoft-proprietary extension. String address 0xEE is used by Windows for
 | ||||
| 					   "OS Descriptors", which in this case allows us to indicate that our device is | ||||
| 					   Sideshow compatible regardless of VID/PID values. */ | ||||
| 					Address = (void*)&OSDescriptorString; | ||||
| 					Address = &OSDescriptorString; | ||||
| 					Size    = pgm_read_byte(&OSDescriptorString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
| @ -211,7 +211,7 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 
 | ||||
| uint16_t USB_GetOSFeatureDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
|  | ||||
| @ -87,10 +87,12 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| 		uint16_t USB_GetOSFeatureDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -187,37 +187,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*          Address = NULL; | ||||
| 	uint16_t       Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -75,6 +75,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -274,37 +274,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -314,6 +314,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -274,37 +274,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration: | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00: | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -314,6 +314,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -340,37 +340,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 	 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -112,6 +112,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -201,48 +201,48 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
| 			 | ||||
| 			break; | ||||
| 		case DTYPE_HID:  | ||||
| 			Address = (void*)&ConfigurationDescriptor.HID_GenericHID; | ||||
| 			Address = &ConfigurationDescriptor.HID_GenericHID; | ||||
| 			Size    = sizeof(USB_Descriptor_HID_t); | ||||
| 			break; | ||||
| 		case DTYPE_Report:  | ||||
| 			Address = (void*)&GenericReport; | ||||
| 			Address = &GenericReport; | ||||
| 			Size    = sizeof(GenericReport); | ||||
| 			break; | ||||
| 	} | ||||
|  | ||||
| @ -96,6 +96,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -201,48 +201,48 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
| 			 | ||||
| 			break; | ||||
| 		case DTYPE_HID:  | ||||
| 			Address = (void*)&ConfigurationDescriptor.HID_JoystickHID; | ||||
| 			Address = &ConfigurationDescriptor.HID_JoystickHID; | ||||
| 			Size    = sizeof(USB_Descriptor_HID_t); | ||||
| 			break; | ||||
| 		case DTYPE_Report:  | ||||
| 			Address = (void*)&JoystickReport; | ||||
| 			Address = &JoystickReport; | ||||
| 			Size    = sizeof(JoystickReport); | ||||
| 			break; | ||||
| 	} | ||||
|  | ||||
| @ -89,6 +89,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -218,48 +218,48 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device:  | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
| 			 | ||||
| 			break; | ||||
| 		case DTYPE_HID:  | ||||
| 			Address = (void*)&ConfigurationDescriptor.HID_KeyboardHID; | ||||
| 			Address = &ConfigurationDescriptor.HID_KeyboardHID; | ||||
| 			Size    = sizeof(USB_Descriptor_HID_t); | ||||
| 			break; | ||||
| 		case DTYPE_Report:  | ||||
| 			Address = (void*)&KeyboardReport; | ||||
| 			Address = &KeyboardReport; | ||||
| 			Size    = sizeof(KeyboardReport); | ||||
| 			break; | ||||
| 	} | ||||
|  | ||||
| @ -94,6 +94,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -288,37 +288,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device:  | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
| @ -327,24 +327,24 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		case DTYPE_HID:  | ||||
| 			if (!(wIndex)) | ||||
| 			{ | ||||
| 				Address = (void*)&ConfigurationDescriptor.HID1_KeyboardHID; | ||||
| 				Address = &ConfigurationDescriptor.HID1_KeyboardHID; | ||||
| 				Size    = sizeof(USB_Descriptor_HID_t); | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				Address = (void*)&ConfigurationDescriptor.HID2_MouseHID; | ||||
| 				Address = &ConfigurationDescriptor.HID2_MouseHID; | ||||
| 				Size    = sizeof(USB_Descriptor_HID_t);			 | ||||
| 			} | ||||
| 			break; | ||||
| 		case DTYPE_Report:  | ||||
| 			if (!(wIndex)) | ||||
| 			{ | ||||
| 				Address = (void*)&KeyboardReport; | ||||
| 				Address = &KeyboardReport; | ||||
| 				Size    = sizeof(KeyboardReport); | ||||
| 			} | ||||
| 			else | ||||
| 			{			 | ||||
| 				Address = (void*)&MouseReport; | ||||
| 				Address = &MouseReport; | ||||
| 				Size    = sizeof(MouseReport); | ||||
| 			} | ||||
| 			 | ||||
|  | ||||
| @ -100,6 +100,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -285,37 +285,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device:  | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -185,6 +185,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -176,37 +176,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device:  | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -67,6 +67,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -201,37 +201,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration: | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String: | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00: | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01: | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02: | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -89,6 +89,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -214,37 +214,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String: | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00: | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01: | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02: | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -93,6 +93,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -226,37 +226,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*          Address = NULL; | ||||
| 	uint16_t       Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -93,6 +93,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -201,48 +201,48 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration: | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String: | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00: | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01: | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02: | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
| 			 | ||||
| 			break; | ||||
| 		case DTYPE_HID:  | ||||
| 			Address = (void*)&ConfigurationDescriptor.HID_MouseHID; | ||||
| 			Address = &ConfigurationDescriptor.HID_MouseHID; | ||||
| 			Size    = sizeof(USB_HID_Descriptor_t); | ||||
| 			break; | ||||
| 		case DTYPE_Report:  | ||||
| 			Address = (void*)&MouseReport; | ||||
| 			Address = &MouseReport; | ||||
| 			Size    = sizeof(MouseReport); | ||||
| 			break; | ||||
| 	} | ||||
|  | ||||
| @ -65,6 +65,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -254,8 +254,8 @@ static void USB_Device_GetInternalSerialDescriptor(void) | ||||
| 
 | ||||
| static void USB_Device_GetDescriptor(void) | ||||
| { | ||||
| 	void*    DescriptorPointer; | ||||
| 	uint16_t DescriptorSize; | ||||
| 	const void* DescriptorPointer; | ||||
| 	uint16_t    DescriptorSize; | ||||
| 	 | ||||
| 	#if !defined(USE_FLASH_DESCRIPTORS) && !defined(USE_EEPROM_DESCRIPTORS) && !defined(USE_RAM_DESCRIPTORS) | ||||
| 	uint8_t  DescriptorAddressSpace; | ||||
|  | ||||
| @ -187,7 +187,7 @@ | ||||
| 			 */ | ||||
| 			uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 			                                    const uint8_t wIndex, | ||||
| 			                                    void** const DescriptorAddress | ||||
| 			                                    const void** const DescriptorAddress | ||||
| 			#if !defined(USE_FLASH_DESCRIPTORS) && !defined(USE_EEPROM_DESCRIPTORS) && !defined(USE_RAM_DESCRIPTORS) | ||||
| 			                                    , uint8_t* MemoryAddressSpace | ||||
| 			#endif | ||||
|  | ||||
| @ -24,6 +24,8 @@ | ||||
|   *  - Changed all Device mode LowLevel demos and Device Class drivers so that the control request is acknowledged and any data | ||||
|   *    transferred as quickly as possible without any processing inbetween sections, so that long callbacks or event handlers will | ||||
|   *    not break communications with the host by exceeding the maximum control request stage timeout period | ||||
|   *  - Changed the signature of the CALLBACK_USB_GetDescriptor() callback function so that the descriptor pointer is const, to remove | ||||
|   *    the need for extra casting inside the callback (thanks to Jonathan Kollasch) | ||||
|   * | ||||
|   *  <b>Fixed:</b> | ||||
|   *  - Fixed USB_GetHIDReportItemInfo() function modifying the given report item's data when the report item does not exist | ||||
|  | ||||
| @ -18,6 +18,11 @@ | ||||
|  *    - A new USB driver source file, Drivers/USB/HighLevel/PipeStream.c now exists. This source file should be added to all | ||||
|  *      project makefiles using the USB driver of LUFA, or the makefile should be updated to use the new module source variables. | ||||
|  * | ||||
|  *  <b>Device Mode</b> | ||||
|  *    - The signature for the CALLBACK_USB_GetDescriptor() callback has changed, the "void** const DescriptorAddress" parameter is | ||||
|  *      now "const void** const DescriptorAddress". Existing applications should update their callback signatures to match this, and | ||||
|  *      eliminate any casting of descriptor pointers to a non-const pointer. | ||||
|  * | ||||
|  * \section Sec_Migration100807 Migrating from 100513 to 100807 | ||||
|  * | ||||
|  *  <b>Non-USB Library Components</b> | ||||
|  | ||||
| @ -174,41 +174,41 @@ USB_Descriptor_String_t PROGMEM SerialString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 	 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device:  | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x03: | ||||
| 					Address = (void*)&SerialString; | ||||
| 					Address = &SerialString; | ||||
| 					Size    = pgm_read_byte(&SerialString.Header.Size); | ||||
| 					break;					 | ||||
| 			} | ||||
|  | ||||
| @ -75,6 +75,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -214,37 +214,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device:  | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -79,6 +79,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -285,37 +285,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device:  | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -77,6 +77,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -178,37 +178,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device:  | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -84,6 +84,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -226,37 +226,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*          Address = NULL; | ||||
| 	uint16_t       Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -79,6 +79,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -198,48 +198,48 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration: | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String: | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00: | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01: | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02: | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
| 			 | ||||
| 			break; | ||||
| 		case DTYPE_HID: | ||||
| 			Address = (void*)&ConfigurationDescriptor.HID_KeyboardHID; | ||||
| 			Address = &ConfigurationDescriptor.HID_KeyboardHID; | ||||
| 			Size    = sizeof(USB_HID_Descriptor_t); | ||||
| 			break; | ||||
| 		case DTYPE_Report: | ||||
| 			Address = (void*)&KeyboardReport; | ||||
| 			Address = &KeyboardReport; | ||||
| 			Size    = sizeof(KeyboardReport); | ||||
| 			break; | ||||
| 	} | ||||
|  | ||||
| @ -66,6 +66,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -155,41 +155,41 @@ USB_Descriptor_String_t PROGMEM RelayBoard_SerialString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device: | ||||
| 			Address = (void*)&RelayBoard_DeviceDescriptor; | ||||
| 			Address = &RelayBoard_DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration: | ||||
| 			Address = (void*)&RelayBoard_ConfigurationDescriptor; | ||||
| 			Address = &RelayBoard_ConfigurationDescriptor; | ||||
| 			Size    = sizeof(RelayBoard_USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String: | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00: | ||||
| 					Address = (void*)&RelayBoard_LanguageString; | ||||
| 					Address = &RelayBoard_LanguageString; | ||||
| 					Size    = pgm_read_byte(&RelayBoard_LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01: | ||||
| 					Address = (void*)&RelayBoard_ManufacturerString; | ||||
| 					Address = &RelayBoard_ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&RelayBoard_ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02: | ||||
| 					Address = (void*)&RelayBoard_ProductString; | ||||
| 					Address = &RelayBoard_ProductString; | ||||
| 					Size    = pgm_read_byte(&RelayBoard_ProductString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x03: | ||||
| 					Address = (void*)&RelayBoard_SerialString; | ||||
| 					Address = &RelayBoard_SerialString; | ||||
| 					Size    = pgm_read_byte(&RelayBoard_SerialString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -41,7 +41,6 @@ | ||||
| 		#include <avr/pgmspace.h> | ||||
| 		#include <LUFA/Drivers/USB/USB.h> | ||||
| 
 | ||||
| 
 | ||||
| 	/* Type Defines: */ | ||||
| 		/** Type define for the device configuration descriptor structure. This must be defined in the
 | ||||
| 		 *  application code, as the configuration descriptor contains several sub-descriptors which | ||||
| @ -56,6 +55,6 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress); | ||||
| 
 | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| #endif | ||||
|  | ||||
| @ -239,48 +239,48 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device:  | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
| 			 | ||||
| 			break; | ||||
| 		case DTYPE_HID:  | ||||
| 			Address = (void*)&ConfigurationDescriptor.HID_GenericHID; | ||||
| 			Address = &ConfigurationDescriptor.HID_GenericHID; | ||||
| 			Size    = sizeof(USB_HID_Descriptor_t); | ||||
| 			break; | ||||
| 		case DTYPE_Report:  | ||||
| 			Address = (void*)&GenericReport; | ||||
| 			Address = &GenericReport; | ||||
| 			Size    = sizeof(GenericReport); | ||||
| 			break; | ||||
| 	} | ||||
|  | ||||
| @ -56,6 +56,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -226,37 +226,37 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device:  | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -79,6 +79,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -174,37 +174,39 @@ USB_Descriptor_String_t PROGMEM ProductString = | ||||
|  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the | ||||
|  *  USB host. | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	const uint8_t  DescriptorType   = (wValue >> 8); | ||||
| 	const uint8_t  DescriptorNumber = (wValue & 0xFF); | ||||
| 
 | ||||
| 	void*    Address = NULL; | ||||
| 	uint16_t Size    = NO_DESCRIPTOR; | ||||
| 	const void* Address = NULL; | ||||
| 	uint16_t    Size    = NO_DESCRIPTOR; | ||||
| 
 | ||||
| 	switch (DescriptorType) | ||||
| 	{ | ||||
| 		case DTYPE_Device:  | ||||
| 			Address = (void*)&DeviceDescriptor; | ||||
| 			Address = &DeviceDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Device_t); | ||||
| 			break; | ||||
| 		case DTYPE_Configuration:  | ||||
| 			Address = (void*)&ConfigurationDescriptor; | ||||
| 			Address = &ConfigurationDescriptor; | ||||
| 			Size    = sizeof(USB_Descriptor_Configuration_t); | ||||
| 			break; | ||||
| 		case DTYPE_String:  | ||||
| 			switch (DescriptorNumber) | ||||
| 			{ | ||||
| 				case 0x00:  | ||||
| 					Address = (void*)&LanguageString; | ||||
| 					Address = &LanguageString; | ||||
| 					Size    = pgm_read_byte(&LanguageString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x01:  | ||||
| 					Address = (void*)&ManufacturerString; | ||||
| 					Address = &ManufacturerString; | ||||
| 					Size    = pgm_read_byte(&ManufacturerString.Header.Size); | ||||
| 					break; | ||||
| 				case 0x02:  | ||||
| 					Address = (void*)&ProductString; | ||||
| 					Address = &ProductString; | ||||
| 					Size    = pgm_read_byte(&ProductString.Header.Size); | ||||
| 					break; | ||||
| 			} | ||||
|  | ||||
| @ -68,6 +68,7 @@ | ||||
| 	/* Function Prototypes: */ | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -249,7 +249,7 @@ void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCI | ||||
|  */ | ||||
| uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
|                                     const uint8_t wIndex, | ||||
|                                     void** const DescriptorAddress) | ||||
|                                     const void** const DescriptorAddress) | ||||
| { | ||||
| 	/* Return the correct descriptors based on the selected mode */ | ||||
| 	if (CurrentFirmwareMode == MODE_USART_BRIDGE) | ||||
|  | ||||
| @ -95,6 +95,7 @@ | ||||
| 
 | ||||
| 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | ||||
| 		                                    const uint8_t wIndex, | ||||
| 		                                    void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 		                                    const void** const DescriptorAddress) | ||||
| 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Dean Camera
						Dean Camera