Pārlūkot izejas kodu

Joystick: Simplify report descriptor and clean up error messages (#16926)

Ryan 3 gadi atpakaļ
vecāks
revīzija
645359e5d0
2 mainītis faili ar 27 papildinājumiem un 24 dzēšanām
  1. 8 0
      quantum/joystick.h
  2. 19 24
      tmk_core/protocol/usb_descriptor.c

+ 8 - 0
quantum/joystick.h

@@ -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

+ 19 - 24
tmk_core/protocol/usb_descriptor.c

@@ -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),