From 24015ee2ac11ae75833c55ee8d0324bce7a10583 Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower, III" Date: Tue, 9 Dec 2025 09:39:55 -0800 Subject: [PATCH 1/2] Separate USB gamepad16 report and descriptor Fixes #3262 BTStack redefines many USB HID definitions, so need to be careful to not include full tusb.h before btstack.h. Keyboard and Mouse didn't need special report structs, but Joystick (joystick16) did, so it was including TUSB and BTstack and barfing. Separate the joystick report struct definition from the HID descriptor to avoid the issue. --- cores/rp2040/sdkoverride/tusb_gamepad16.h | 12 +----------- cores/rp2040/sdkoverride/tusb_gamepad16_report.h | 15 +++++++++++++++ libraries/HID_Joystick | 2 +- libraries/Joystick/src/Joystick.cpp | 1 + libraries/Joystick/src/Joystick.h | 1 - 5 files changed, 18 insertions(+), 13 deletions(-) create mode 100644 cores/rp2040/sdkoverride/tusb_gamepad16_report.h diff --git a/cores/rp2040/sdkoverride/tusb_gamepad16.h b/cores/rp2040/sdkoverride/tusb_gamepad16.h index f487eacce..497cd94a2 100644 --- a/cores/rp2040/sdkoverride/tusb_gamepad16.h +++ b/cores/rp2040/sdkoverride/tusb_gamepad16.h @@ -62,14 +62,4 @@ HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\ HID_COLLECTION_END \ -// HID Gamepad Protocol Report. -typedef struct TU_ATTR_PACKED { - int16_t x; ///< Delta x movement of left analog-stick - int16_t y; ///< Delta y movement of left analog-stick - int16_t z; ///< Delta z movement of right analog-joystick - int16_t rz; ///< Delta Rz movement of right analog-joystick - int16_t rx; ///< Delta Rx movement of analog left trigger - int16_t ry; ///< Delta Ry movement of analog right trigger - uint8_t hat; ///< Buttons mask for currently pressed buttons in the DPad/hat - uint32_t buttons; ///< Buttons mask for currently pressed buttons -} hid_gamepad16_report_t; +#include "tusb_gamepad16_report.h" diff --git a/cores/rp2040/sdkoverride/tusb_gamepad16_report.h b/cores/rp2040/sdkoverride/tusb_gamepad16_report.h new file mode 100644 index 000000000..2e37b541b --- /dev/null +++ b/cores/rp2040/sdkoverride/tusb_gamepad16_report.h @@ -0,0 +1,15 @@ +#pragma once + +#include + +// HID Gamepad Protocol Report. +typedef struct TU_ATTR_PACKED { + int16_t x; ///< Delta x movement of left analog-stick + int16_t y; ///< Delta y movement of left analog-stick + int16_t z; ///< Delta z movement of right analog-joystick + int16_t rz; ///< Delta Rz movement of right analog-joystick + int16_t rx; ///< Delta Rx movement of analog left trigger + int16_t ry; ///< Delta Ry movement of analog right trigger + uint8_t hat; ///< Buttons mask for currently pressed buttons in the DPad/hat + uint32_t buttons; ///< Buttons mask for currently pressed buttons +} hid_gamepad16_report_t; diff --git a/libraries/HID_Joystick b/libraries/HID_Joystick index c28cfadd8..c08692d55 160000 --- a/libraries/HID_Joystick +++ b/libraries/HID_Joystick @@ -1 +1 @@ -Subproject commit c28cfadd83278d7de2b6db1eb3226f4115f92945 +Subproject commit c08692d55b146fd0f6d7d731908b0b2bd551f8ed diff --git a/libraries/Joystick/src/Joystick.cpp b/libraries/Joystick/src/Joystick.cpp index d16334443..d55d4ef97 100644 --- a/libraries/Joystick/src/Joystick.cpp +++ b/libraries/Joystick/src/Joystick.cpp @@ -27,6 +27,7 @@ #include "tusb.h" #include "class/hid/hid_device.h" +#include static const uint8_t desc_hid_report_joystick[] = { TUD_HID_REPORT_DESC_GAMEPAD16(HID_REPORT_ID(1)) }; diff --git a/libraries/Joystick/src/Joystick.h b/libraries/Joystick/src/Joystick.h index e140cf9b8..c06f60532 100644 --- a/libraries/Joystick/src/Joystick.h +++ b/libraries/Joystick/src/Joystick.h @@ -25,7 +25,6 @@ #endif #include -#include //====================================================================== class Joystick_ : public HID_Joystick { From e1b989ac92b0920876d66a6917252f9f611e5a80 Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower, III" Date: Tue, 9 Dec 2025 10:02:45 -0800 Subject: [PATCH 2/2] Update submodule to main --- libraries/HID_Joystick | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/HID_Joystick b/libraries/HID_Joystick index c08692d55..cbfdd2c99 160000 --- a/libraries/HID_Joystick +++ b/libraries/HID_Joystick @@ -1 +1 @@ -Subproject commit c08692d55b146fd0f6d7d731908b0b2bd551f8ed +Subproject commit cbfdd2c99796b7e07d4c2b8e53f529554f40832a