Changeset 02817db in avrstuff for grip2hid/Descriptors.c


Ignore:
Timestamp:
Jan 3, 2024, 10:08:32 PM (4 months ago)
Author:
PulkoMandy <pulkomandy@…>
Branches:
main
Parents:
3fde1f7
Message:

grip2hid: tweak HID report to match PS3 controller layout

The grip2hid is now better usable on hte PS3 console!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • grip2hid/Descriptors.c

    r3fde1f7 r02817db  
    3838#include "Descriptors.h"
    3939
     40#define BLOCK1 \
     41                                HID_RI_USAGE(8, 9), \
     42                                HID_RI_USAGE(8, 10), \
     43                                HID_RI_USAGE(8, 8), \
     44                                HID_RI_USAGE(8, 4), \
     45                                HID_RI_REPORT_SIZE(8, 0x01), \
     46                                HID_RI_REPORT_COUNT(8, 4), \
     47                                HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
     48
     49#define BLOCK2 \
     50                                HID_RI_USAGE(8, 7), \
     51                                HID_RI_USAGE(8, 3), \
     52                                HID_RI_USAGE(8, 2), \
     53                                HID_RI_USAGE(8, 1), \
     54                                HID_RI_REPORT_SIZE(8, 0x01), \
     55                                HID_RI_REPORT_COUNT(8, 4), \
     56                                HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
     57
    4058/** HID class report descriptor. This is a special descriptor constructed with values from the
    4159 *  USBIF HID class specification to describe the reports and capabilities of the HID device. This
     
    5270                                0x85, 0x01, // Report ID 1
    5371
    54                                 // 15 constant bytes
     72                                // 15 unused bits (the report is 32 bits to simplify/optimize some things, with
     73                                // extra padding at the start (8 bits), followed by the sync sequence 0111110
     74                                // (7 bits)
    5575                                HID_RI_REPORT_SIZE(8, 15),
    5676                                HID_RI_REPORT_COUNT(8, 0x01),
    5777                                HID_RI_INPUT(8, HID_IOF_CONSTANT),
    5878
     79                                // Let's define some buttons
    5980                                HID_RI_USAGE_PAGE(8, 0x09),
    6081                                HID_RI_LOGICAL_MINIMUM(8, 0x00),
    6182                                HID_RI_LOGICAL_MAXIMUM(8, 0x01),
    6283
    63                                 HID_RI_USAGE_MINIMUM(8, 7),
    64                                 HID_RI_USAGE_MAXIMUM(8, 9),
    65                                 HID_RI_USAGE(8, 4),
    66                                 HID_RI_REPORT_SIZE(8, 0x01),
    67                                 HID_RI_REPORT_COUNT(8, 4),
    68                                 HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
    69 
    70                                 HID_RI_REPORT_SIZE(8, 1),
    71                                 HID_RI_REPORT_COUNT(8, 0x01),
    72                                 HID_RI_INPUT(8, HID_IOF_CONSTANT),
    73 
    74                                 HID_RI_USAGE(8, 10),
    75                                 HID_RI_USAGE_MINIMUM(8, 1),
    76                                 HID_RI_USAGE_MAXIMUM(8, 3),
    77                                 HID_RI_REPORT_SIZE(8, 0x01),
    78                                 HID_RI_REPORT_COUNT(8, 4),
    79                                 HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
    80 
    81                                 HID_RI_REPORT_SIZE(8, 1),
    82                                 HID_RI_REPORT_COUNT(8, 0x01),
    83                                 HID_RI_INPUT(8, HID_IOF_CONSTANT),
    84 
     84                                // 9, 10, 8, 4 (Select, Start, R2, Blue)
     85                                BLOCK1
     86
     87                                // One unused bit (always 0)
     88                                HID_RI_REPORT_SIZE(8, 1),
     89                                HID_RI_REPORT_COUNT(8, 0x01),
     90                                HID_RI_INPUT(8, HID_IOF_CONSTANT),
     91
     92                                // 7, 3, 2, 1 (L2, Green, Yellow, Red)
     93                                BLOCK2
     94
     95                                HID_RI_REPORT_SIZE(8, 1),
     96                                HID_RI_REPORT_COUNT(8, 0x01),
     97                                HID_RI_INPUT(8, HID_IOF_CONSTANT),
     98
     99                                // 5, 6 (L1, R1)
    85100                                HID_RI_USAGE_MINIMUM(8, 5),
    86101                                HID_RI_USAGE_MAXIMUM(8, 6),
     
    128143                                HID_RI_LOGICAL_MAXIMUM(8, 0x01),
    129144
    130                                 HID_RI_USAGE_MINIMUM(8, 7),
    131                                 HID_RI_USAGE_MAXIMUM(8, 9),
    132                                 HID_RI_USAGE(8, 4),
    133                                 HID_RI_REPORT_SIZE(8, 0x01),
    134                                 HID_RI_REPORT_COUNT(8, 4),
    135                                 HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
    136 
    137                                 HID_RI_REPORT_SIZE(8, 1),
    138                                 HID_RI_REPORT_COUNT(8, 0x01),
    139                                 HID_RI_INPUT(8, HID_IOF_CONSTANT),
    140 
    141                                 HID_RI_USAGE(8, 10),
    142                                 HID_RI_USAGE_MINIMUM(8, 1),
    143                                 HID_RI_USAGE_MAXIMUM(8, 3),
    144                                 HID_RI_REPORT_SIZE(8, 0x01),
    145                                 HID_RI_REPORT_COUNT(8, 4),
    146                                 HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
     145                                BLOCK1
     146
     147                                HID_RI_REPORT_SIZE(8, 1),
     148                                HID_RI_REPORT_COUNT(8, 0x01),
     149                                HID_RI_INPUT(8, HID_IOF_CONSTANT),
     150
     151                                BLOCK2
    147152
    148153                                HID_RI_REPORT_SIZE(8, 1),
     
    195200                                HID_RI_LOGICAL_MAXIMUM(8, 0x01),
    196201
    197                                 HID_RI_USAGE_MINIMUM(8, 7),
    198                                 HID_RI_USAGE_MAXIMUM(8, 9),
    199                                 HID_RI_USAGE(8, 4),
    200                                 HID_RI_REPORT_SIZE(8, 0x01),
    201                                 HID_RI_REPORT_COUNT(8, 4),
    202                                 HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
    203 
    204                                 HID_RI_REPORT_SIZE(8, 1),
    205                                 HID_RI_REPORT_COUNT(8, 0x01),
    206                                 HID_RI_INPUT(8, HID_IOF_CONSTANT),
    207 
    208                                 HID_RI_USAGE(8, 10),
    209                                 HID_RI_USAGE_MINIMUM(8, 1),
    210                                 HID_RI_USAGE_MAXIMUM(8, 3),
    211                                 HID_RI_REPORT_SIZE(8, 0x01),
    212                                 HID_RI_REPORT_COUNT(8, 4),
    213                                 HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
     202                                BLOCK1
     203
     204                                HID_RI_REPORT_SIZE(8, 1),
     205                                HID_RI_REPORT_COUNT(8, 0x01),
     206                                HID_RI_INPUT(8, HID_IOF_CONSTANT),
     207
     208                                BLOCK2
    214209
    215210                                HID_RI_REPORT_SIZE(8, 1),
     
    262257                                HID_RI_LOGICAL_MAXIMUM(8, 0x01),
    263258
    264                                 HID_RI_USAGE_MINIMUM(8, 7),
    265                                 HID_RI_USAGE_MAXIMUM(8, 9),
    266                                 HID_RI_USAGE(8, 4),
    267                                 HID_RI_REPORT_SIZE(8, 0x01),
    268                                 HID_RI_REPORT_COUNT(8, 4),
    269                                 HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
    270 
    271                                 HID_RI_REPORT_SIZE(8, 1),
    272                                 HID_RI_REPORT_COUNT(8, 0x01),
    273                                 HID_RI_INPUT(8, HID_IOF_CONSTANT),
    274 
    275                                 HID_RI_USAGE(8, 10),
    276                                 HID_RI_USAGE_MINIMUM(8, 1),
    277                                 HID_RI_USAGE_MAXIMUM(8, 3),
    278                                 HID_RI_REPORT_SIZE(8, 0x01),
    279                                 HID_RI_REPORT_COUNT(8, 4),
    280                                 HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
     259                                BLOCK1
     260
     261                                HID_RI_REPORT_SIZE(8, 1),
     262                                HID_RI_REPORT_COUNT(8, 0x01),
     263                                HID_RI_INPUT(8, HID_IOF_CONSTANT),
     264
     265                                BLOCK2
    281266
    282267                                HID_RI_REPORT_SIZE(8, 1),
Note: See TracChangeset for help on using the changeset viewer.