Joystick: Simplify report descriptor and clean up error messages (#16926)
This commit is contained in:
		
							parent
							
								
									178b70f355
								
							
						
					
					
						commit
						645359e5d0
					
				
					 2 changed files with 27 additions and 24 deletions
				
			
		| 
						 | 
				
			
			@ -5,10 +5,18 @@
 | 
			
		|||
 | 
			
		||||
#ifndef JOYSTICK_BUTTON_COUNT
 | 
			
		||||
#    define JOYSTICK_BUTTON_COUNT 8
 | 
			
		||||
#elif JOYSTICK_BUTTON_COUNT > 32
 | 
			
		||||
#    error Joystick feature only supports up to 32 buttons
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef JOYSTICK_AXES_COUNT
 | 
			
		||||
#    define JOYSTICK_AXES_COUNT 4
 | 
			
		||||
#elif JOYSTICK_AXES_COUNT > 6
 | 
			
		||||
#    error Joystick feature only supports up to 6 axes
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if JOYSTICK_AXES_COUNT == 0 && JOYSTICK_BUTTON_COUNT == 0
 | 
			
		||||
#    error Joystick feature requires at least one axis or button
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef JOYSTICK_AXES_RESOLUTION
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -347,49 +347,44 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM ConsoleReport[] = {
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef JOYSTICK_ENABLE
 | 
			
		||||
#    if JOYSTICK_AXES_COUNT == 0 && JOYSTICK_BUTTON_COUNT == 0
 | 
			
		||||
#        error Need at least one axis or button for joystick
 | 
			
		||||
#    endif
 | 
			
		||||
const USB_Descriptor_HIDReport_Datatype_t PROGMEM JoystickReport[] = {
 | 
			
		||||
    HID_RI_USAGE_PAGE(8, 0x01),         // Generic Desktop
 | 
			
		||||
    HID_RI_USAGE(8, 0x04),              // Joystick
 | 
			
		||||
    HID_RI_COLLECTION(8, 0x01),         // Application
 | 
			
		||||
        HID_RI_COLLECTION(8, 0x00),     // Physical
 | 
			
		||||
    HID_RI_USAGE_PAGE(8, 0x01),     // Generic Desktop
 | 
			
		||||
    HID_RI_USAGE(8, 0x04),          // Joystick
 | 
			
		||||
    HID_RI_COLLECTION(8, 0x01),     // Application
 | 
			
		||||
        HID_RI_COLLECTION(8, 0x00), // Physical
 | 
			
		||||
#    if JOYSTICK_AXES_COUNT > 0
 | 
			
		||||
            HID_RI_USAGE_PAGE(8, 0x01), // Generic Desktop
 | 
			
		||||
#    if JOYSTICK_AXES_COUNT >= 1
 | 
			
		||||
            HID_RI_USAGE(8, 0x30),      // X
 | 
			
		||||
#    endif
 | 
			
		||||
#    if JOYSTICK_AXES_COUNT >= 2
 | 
			
		||||
#        if JOYSTICK_AXES_COUNT > 1
 | 
			
		||||
            HID_RI_USAGE(8, 0x31),      // Y
 | 
			
		||||
#    endif
 | 
			
		||||
#    if JOYSTICK_AXES_COUNT >= 3
 | 
			
		||||
#        endif
 | 
			
		||||
#        if JOYSTICK_AXES_COUNT > 2
 | 
			
		||||
            HID_RI_USAGE(8, 0x32),      // Z
 | 
			
		||||
#    endif
 | 
			
		||||
#    if JOYSTICK_AXES_COUNT >= 4
 | 
			
		||||
#        endif
 | 
			
		||||
#        if JOYSTICK_AXES_COUNT > 3
 | 
			
		||||
            HID_RI_USAGE(8, 0x33),      // Rx
 | 
			
		||||
#    endif
 | 
			
		||||
#    if JOYSTICK_AXES_COUNT >= 5
 | 
			
		||||
#        endif
 | 
			
		||||
#        if JOYSTICK_AXES_COUNT > 4
 | 
			
		||||
            HID_RI_USAGE(8, 0x34),      // Ry
 | 
			
		||||
#    endif
 | 
			
		||||
#    if JOYSTICK_AXES_COUNT >= 6
 | 
			
		||||
#        endif
 | 
			
		||||
#        if JOYSTICK_AXES_COUNT > 5
 | 
			
		||||
            HID_RI_USAGE(8, 0x35),      // Rz
 | 
			
		||||
#    endif
 | 
			
		||||
#    if JOYSTICK_AXES_COUNT >= 1
 | 
			
		||||
     # if JOYSTICK_AXES_RESOLUTION == 8
 | 
			
		||||
#        endif
 | 
			
		||||
#        if JOYSTICK_AXES_RESOLUTION == 8
 | 
			
		||||
            HID_RI_LOGICAL_MINIMUM(8, -JOYSTICK_RESOLUTION),
 | 
			
		||||
            HID_RI_LOGICAL_MAXIMUM(8, JOYSTICK_RESOLUTION),
 | 
			
		||||
            HID_RI_REPORT_COUNT(8, JOYSTICK_AXES_COUNT),
 | 
			
		||||
            HID_RI_REPORT_SIZE(8, 0x08),
 | 
			
		||||
     # else
 | 
			
		||||
#        else
 | 
			
		||||
            HID_RI_LOGICAL_MINIMUM(16, -JOYSTICK_RESOLUTION),
 | 
			
		||||
            HID_RI_LOGICAL_MAXIMUM(16, JOYSTICK_RESOLUTION),
 | 
			
		||||
            HID_RI_REPORT_COUNT(8, JOYSTICK_AXES_COUNT),
 | 
			
		||||
            HID_RI_REPORT_SIZE(8, 0x10),
 | 
			
		||||
     # endif
 | 
			
		||||
#        endif
 | 
			
		||||
            HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
 | 
			
		||||
#    endif
 | 
			
		||||
 | 
			
		||||
#    if JOYSTICK_BUTTON_COUNT >= 1
 | 
			
		||||
#    if JOYSTICK_BUTTON_COUNT > 0
 | 
			
		||||
            HID_RI_USAGE_PAGE(8, 0x09), // Button
 | 
			
		||||
            HID_RI_USAGE_MINIMUM(8, 0x01),
 | 
			
		||||
            HID_RI_USAGE_MAXIMUM(8, JOYSTICK_BUTTON_COUNT),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue