Changes

1,485 bytes added ,  21:35, 23 February 2017
Line 9: Line 9:  
== IR Protocol ==
 
== IR Protocol ==
 
Communications with this device is done via the [[IR_Services|ir:USER]] service, which uses obfuscation implemented in software. The [[IRU:SetBitRate|bitrate-value]] passed to IRUSER is 0x04, hence the actual bps is 96000.
 
Communications with this device is done via the [[IR_Services|ir:USER]] service, which uses obfuscation implemented in software. The [[IRU:SetBitRate|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 [[IRUSER_Shared_Memory|shared memory]]). The request and response data structures below are payloads in packets.
 +
 +
=== Read Input ===
 +
 +
Request (3 bytes):
 +
{| class="wikitable" border="1"
 +
|-
 +
!  offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x1
 +
| Request ID? Fixed value 1
 +
|-
 +
| 0x1
 +
| 0x1
 +
| Unknown
 +
|-
 +
| 0x2
 +
| 0x1
 +
| Unknown
 +
|}
 +
 +
Response (6 bytes):
 +
{| class="wikitable" border="1"
 +
|-
 +
!  offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x1
 +
| Response ID? Fixed value 0x11
 +
|-
 +
| 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):
 +
{| class="wikitable" border="1"
 +
|-
 +
!  offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x1
 +
| Request ID? Fixed value 2
 +
|-
 +
| 0x1
 +
| 0x1
 +
| Unknown
 +
|-
 +
| 0x2
 +
| 0x2
 +
| Unknown.
 +
|-
 +
| 0x4
 +
| 0x2
 +
| Data size
 +
|}
 +
 +
Response (5 bytes + requested size)
 +
{| class="wikitable" border="1"
 +
|-
 +
!  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?
 +
|}
242

edits