triggers still do not work...

xbox_descriptors
NepEgor 3 years ago
parent 7f2d323272
commit 2086cb3ade

@ -22,6 +22,7 @@ class USB_Device
void begin();
void end();
void buttons(uint32_t buttons);
void button(uint8_t button, bool val);
void dpad(uint8_t dir);

@ -3,7 +3,7 @@
#include <stdint.h>
#define HID_JOYSTICK_REPORT_DESC_SIZE 89U
#define HID_JOYSTICK_REPORT_DESC_SIZE 104U
// USB Joystick Report Descriptor
extern uint8_t USBD_HID_Joystick_ReportDesc[HID_JOYSTICK_REPORT_DESC_SIZE];
@ -13,12 +13,26 @@ struct __attribute__((packed)) USBD_HID_Joystick_Report
uint8_t reportID = 20;
uint32_t buttons;
unsigned hat:4;
unsigned trigger_left:10;
unsigned trigger_right:10;
unsigned x:10;
unsigned y:10;
unsigned rx:10;
unsigned ry:10;
unsigned trigger_left:10;
unsigned trigger_right:10;
};
/*
struct __attribute__((packed)) USBD_HID_Joystick_Report
{
unsigned header:16;
unsigned buttons:16;
//unsigned hat:4;
unsigned trigger_left:8;
unsigned trigger_right:8;
unsigned x:16;
unsigned y:16;
unsigned rx:16;
unsigned ry:16;
};
*/
#endif

@ -21,6 +21,11 @@ void USB_Device::end()
HID_Custom_DeInit();
}
void USB_Device::buttons(uint32_t buttons)
{
report.buttons = buttons;
}
void USB_Device::button(uint8_t button, bool val)
{
if (val)

@ -27,19 +27,14 @@ __ALIGN_BEGIN uint8_t USBD_HID_CUSTOM_ReportDesc[] __ALIGN_END = {
*/
__ALIGN_BEGIN uint8_t USBD_HID_Joystick_ReportDesc[] __ALIGN_END = {
HID_USAGE_PAGE(GENERIC_DESKTOP),
HID_USAGE(JOYSTICK),
HID_USAGE(GAME_PAD),
HID_COLLECTION(APPLICATION),
HID_REPORT_ID(20), // HID Joystick Report ID
HID_LOGICAL_MINIMUM(1, 0),
HID_LOGICAL_MAXIMUM(1, 1),
HID_REPORT_SIZE(1),
HID_REPORT_COUNT(32),
HID_USAGE_PAGE(BUTTON),
HID_USAGE_MINIMUM(1, 0),
HID_USAGE_MAXIMUM(1, 32),
HID_USAGE_MAXIMUM(1, 9),
HID_REPORT_SIZE(1),
HID_REPORT_COUNT(32),
HID_INPUT(DATA, VARIABLE, ABSOLUTE),
@ -54,27 +49,146 @@ __ALIGN_BEGIN uint8_t USBD_HID_Joystick_ReportDesc[] __ALIGN_END = {
HID_USAGE(HAT_SWITCH),
HID_INPUT(DATA, VARIABLE, ABSOLUTE),
HID_USAGE_PAGE(GENERIC_DESKTOP),
HID_COLLECTION(PHYSICAL),
HID_USAGE(Z),
HID_USAGE(RZ),
HID_LOGICAL_MINIMUM(1, 0),
HID_LOGICAL_MAXIMUM(2, 1022),
HID_REPORT_SIZE(10),
HID_REPORT_COUNT(2),
HID_INPUT(DATA, VARIABLE, ABSOLUTE),
HID_END_COLLECTION(PHYSICAL),
HID_USAGE_PAGE(GENERIC_DESKTOP),
HID_USAGE(POINTER),
HID_COLLECTION(PHYSICAL),
HID_USAGE(X),
HID_USAGE(Y),
HID_LOGICAL_MINIMUM(1, 0),
HID_LOGICAL_MAXIMUM(2, 1022),
HID_REPORT_SIZE(10),
HID_REPORT_COUNT(2),
HID_INPUT(DATA, VARIABLE, ABSOLUTE),
HID_END_COLLECTION(PHYSICAL),
HID_USAGE_PAGE(GENERIC_DESKTOP),
HID_USAGE(POINTER),
HID_COLLECTION(PHYSICAL),
HID_USAGE(RX),
HID_USAGE(RY),
HID_LOGICAL_MINIMUM(1, 0),
HID_LOGICAL_MAXIMUM(2, 1022),
HID_REPORT_SIZE(10),
HID_REPORT_COUNT(4),
HID_REPORT_COUNT(2),
HID_INPUT(DATA, VARIABLE, ABSOLUTE),
HID_END_COLLECTION(PHYSICAL),
HID_USAGE(Z),
HID_USAGE(RZ),
HID_LOGICAL_MINIMUM(1, 0),
HID_LOGICAL_MAXIMUM(2, 1022),
HID_REPORT_SIZE(10),
HID_REPORT_COUNT(2),
HID_INPUT(DATA, VARIABLE, ABSOLUTE),
HID_END_COLLECTION(APPLICATION)
};
};
/*
__ALIGN_BEGIN uint8_t USBD_HID_Joystick_ReportDesc2[] __ALIGN_END = {
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x05, // USAGE (Game Pad)
0xa1, 0x01, // COLLECTION (Application)
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x3a, // USAGE (Counted Buffer)
0xa1, 0x02, // COLLECTION (Logical)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x02, // REPORT_COUNT (2)
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x3f, // USAGE (Reserved)
0x09, 0x3b, // USAGE (Byte Count)
0x81, 0x01, // INPUT (Cnst,Ary,Abs)
0x75, 0x01, // REPORT_SIZE (1)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x35, 0x00, // PHYSICAL_MINIMUM (0)
0x45, 0x01, // PHYSICAL_MAXIMUM (1)
0x95, 0x04, // REPORT_COUNT (4)
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x0c, // USAGE_MINIMUM (Button 12)
0x29, 0x0f, // USAGE_MAXIMUM (Button 15)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x75, 0x01, // REPORT_SIZE (1)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x35, 0x00, // PHYSICAL_MINIMUM (0)
0x45, 0x01, // PHYSICAL_MAXIMUM (1)
0x95, 0x04, // REPORT_COUNT (4)
0x05, 0x09, // USAGE_PAGE (Button)
0x09, 0x09, // USAGE (Button 9)
0x09, 0x0a, // USAGE (Button 10)
0x09, 0x07, // USAGE (Button 7)
0x09, 0x08, // USAGE (Button 8)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x75, 0x01, // REPORT_SIZE (1)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x35, 0x00, // PHYSICAL_MINIMUM (0)
0x45, 0x01, // PHYSICAL_MAXIMUM (1)
0x95, 0x03, // REPORT_COUNT (3)
0x05, 0x09, // USAGE_PAGE (Button)
0x09, 0x05, // USAGE (Button 5)
0x09, 0x06, // USAGE (Button 6)
0x09, 0x0b, // USAGE (Button 11)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x01, // REPORT_COUNT (1)
0x81, 0x01, // INPUT (Cnst,Ary,Abs)
0x75, 0x01, // REPORT_SIZE (1)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x35, 0x00, // PHYSICAL_MINIMUM (0)
0x45, 0x01, // PHYSICAL_MAXIMUM (1)
0x95, 0x04, // REPORT_COUNT (4)
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x04, // USAGE_MAXIMUM (Button 4)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x75, 0x08, // REPORT_SIZE (8)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255)
0x35, 0x00, // PHYSICAL_MINIMUM (0)
0x46, 0xff, 0x00, // PHYSICAL_MAXIMUM (255)
0x95, 0x02, // REPORT_COUNT (2)
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x32, // USAGE (Z)
0x09, 0x35, // USAGE (Rz)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x75, 0x10, // REPORT_SIZE (16)
0x16, 0x00, 0x80, // LOGICAL_MINIMUM (-32768)
0x26, 0xff, 0x7f, // LOGICAL_MAXIMUM (32767)
0x36, 0x00, 0x80, // PHYSICAL_MINIMUM (-32768)
0x46, 0xff, 0x7f, // PHYSICAL_MAXIMUM (32767)
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x01, // USAGE (Pointer)
0xa1, 0x00, // COLLECTION (Physical)
0x95, 0x02, // REPORT_COUNT (2)
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x30, // USAGE (X)
0x09, 0x31, // USAGE (Y)
0x81, 0x02, // INPUT (Data,Var,Abs)
0xc0, // END_COLLECTION
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x01, // USAGE (Pointer)
0xa1, 0x00, // COLLECTION (Physical)
0x95, 0x02, // REPORT_COUNT (2)
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x33, // USAGE (Rx)
0x09, 0x34, // USAGE (Ry)
0x81, 0x02, // INPUT (Data,Var,Abs)
0xc0, // END_COLLECTION
0xc0, // END_COLLECTION
0xc0 // END_COLLECTION
};
*/

@ -19,8 +19,10 @@ build_flags =
-D PIO_FRAMEWORK_ARDUINO_ENABLE_HID
-D USBD_USE_HID_COMPOSITE
-D USBCON
-D USBD_VID=0x0483
-D USBD_PID=0x0483
-D USBD_VID=0x045e
-D USBD_PID=0x1102
;-D USBD_VID=0x0483
;-D USBD_PID=0x0483
-D USB_MANUFACTURER="Goshi"
-D USB_PRODUCT="\"BLACKPILL_F411CE\""

@ -80,6 +80,9 @@ void setup()
device.begin();
device.trigger_right(511);
device.trigger_left(511);
// Turn off LED
digitalWrite(PC13, HIGH);
}
@ -87,6 +90,8 @@ void setup()
uint8_t tevent_size;
TouchEvent tevent[5];
uint32_t buttons = 1;
void loop()
{
int8_t ret = trackpad_right.poll(tevent, tevent_size);
@ -134,6 +139,9 @@ void loop()
case TouchControl::CT_JOYSTICK:
device.joystick_left(((TouchJoystick*)tcontrols[c])->getX(), ((TouchJoystick*)tcontrols[c])->getY());
//device.joystick_right(((TouchJoystick*)tcontrols[c])->getX(), ((TouchJoystick*)tcontrols[c])->getY());
//device.trigger_left(((TouchJoystick*)tcontrols[c])->getX());
//device.trigger_right(((TouchJoystick*)tcontrols[c])->getY());
break;
case TouchControl::CT_DPAD:
@ -152,8 +160,16 @@ void loop()
uint32_t right_trigger = analogRead(TRIGGER_RIGHT_PIN);
uint8_t right_tp_click = digitalRead(TRACKPAD_CLICK_RIGHT_PIN);
device.trigger_right(right_trigger);
device.button(0, right_tp_click);
//device.joystick_right(30000, 30000);
//device.trigger_right(right_trigger);
device.button(2, right_tp_click);
//buttons <<= 1;
//if (buttons >= 2048) buttons = 1u;
//device.buttons(buttons);
//delay(500);
device.sendReport();
}

Loading…
Cancel
Save