-
Notifications
You must be signed in to change notification settings - Fork 3
Feature report 0xE0
Note: This information applies only to the old CECH-ZCM1 models, not the newer CECH-ZCM2 models.
Extension devices initially send config data which, among other things, contains a device ID for identifying the different possible extension devices. This feature report lets you retrieve this data. Extension devices that accept input data (currently only the Racing Wheel's rumble motors) can be fed data using this report, too.
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.
Feeding data to an Extension device works by simply sending report 0xE0. The fields in the report are slightly different from the usage for setting up a read operation though:
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 | Control byte |
0x04 | 1 | Length |
0x05 | 4 | unused (set it to zeros) |
0x09 | 40 | Data |
Setting the Mode selector = 1 sets up a write operation of Length+1 bytes of data. The I²C slave address for Sony's official extension devices is always 0xA0.
The Control byte and the specified number of bytes from the Data buffer will be transmitted to the Extension device via I²C as soon as the Move receives the feature report. The Move will copy the Control byte to the first byte of its I²C send buffer and then append the first Length number of bytes from Data. What this data does is entirely up to the Extension device to decide.