8#ifndef USB_INC_USB_HID_FFB_DESC_H_
9#define USB_INC_USB_HID_FFB_DESC_H_
18#if defined(HIDAXISRES_32B_BITS) && HIDAXISRES_32B_BITS > 2 && HIDAXISRES_32B_BITS < 32
20#define HIDAXISRES_32B_MAXS (1 << (HIDAXISRES_32B_BITS-1))-1
22#define HIDAXISRES_32B_MAXS 0x7FFFFFFF
23#define HIDAXISRES_32B_BITS 32
27#define HIDDESC_32B_ENTRY(count) \
28 HID_LOGICAL_MIN_N(-HIDAXISRES_32B_MAXS,3), \
30 HID_LOGICAL_MAX_N(HIDAXISRES_32B_MAXS,3), \
37#define HIDDESC_32B_ENTRY_SIZE 16
40#define HIDDESC_GAMEPAD_16B \
52 0x09, HID_USAGE_DESKTOP_X, \
53 0x09, HID_USAGE_DESKTOP_Y, \
54 0x09, HID_USAGE_DESKTOP_Z, \
55 0x09, HID_USAGE_DESKTOP_RX, \
56 0x09, HID_USAGE_DESKTOP_RY, \
57 0x09, HID_USAGE_DESKTOP_RZ, \
58 0x09, HID_USAGE_DESKTOP_DIAL, \
59 0x09, HID_USAGE_DESKTOP_SLIDER, \
66#define HIDDESC_GAMEPAD_16B_SIZE 51
70#define HIDDESC_GPENTRY_32B_1 0x09, HID_USAGE_DESKTOP_X, \
71 HIDDESC_32B_ENTRY(0x01)
73#define HIDDESC_GPENTRY_32B_1 0x09, HID_USAGE_DESKTOP_X,
76#define HIDDESC_GPENTRY_32B_2 0x09, HID_USAGE_DESKTOP_Y, \
77 HIDDESC_32B_ENTRY(0x02)
79#define HIDDESC_GPENTRY_32B_2 0x09, HID_USAGE_DESKTOP_Y,
82#define HIDDESC_GPENTRY_32B_3 0x09, HID_USAGE_DESKTOP_Z, \
83 HIDDESC_32B_ENTRY(0x03)
85#define HIDDESC_GPENTRY_32B_3 0x09, HID_USAGE_DESKTOP_Z,
87#define HIDDESC_GAMEPAD_32B \
99 HIDDESC_GPENTRY_32B_1 \
100 HIDDESC_GPENTRY_32B_2 \
101 HIDDESC_GPENTRY_32B_3 \
102 0x09, HID_USAGE_DESKTOP_RX, \
103 0x09, HID_USAGE_DESKTOP_RY, \
104 0x09, HID_USAGE_DESKTOP_RZ, \
105 0x09, HID_USAGE_DESKTOP_DIAL, \
106 0x09, HID_USAGE_DESKTOP_SLIDER, \
110 0x95, 0x08-MAX_AXIS, \
113#define HIDDESC_GAMEPAD_32B_SIZE HIDDESC_GAMEPAD_16B_SIZE + HIDDESC_32B_ENTRY_SIZE
115#define HIDDESC_CTRL_REP(DIR) \
116 0x85,HID_ID_HIDCMD, \
148#define HIDDESC_CTRL_REPORTS \
152 HIDDESC_CTRL_REP(OUTPUT),\
153 HIDDESC_CTRL_REP(INPUT),\
155#define HIDDESC_CTRL_REPORTS_SIZE 118
157#define HIDDESC_FFB_STATEREP \
161 0x85,HID_ID_STATE+FFB_ID_OFFSET, \
192#define HIDDESC_FFB_STATEREP_SIZE 37
206#define HIDDESC_FFB_SETEFREP \
209 0x85,HID_ID_EFFREP+FFB_ID_OFFSET, \
220 0x09, HID_USAGE_CONST, \
221 0x09, HID_USAGE_RAMP, \
222 0x09, HID_USAGE_SQUR, \
223 0x09, HID_USAGE_SINE, \
224 0x09, HID_USAGE_TRNG, \
225 0x09, HID_USAGE_STUP, \
226 0x09, HID_USAGE_STDN, \
227 0x09, HID_USAGE_SPRNG, \
228 0x09, HID_USAGE_DMPR, \
229 0x09, HID_USAGE_INRT, \
230 0x09, HID_USAGE_FRIC, \
271#define HIDDESC_FFB_SETEFREP_SIZE 131
273#define HIDDESC_FFB_SETENVREP \
277 0x85,HID_ID_ENVREP+FFB_ID_OFFSET, \
299 0x27, 0xFF, 0x7F, 0x00, 0x00, \
300 0x47, 0xFF, 0x7F, 0x00, 0x00, \
307#define HIDDESC_FFB_SETENVREP_SIZE 75
310#define HIDDESC_FFB_SETCONDREP \
313 0x85,HID_ID_CONDREP+FFB_ID_OFFSET, \
332 0x0B,0x01,0x00,0x0A,0x00, \
333 0x0B,0x02,0x00,0x0A,0x00, \
367#define HIDDESC_FFB_SETCONDREP_SIZE 125
369#define HIDDESC_FFB_SETPERIODICREP \
372 0x85,HID_ID_PRIDREP+FFB_ID_OFFSET, \
401 0x27, 0x9F, 0x8C, 0x00, 0x00, \
403 0x47, 0x9F, 0x8C, 0x00, 0x00, \
409 0x27, 0xFF, 0x7F, 0x00, 0x00, \
411 0x47, 0xFF, 0x7F, 0x00, 0x00, \
420#define HIDDESC_FFB_SETPERIODICREP_SIZE 122
422#define HIDDESC_FFB_SETCFREP \
425 0x85,HID_ID_CONSTREP+FFB_ID_OFFSET, \
443#define HIDDESC_FFB_SETCFREP_SIZE 43
445#define HIDDESC_FFB_SETRAMPREP \
448 0x85,HID_ID_RAMPREP+FFB_ID_OFFSET, \
467#define HIDDESC_FFB_SETRAMPREP_SIZE 45
469#define HIDDESC_FFB_CUSTOMFORCEREP \
512#define HIDDESC_FFB_EFOPREP \
516 0x85,HID_ID_EFOPREP+FFB_ID_OFFSET, \
543#define HIDDESC_FFB_EFOPREP_SIZE 60
544#define HIDDESC_FFB_BLOCKFREEREP \
547 0x85,HID_ID_BLKFRREP+FFB_ID_OFFSET, \
557#define HIDDESC_FFB_BLOCKFREEREP_SIZE 23
558#define HIDDESC_FFB_DEVCTRLREP \
561 0x85,HID_ID_CTRLREP+FFB_ID_OFFSET, \
584 0x85,HID_ID_GAINREP+FFB_ID_OFFSET, \
594#define HIDDESC_FFB_DEVCTRLREP_SIZE 59
596#define HIDDESC_FFB_SETCUSTFORCEREP \
629#define HIDDESC_FFB_NEWEFREP \
632 0x85,HID_ID_NEWEFREP+FFB_ID_OFFSET, \
635 0x09, HID_USAGE_CONST, \
636 0x09, HID_USAGE_RAMP, \
637 0x09, HID_USAGE_SQUR, \
638 0x09, HID_USAGE_SINE, \
639 0x09, HID_USAGE_TRNG, \
640 0x09, HID_USAGE_STUP, \
641 0x09, HID_USAGE_STDN, \
642 0x09, HID_USAGE_SPRNG, \
643 0x09, HID_USAGE_DMPR, \
644 0x09, HID_USAGE_INRT, \
645 0x09, HID_USAGE_FRIC, \
667#define HIDDESC_FFB_NEWEFREP_SIZE 72
669#define HIDDESC_FFB_BLOCKLOADREP \
673 0x85,HID_ID_BLKLDREP+FFB_ID_OFFSET, \
697 0x27,0xFF,0xFF,0x00,0x00, \
699 0x47,0xFF,0xFF,0x00,0x00, \
704#define HIDDESC_FFB_BLOCKLOADREP_SIZE 72
706#define HIDDESC_FFB_POOLREP \
709 0x85,HID_ID_POOLREP+FFB_ID_OFFSET, \
715 0x27,0xFF,0xFF,0x00,0x00, \
716 0x47,0xFF,0xFF,0x00,0x00, \
737#define HIDDESC_FFB_POOLREP_SIZE 67
739#define HIDDESC_FFB_DESCSIZE HIDDESC_FFB_STATEREP_SIZE + HIDDESC_FFB_POOLREP_SIZE + HIDDESC_FFB_BLOCKLOADREP_SIZE + HIDDESC_FFB_NEWEFREP_SIZE + HIDDESC_FFB_DEVCTRLREP_SIZE + HIDDESC_FFB_BLOCKFREEREP_SIZE + HIDDESC_FFB_EFOPREP_SIZE + HIDDESC_FFB_SETEFREP_SIZE + HIDDESC_FFB_SETRAMPREP_SIZE + HIDDESC_FFB_SETCFREP_SIZE + HIDDESC_FFB_SETPERIODICREP_SIZE + HIDDESC_FFB_SETENVREP_SIZE
743#ifdef AXIS2_FFB_HID_DESC
744#define USB_HID_2FFB_REPORT_DESC_SIZE HIDDESC_GAMEPAD_16B_SIZE + HIDDESC_CTRL_REPORTS_SIZE + HIDDESC_FFB_DESCSIZE + 7 + 108 + 125
745extern const uint8_t
hid_2ffb_desc[USB_HID_2FFB_REPORT_DESC_SIZE];
747#ifdef AXIS2_FFB_HID_DESC_32B
748#define USB_HID_2FFB_REPORT_DESC_32B_SIZE HIDDESC_GAMEPAD_32B_SIZE + HIDDESC_CTRL_REPORTS_SIZE + HIDDESC_FFB_DESCSIZE + 7 + 108 + 125
752#ifdef AXIS1_FFB_HID_DESC
753#define USB_HID_1FFB_REPORT_DESC_SIZE HIDDESC_GAMEPAD_16B_SIZE + HIDDESC_CTRL_REPORTS_SIZE + HIDDESC_FFB_DESCSIZE + 7 + 94 + 120
754extern const uint8_t
hid_1ffb_desc[USB_HID_1FFB_REPORT_DESC_SIZE];
756#ifdef AXIS1_FFB_HID_DESC_32B
757#define USB_HID_1FFB_REPORT_DESC_SIZE HIDDESC_GAMEPAD_32B_SIZE + HIDDESC_CTRL_REPORTS_SIZE + HIDDESC_FFB_DESCSIZE + 7 + 94 + 120
762#ifdef FFB_HID_DESC_GAMEPAD
763#define USB_HID_GAMEPAD_REPORT_DESC_SIZE HIDDESC_GAMEPAD_16B_SIZE + HIDDESC_CTRL_REPORTS_SIZE + 7
766#ifdef FFB_HID_DESC_GAMEPAD_32B
767#define USB_HID_GAMEPAD_REPORT_DESC_32B_SIZE HIDDESC_GAMEPAD_32B_SIZE + HIDDESC_CTRL_REPORTS_SIZE + 7
771#ifdef HIDAXISRES_USE_32B_DESC
const uint8_t hid_2ffb_desc_32b[USB_HID_2FFB_REPORT_DESC_32B_SIZE]
const uint8_t hid_1ffb_desc[USB_HID_1FFB_REPORT_DESC_SIZE]
const uint8_t hid_1ffb_desc_32b[USB_HID_1FFB_REPORT_DESC_32B_SIZE]
const uint8_t hid_2ffb_desc[USB_HID_2FFB_REPORT_DESC_SIZE]
const uint8_t hid_gamepad_desc_32b[USB_HID_GAMEPAD_REPORT_DESC_32B_SIZE]
const uint8_t hid_gamepad_desc[USB_HID_GAMEPAD_REPORT_DESC_SIZE]