-
Notifications
You must be signed in to change notification settings - Fork 3
Feature report 0xE0
Extension devices initially send config data which, among other things, contains a device ID for identifying the different possible extension devices. This feature lets you retrieve this data.
Retrieving data from an extension device requires two steps: sending report 0xE0 with the desired read configuration, and then reading report 0xE0 to get the actual data.
Byte offset | Length (in bytes) | Description |
---|---|---|
0x00 | 1 | HID Report ID (always 0xE0) |
0x01 | 1 | Mode selector |
0x02 | 1 | Target extension device's I²C slave address |
0x03 | 1 | Offset |
0x04 | 1 | Length |
0x05 | 44 | unused (set it to zeros) |
Setting the Mode selector != 0 sets up a read operation of Length bytes starting at Offset in the 256 bytes of the extension device's config data. The I²C slave address for Sony's official extension devices is always 0xA0.
Since the data buffer in the read result (see next section) is limited to 40 bytes, it does not make any sense to specify Length > 40. If you do, it will internally be limited to 40.
Byte offset | Length (in bytes) | Description |
---|---|---|
0x00 | 1 | HID Report ID (always 0xE0) |
0x01 | 1 | Error flag |
0x02 | 1 | Target extension device's I²C slave address |
0x03 | 1 | Offset |
0x04 | 1 | Length |
0x05 | 4 | unknown |
0x09 | 40 | Data |
The Error flag will be zero if the operation was successful, otherwise it will be non-zero (if no extension device is connected, for example). The Slave address, Offset, and Length fields will contain the values specified in the previous sending of this report. Starting at offset 0x09 is the actual data retrieved from the extension device. If less than 40 bytes have been requested, the remaining bytes will be zero.