mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-20 10:54:14 +01:00
hid joystick: restructure joystick HID report to work on windows
This commit is contained in:
parent
017d8c79c9
commit
94f6344fc5
@ -51,7 +51,7 @@ static const struct usb_device_desc device_desc = {
|
||||
.bNumConfigurations = 1,
|
||||
};
|
||||
|
||||
static const uint8_t hid_report_desc[88] = {
|
||||
static const uint8_t hid_report_desc[127] = {
|
||||
HID_GLOBAL_ITEM_2 (HID_TAG_GLOBAL_USAGE_PAGE),
|
||||
0x9C, 0xFF, /* Usage Page 0xFF9C (Vendor Defined) */
|
||||
HID_LOCAL_ITEM_1 (HID_TAG_LOCAL_USAGE),
|
||||
@ -97,57 +97,74 @@ static const uint8_t hid_report_desc[88] = {
|
||||
/* 36 bytes to here */
|
||||
|
||||
/* Emulate a Joystick */
|
||||
HID_GLOBAL_ITEM_1 (HID_TAG_GLOBAL_USAGE_PAGE),
|
||||
0x01, /* Usage Page 0x01 (Generic Desktop Controls) */
|
||||
HID_LOCAL_ITEM_1 (HID_TAG_LOCAL_USAGE),
|
||||
0x04, /* Usage ID 0x0004 (Joystick) */
|
||||
|
||||
HID_MAIN_ITEM_1 (HID_TAG_MAIN_COLLECTION),
|
||||
0x01, /* Application */
|
||||
HID_MAIN_ITEM_1 (HID_TAG_MAIN_COLLECTION),
|
||||
0x00, /* Physical */
|
||||
HID_GLOBAL_ITEM_1 (HID_TAG_GLOBAL_REPORT_ID),
|
||||
0x03, /* OpenPilot Emulated joystick */
|
||||
HID_GLOBAL_ITEM_1 (HID_TAG_GLOBAL_USAGE_PAGE),
|
||||
0x01, /* Usage Page 0x01 (Generic Desktop Controls) */
|
||||
|
||||
/* X + Y controls */
|
||||
|
||||
0x02, /* Usage ID 0x0002 (Simulation Control */
|
||||
HID_LOCAL_ITEM_4 (HID_TAG_LOCAL_USAGE),
|
||||
0x30, 0x00, 0x01, 0x00, /* Usage ID 0x00010030 (Generic Desktop: X) */
|
||||
HID_LOCAL_ITEM_4 (HID_TAG_LOCAL_USAGE),
|
||||
0x31, 0x00, 0x01, 0x00, /* Usage ID 0x00010031 (Generic Desktop: Y) */
|
||||
HID_GLOBAL_ITEM_1 (HID_TAG_GLOBAL_LOGICAL_MIN),
|
||||
0x00, /* Values range from min = 0x00 */
|
||||
HID_GLOBAL_ITEM_2 (HID_TAG_GLOBAL_LOGICAL_MAX),
|
||||
0xFF, 0xFF, /* Values range to max = 0xFFFF */
|
||||
HID_GLOBAL_ITEM_1 (HID_TAG_GLOBAL_REPORT_SIZE),
|
||||
0x10, /* 16 bits wide */
|
||||
|
||||
HID_LOCAL_ITEM_1 (HID_TAG_LOCAL_USAGE),
|
||||
0x04, /* Usage ID 0x0004 (Joystick) */
|
||||
HID_MAIN_ITEM_1 (HID_TAG_MAIN_COLLECTION),
|
||||
0x01, /* Application */
|
||||
|
||||
HID_LOCAL_ITEM_1 (HID_TAG_LOCAL_USAGE),
|
||||
0x02, /* Usage ID 0x0002 (Pointer) */
|
||||
|
||||
HID_MAIN_ITEM_1 (HID_TAG_MAIN_COLLECTION),
|
||||
0x00, /* Physical */
|
||||
HID_LOCAL_ITEM_1 (HID_TAG_LOCAL_USAGE),
|
||||
0x30, /* Usage ID 0x0030 (X) */
|
||||
HID_LOCAL_ITEM_1 (HID_TAG_LOCAL_USAGE),
|
||||
0x31, /* Usage ID 0x0031 (Y) */
|
||||
HID_GLOBAL_ITEM_1 (HID_TAG_GLOBAL_REPORT_CNT),
|
||||
2,
|
||||
HID_MAIN_ITEM_1 (HID_TAG_MAIN_INPUT),
|
||||
0x82, /* Data, Var, Abs, Vol */
|
||||
HID_MAIN_ITEM_0 (HID_TAG_MAIN_ENDCOLLECTION),
|
||||
|
||||
HID_MAIN_ITEM_1 (HID_TAG_MAIN_COLLECTION),
|
||||
0x00, /* Physical */
|
||||
HID_LOCAL_ITEM_1 (HID_TAG_LOCAL_USAGE),
|
||||
0x32, /* Usage ID 0x0032 (Z) */
|
||||
HID_LOCAL_ITEM_1 (HID_TAG_LOCAL_USAGE),
|
||||
0x33, /* Usage ID 0x0033 (Rx) */
|
||||
/* Y + Rx controls */
|
||||
|
||||
HID_GLOBAL_ITEM_1 (HID_TAG_GLOBAL_USAGE_PAGE),
|
||||
0x02, /* Usage ID 0x0002 (Simulation Control */
|
||||
HID_LOCAL_ITEM_4 (HID_TAG_LOCAL_USAGE),
|
||||
0x32, 0x00, 0x01, 0x00, /* Usage ID 0x00010032 (Generic Desktop: Z) */
|
||||
HID_LOCAL_ITEM_4 (HID_TAG_LOCAL_USAGE),
|
||||
0x33, 0x00, 0x01, 0x00, /* Usage ID 0x00010031 (Generic Desktop: Rx) */
|
||||
HID_GLOBAL_ITEM_1 (HID_TAG_GLOBAL_LOGICAL_MIN),
|
||||
0x00, /* Values range from min = 0x00 */
|
||||
HID_GLOBAL_ITEM_2 (HID_TAG_GLOBAL_LOGICAL_MAX),
|
||||
0xFF, 0xFF, /* Values range to max = 0xFFFF */
|
||||
HID_GLOBAL_ITEM_1 (HID_TAG_GLOBAL_REPORT_SIZE),
|
||||
0x10, /* 16 bits wide */
|
||||
HID_GLOBAL_ITEM_1 (HID_TAG_GLOBAL_REPORT_CNT),
|
||||
2,
|
||||
HID_MAIN_ITEM_1 (HID_TAG_MAIN_INPUT),
|
||||
0x82, /* Data, Var, Abs, Vol */
|
||||
HID_MAIN_ITEM_0 (HID_TAG_MAIN_ENDCOLLECTION),
|
||||
|
||||
HID_LOCAL_ITEM_1 (HID_TAG_LOCAL_USAGE),
|
||||
0x34, /* Usage ID 0x0034 (Ry) */
|
||||
HID_LOCAL_ITEM_1 (HID_TAG_LOCAL_USAGE),
|
||||
0x35, /* Usage ID 0x0035 (Rz) */
|
||||
HID_LOCAL_ITEM_1 (HID_TAG_LOCAL_USAGE),
|
||||
0x36, /* Usage ID 0x0036 (Slider) */
|
||||
HID_LOCAL_ITEM_1 (HID_TAG_LOCAL_USAGE),
|
||||
0x37, /* Usage ID 0x0037 (Dial) */
|
||||
/* Ry, Rz, Slider + Dial controls */
|
||||
|
||||
HID_GLOBAL_ITEM_1 (HID_TAG_GLOBAL_USAGE_PAGE),
|
||||
0x02, /* Usage ID 0x0002 (Simulation Control */
|
||||
HID_LOCAL_ITEM_4 (HID_TAG_LOCAL_USAGE),
|
||||
0x34, 0x00, 0x01, 0x00, /* Usage ID 0x00010034 (Generic Desktop: Ry) */
|
||||
HID_LOCAL_ITEM_4 (HID_TAG_LOCAL_USAGE),
|
||||
0x35, 0x00, 0x01, 0x00, /* Usage ID 0x00010035 (Generic Desktop: Rz) */
|
||||
HID_LOCAL_ITEM_4 (HID_TAG_LOCAL_USAGE),
|
||||
0x36, 0x00, 0x01, 0x00, /* Usage ID 0x00010036 (Generic Desktop: Slider) */
|
||||
HID_LOCAL_ITEM_4 (HID_TAG_LOCAL_USAGE),
|
||||
0x37, 0x00, 0x01, 0x00, /* Usage ID 0x00010037 (Generic Desktop: Dial) */
|
||||
HID_GLOBAL_ITEM_1 (HID_TAG_GLOBAL_LOGICAL_MIN),
|
||||
0x00, /* Values range from min = 0x00 */
|
||||
HID_GLOBAL_ITEM_2 (HID_TAG_GLOBAL_LOGICAL_MAX),
|
||||
0xFF, 0xFF, /* Values range to max = 0xFFFF */
|
||||
HID_GLOBAL_ITEM_1 (HID_TAG_GLOBAL_REPORT_SIZE),
|
||||
0x10, /* 16 bits wide */
|
||||
HID_GLOBAL_ITEM_1 (HID_TAG_GLOBAL_REPORT_CNT),
|
||||
4,
|
||||
HID_MAIN_ITEM_1 (HID_TAG_MAIN_INPUT),
|
||||
@ -155,7 +172,9 @@ static const uint8_t hid_report_desc[88] = {
|
||||
|
||||
HID_MAIN_ITEM_0 (HID_TAG_MAIN_ENDCOLLECTION),
|
||||
|
||||
/* 88 bytes to here */
|
||||
HID_MAIN_ITEM_0 (HID_TAG_MAIN_ENDCOLLECTION),
|
||||
|
||||
/* 127 bytes to here */
|
||||
};
|
||||
|
||||
struct usb_config_hid_cdc {
|
||||
|
@ -147,7 +147,7 @@ enum usb_ep_attr {
|
||||
#define HID_LOCAL_ITEM_0(tag) HID_SHORT_ITEM((tag), HID_ITEM_TYPE_LOCAL, HID_ITEM_SIZE_0)
|
||||
#define HID_LOCAL_ITEM_1(tag) HID_SHORT_ITEM((tag), HID_ITEM_TYPE_LOCAL, HID_ITEM_SIZE_1)
|
||||
#define HID_LOCAL_ITEM_2(tag) HID_SHORT_ITEM((tag), HID_ITEM_TYPE_LOCAL, HID_ITEM_SIZE_2)
|
||||
#define HID_LOCAL_ITEM_3(tag) HID_SHORT_ITEM((tag), HID_ITEM_TYPE_LOCAL, HID_ITEM_SIZE_3)
|
||||
#define HID_LOCAL_ITEM_4(tag) HID_SHORT_ITEM((tag), HID_ITEM_TYPE_LOCAL, HID_ITEM_SIZE_4)
|
||||
|
||||
struct usb_device_desc {
|
||||
uint8_t bLength;
|
||||
|
Loading…
x
Reference in New Issue
Block a user