Changes

Jump to navigation Jump to search
3,157 bytes added ,  08:33, 4 July 2017
|-
! Command Header
! Available since system version
! Description
|-
| 0x00010000
| [[1.0.0-0]]
| [[IRU:Initialize|Initialize]]
|-
| 0x00020000
| [[1.0.0-0]]
| [[IRU:Shutdown|Shutdown]]
|-
| 0x00030042
| [[1.0.0-0]]
| [[IRU:StartSendTransfer|StartSendTransfer]]
|-
| 0x00040000
| [[1.0.0-0]]
| [[IRU:WaitSendTransfer|WaitSendTransfer]]
|-
| 0x000500C2
| [[1.0.0-0]]
| [[IRU:StartRecvTransfer|StartRecvTransfer]]
|-
| 0x00060000
| [[1.0.0-0]]
| [[IRU:WaitRecvTransfer|WaitRecvTransfer]]
|-
| 0x00070000
| [[1.0.0-0]]
| [[IRU:GetRecvTransferCount|GetRecvTransferCount]]
|-
| 0x00080000
| [[1.0.0-0]]
| [[IRU:GetSendState|GetSendState]]
|-
| 0x00090040
| [[1.0.0-0]]
| [[IRU:SetBitRate|SetBitRate]]
|-
| 0x000A0000
| [[1.0.0-0]]
| [[IRU:GetBitRate|GetBitRate]]
|-
| 0x000B0040
| [[1.0.0-0]]
| [[IRU:SetIRLEDState|SetIRLEDState]]
|-
| 0x000C0000
| [[1.0.0-0]]
| [[IRU:GetIRLEDRecvState|GetIRLEDRecvState]]
|-
| 0x000D0000
| [[1.0.0-0]]
| [[IRU:GetSendFinishedEvent|GetSendFinishedEvent]]
|-
| 0x000E0000
| [[1.0.0-0]]
| [[IRU:GetRecvFinishedEvent|GetRecvFinishedEvent]]
|-
| 0x000F0000
| [[1.0.0-0]]
| [[IRU:GetTransferState|GetTransferState]]
|-
| 0x00100000
| [[1.0.0-0]]| GetErrorStatus
|-
| 0x00110040
| [[1.0.0-0]]
| [[IRU:SetSleepModeActive|SetSleepModeActive]]
|-
| 0x00120040
| [[1.0.0-0]]
| [[IRU:SetSleepModeState|SetSleepModeState]]
|}
|-
| 0x00010182
| [[2.0.0-2]]| Initialize[[IRUSER:InitializeIrnop|InitializeIrnop]]
|-
| 0x00020000
| [[2.0.0-2]]| ShutdownFinalizeIrnop
|-
| 0x00030000
| [[2.0.0-2]]| ?ClearReceiveBuffer
|-
| 0x00040000
| [[2.0.0-2]]| ?ClearSendBuffer
|-
| 0x000500000x000500C0| [[2.0.0-2]]| ?WaitConnection
|-
| 0x000600000x00060040| [[2.0.0-2]]| ?RequireConnection (u8 input)
|-
| 0x000700000x000702C0| [[2.0.0-2]]| ?AutoConnection
|-
| 0x00080000
| [[2.0.0-2]]| ?AnyConnection
|-
| 0x00090000
| [[2.0.0-2]]| ?Disconnect
|-
| 0x000A0000
| [[2.0.0-2]]| ?GetReceiveEvent (writes event handle to cmdreply[3])
|-
| 0x000B0000
| [[2.0.0-2]]| ?GetSendEvent (writes event handle to cmdreply[3])
|-
| 0x000C0000
| [[2.0.0-2]]| ?GetConnectionStatusEvent (writes event handle to cmdreply[3])
|-
| 0x000D00000x000D0042| [[2.0.0-2]]| ?SendIrnop (u32 size, ((Size<<14) <nowiki>|</nowiki> 2), inbufptr)|-| 0x000E0042| [[2.0.0-2]]| SendIrnopLarge (u32 size, ((Size<<8) <nowiki>|</nowiki> 10), inbufptr)|-| 0x000F0040| [[2.0.0-2]]| ReceiveIrnop|-| 0x00100042| [[2.0.0-2]]| ReceiveIrnopLarge|-| 0x0011....| [[2.0.0-2]]| GetLatestReceiveErrorResult|-| 0x0012....| [[2.0.0-2]]| GetLatestSendErrorResult|-| 0x0013....| [[2.0.0-2]]| GetConnectionStatus|-| 0x0014....| [[2.0.0-2]]| GetTryingToConnectStatus|-| 0x0015....| [[2.0.0-2]]| GetReceiveSizeFreeAndUsed|-| 0x0016....| [[2.0.0-2]]| GetSendSizeFreeAndUsed|-| 0x0017....| [[2.2.0-X]]| GetConnectionRole
|-
| 0x000E00000x00180182| [[2.2.0-X]]| ?[[IRUSER:InitializeIrnopShared|InitializeIrnopShared]]
|-
| 0x000F00000x00190040| [[2.2.0-X]]| ?ReleaseReceivedData (32bit_value input)
|-
| 0x001000000x001A0040| [[2.2.0-X]]| ?SetOwnMachineId (u8 input)|} This service was added with [[2.0.0-2]]. When sending data, SendIrnop is used when the size is <=0xFC, otherwise SendIrnopLarge is used. = IR Service "ir:rst" ={| class="wikitable" border="1"
|-
| 0x00110000! Command Header| ! Available since system-version| ?! Description
|-
| 0x001200000x00010000| [[8.0.0-18]]| ?[[IRRST:GetHandles|GetHandles]]
|-
| 0x001300000x00020080| [[8.0.0-18]]| ?[[IRRST:Initialize|Initialize]]
|-
| 0x001400000x00030000| [[8.0.0-18]]| ?[[IRRST:Shutdown|Shutdown]]
|-
| 0x001500000x00040000| [[8.0.0-18]]| ?This writes an unknown u8 to index-word cmdreply[2], from data loaded from an I2C device register.
|-
| 0x001600000x00050000| [[8.0.0-18]]| ?This writes an unknown u8 from IR-module state to index-word cmdreply[2].
|-
| 0x001700000x00060000| Unknown, >[[28.0.0-218]]| ?This writes two unknown u8 fields from IR-module state to index-word cmdreply[2] and cmdreply[3].
|-
| 0x001800000x00070080| Unknown, >[[29.0.0-220]]| (u8 unk0, u8 unk1) ?
|-
| 0x001900000x00080000| Unknown, >[[29.0.0-220]]| (u8 unk0, u8 unk1) ?
|-
| 0x001A00000x00090000| Unknown, >[[29.0.0-220]]| ?This writes two unknown u8 fields to index-word cmdreply[2] and cmdreply[3].
|}
This service was added with [[8.0.0-18]]. Unlike the other IR services, this uses [[I2C]] deviceid 17(this deviceid isn't actually handled by the [[8.0.0-18]] I2C module). This is for the additional [[New 3DS]] HID hardware, this HID data is stored in [[IRRST_Shared_Memory|shared-memory]]. Even with [[9.0.0-20]] IR module still registers+handles this service on both Old3DS+New3DS. =IR Services=Only one session (two sessions starting with [[8.0.0-18]]) to either any of these services can be open at a time, thus only one /two process (es) can use either any of these services at once. These services interface with hardware services gpio::IR and i2c::IR. The i2c::IR service is used for sending/receiving data. IRU is for regular IR comms. IRUSER uses a custom IR protocol(above the physical layer). Both of these services use IrDA-SIR. The IR hardware seems to only support IrDA-SIR, other physical protocols such as the one for TV-remotes are not supported(going by the datasheet linked [[Hardware|here]] for a different IC at least).
IRU The protocol used with IRUSER involves encryption(?) implemented in software. IRUSER is used for regular IR commsthe [[Circle Pad Pro]]. This same IRUSER service uses a custom IR protocol(above the physical layer)New3DS HID hardware when running on New3DS. Note that the main service for New3DS HID is ir:rst, which and these two service are mutually exclusive: when one is for 3DS<>3DS comms. The IR hardware operates in initialized and reading data from New3DS HID, the IrDA SIR mode by default, IRU doesn't have an interface for using other modes(such as the one for TV-remotes) via hardwarecannot access it.
242

edits

Navigation menu