Difference between revisions of "Circle Pad Pro"
(0x10 is my typo and thanks. But I don't see the point of blindly merging unknown fields) |
|||
Line 44: | Line 44: | ||
| 0x0 | | 0x0 | ||
| 0x1 | | 0x1 | ||
− | | Response ID? Fixed value | + | | Response ID? Fixed value 0x10 |
|- | |- | ||
| 0x1 | | 0x1 | ||
Line 52: | Line 52: | ||
|- | |- | ||
| 0x4 | | 0x4 | ||
− | | | + | | 0x1 |
| bit[0:4] battery level? | | bit[0:4] battery level? | ||
bit[5] ZL button | bit[5] ZL button | ||
Line 61: | Line 61: | ||
Note that for the three button fields, the bit is set when the button is NOT pressed. | Note that for the three button fields, the bit is set when the button is NOT pressed. | ||
+ | |- | ||
+ | | 0x5 | ||
+ | | 0x1 | ||
+ | | Unknown | ||
|} | |} | ||
Revision as of 10:14, 28 February 2017
Also known as CTR-009, it sends the commands to the console through the IR interface on the back of the console.
Usage Instructions
IR Protocol
Communications with this device is done via the ir:USER service, which uses obfuscation implemented in software. The bitrate-value passed to IRUSER is 0x04, hence the actual bps is 96000.
The application sends requests via IRUSER:SendIrnop and receives response from Circle Pad Pro via IRUSER:ReceiveIrnop (or read data from the shared memory). The request and response data structures below are payloads in packets.
Read Input
Request (3 bytes):
offset | Size | Description |
---|---|---|
0x0 | 0x1 | Request ID (fixed value 1) |
0x1 | 0x1 | Response period in ms |
0x2 | 0x1 | Unknown |
Response (6 bytes): This Response will be sent repeatedly by the specified period.
offset | Size | Description |
---|---|---|
0x0 | 0x1 | Response ID? Fixed value 0x10 |
0x1 | 0x3 | Right circle pad position.
This three bytes are two little-endian 12-bit fields. The first one is for x-axis and the second one is for y-axis. |
0x4 | 0x1 | bit[0:4] battery level?
bit[5] ZL button bit[6] ZR button bit[7] R button Note that for the three button fields, the bit is set when the button is NOT pressed. |
0x5 | 0x1 | Unknown |
Read Calibration Data?
Request (6 bytes):
offset | Size | Description |
---|---|---|
0x0 | 0x1 | Request ID (fixed value 2) |
0x1 | 0x1 | Expected response time in ms? |
0x2 | 0x2 | Data offset? (aligned to 0x10?) |
0x4 | 0x2 | Data size (aligned to 0x10?) |
Response (5 bytes + requested size)
offset | Size | Description |
---|---|---|
0x0 | 0x1 | Response ID? Fixed value 0x11 |
0x1 | 0x2 | Unknown. Same as request+0x2 |
0x2 | 0x2 | Data size |
0x4 | data size | calibration data? |