IR Services: Difference between revisions
No edit summary |
|||
(10 intermediate revisions by 4 users not shown) | |||
Line 4: | Line 4: | ||
|- | |- | ||
! Command Header | ! Command Header | ||
! Available since system version | |||
! Description | ! Description | ||
|- | |- | ||
| 0x00010000 | | 0x00010000 | ||
| [[1.0.0-0]] | |||
| [[IRU:Initialize|Initialize]] | | [[IRU:Initialize|Initialize]] | ||
|- | |- | ||
| 0x00020000 | | 0x00020000 | ||
| [[1.0.0-0]] | |||
| [[IRU:Shutdown|Shutdown]] | | [[IRU:Shutdown|Shutdown]] | ||
|- | |- | ||
| 0x00030042 | | 0x00030042 | ||
| [[1.0.0-0]] | |||
| [[IRU:StartSendTransfer|StartSendTransfer]] | | [[IRU:StartSendTransfer|StartSendTransfer]] | ||
|- | |- | ||
| 0x00040000 | | 0x00040000 | ||
| [[1.0.0-0]] | |||
| [[IRU:WaitSendTransfer|WaitSendTransfer]] | | [[IRU:WaitSendTransfer|WaitSendTransfer]] | ||
|- | |- | ||
| 0x000500C2 | | 0x000500C2 | ||
| [[1.0.0-0]] | |||
| [[IRU:StartRecvTransfer|StartRecvTransfer]] | | [[IRU:StartRecvTransfer|StartRecvTransfer]] | ||
|- | |- | ||
| 0x00060000 | | 0x00060000 | ||
| [[1.0.0-0]] | |||
| [[IRU:WaitRecvTransfer|WaitRecvTransfer]] | | [[IRU:WaitRecvTransfer|WaitRecvTransfer]] | ||
|- | |- | ||
| 0x00070000 | | 0x00070000 | ||
| [[1.0.0-0]] | |||
| [[IRU:GetRecvTransferCount|GetRecvTransferCount]] | | [[IRU:GetRecvTransferCount|GetRecvTransferCount]] | ||
|- | |- | ||
| 0x00080000 | | 0x00080000 | ||
| [[1.0.0-0]] | |||
| [[IRU:GetSendState|GetSendState]] | | [[IRU:GetSendState|GetSendState]] | ||
|- | |- | ||
| 0x00090040 | | 0x00090040 | ||
| [[1.0.0-0]] | |||
| [[IRU:SetBitRate|SetBitRate]] | | [[IRU:SetBitRate|SetBitRate]] | ||
|- | |- | ||
| 0x000A0000 | | 0x000A0000 | ||
| [[1.0.0-0]] | |||
| [[IRU:GetBitRate|GetBitRate]] | | [[IRU:GetBitRate|GetBitRate]] | ||
|- | |- | ||
| 0x000B0040 | | 0x000B0040 | ||
| [[1.0.0-0]] | |||
| [[IRU:SetIRLEDState|SetIRLEDState]] | | [[IRU:SetIRLEDState|SetIRLEDState]] | ||
|- | |- | ||
| 0x000C0000 | | 0x000C0000 | ||
| [[1.0.0-0]] | |||
| [[IRU:GetIRLEDRecvState|GetIRLEDRecvState]] | | [[IRU:GetIRLEDRecvState|GetIRLEDRecvState]] | ||
|- | |- | ||
| 0x000D0000 | | 0x000D0000 | ||
| [[1.0.0-0]] | |||
| [[IRU:GetSendFinishedEvent|GetSendFinishedEvent]] | | [[IRU:GetSendFinishedEvent|GetSendFinishedEvent]] | ||
|- | |- | ||
| 0x000E0000 | | 0x000E0000 | ||
| [[1.0.0-0]] | |||
| [[IRU:GetRecvFinishedEvent|GetRecvFinishedEvent]] | | [[IRU:GetRecvFinishedEvent|GetRecvFinishedEvent]] | ||
|- | |- | ||
| 0x000F0000 | | 0x000F0000 | ||
| [[1.0.0-0]] | |||
| [[IRU:GetTransferState|GetTransferState]] | | [[IRU:GetTransferState|GetTransferState]] | ||
|- | |- | ||
| 0x00100000 | | 0x00100000 | ||
| [[1.0.0-0]] | |||
| GetErrorStatus | | GetErrorStatus | ||
|- | |- | ||
| 0x00110040 | | 0x00110040 | ||
| [[1.0.0-0]] | |||
| [[IRU:SetSleepModeActive|SetSleepModeActive]] | | [[IRU:SetSleepModeActive|SetSleepModeActive]] | ||
|- | |- | ||
| 0x00120040 | | 0x00120040 | ||
| [[1.0.0-0]] | |||
| [[IRU:SetSleepModeState|SetSleepModeState]] | | [[IRU:SetSleepModeState|SetSleepModeState]] | ||
|} | |} | ||
Line 69: | Line 88: | ||
|- | |- | ||
| 0x00010182 | | 0x00010182 | ||
| | | [[2.0.0-2]] | ||
| InitializeIrnop | | [[IRUSER:InitializeIrnop|InitializeIrnop]] | ||
|- | |- | ||
| 0x00020000 | | 0x00020000 | ||
| | | [[2.0.0-2]] | ||
| FinalizeIrnop | | FinalizeIrnop | ||
|- | |- | ||
| 0x00030000 | | 0x00030000 | ||
| | | [[2.0.0-2]] | ||
| ClearReceiveBuffer | | ClearReceiveBuffer | ||
|- | |- | ||
| 0x00040000 | | 0x00040000 | ||
| | | [[2.0.0-2]] | ||
| ClearSendBuffer | | ClearSendBuffer | ||
|- | |- | ||
| | | 0x000500C0 | ||
| [[2.0.0-2]] | |||
| WaitConnection | | WaitConnection | ||
|- | |- | ||
| 0x00060040 | | 0x00060040 | ||
| | | [[2.0.0-2]] | ||
| RequireConnection (u8 input) | | RequireConnection (u8 input) | ||
|- | |- | ||
| | | 0x000702C0 | ||
| [[2.0.0-2]] | |||
| AutoConnection | | AutoConnection | ||
|- | |- | ||
| | | 0x00080000 | ||
| [[2.0.0-2]] | |||
| AnyConnection | | AnyConnection | ||
|- | |- | ||
| 0x00090000 | | 0x00090000 | ||
| | | [[2.0.0-2]] | ||
| Disconnect | | Disconnect | ||
|- | |- | ||
| 0x000A0000 | | 0x000A0000 | ||
| | | [[2.0.0-2]] | ||
| GetReceiveEvent (writes event handle to cmdreply[3]) | | GetReceiveEvent (writes event handle to cmdreply[3]) | ||
|- | |- | ||
| 0x000B0000 | | 0x000B0000 | ||
| | | [[2.0.0-2]] | ||
| GetSendEvent (writes event handle to cmdreply[3]) | | GetSendEvent (writes event handle to cmdreply[3]) | ||
|- | |- | ||
| 0x000C0000 | | 0x000C0000 | ||
| | | [[2.0.0-2]] | ||
| GetConnectionStatusEvent (writes event handle to cmdreply[3]) | | GetConnectionStatusEvent (writes event handle to cmdreply[3]) | ||
|- | |- | ||
| 0x000D0042 | | 0x000D0042 | ||
| | | [[2.0.0-2]] | ||
| SendIrnop (u32 size, ((Size<<14) <nowiki>|</nowiki> 2), inbufptr) | | SendIrnop (u32 size, ((Size<<14) <nowiki>|</nowiki> 2), inbufptr) | ||
|- | |- | ||
| 0x000E0042 | | 0x000E0042 | ||
| | | [[2.0.0-2]] | ||
| SendIrnopLarge (u32 size, ((Size<<8) <nowiki>|</nowiki> 10), inbufptr) | | SendIrnopLarge (u32 size, ((Size<<8) <nowiki>|</nowiki> 10), inbufptr) | ||
|- | |- | ||
| | | 0x000F0040 | ||
| [[2.0.0-2]] | |||
| ReceiveIrnop | | ReceiveIrnop | ||
|- | |- | ||
| | | 0x00100042 | ||
| [[2.0.0-2]] | |||
| ReceiveIrnopLarge | | ReceiveIrnopLarge | ||
|- | |- | ||
| 0x0011.... | | 0x0011.... | ||
| | | [[2.0.0-2]] | ||
| GetLatestReceiveErrorResult | | GetLatestReceiveErrorResult | ||
|- | |- | ||
| 0x0012.... | | 0x0012.... | ||
| | | [[2.0.0-2]] | ||
| GetLatestSendErrorResult | | GetLatestSendErrorResult | ||
|- | |- | ||
| 0x0013.... | | 0x0013.... | ||
| | | [[2.0.0-2]] | ||
| GetConnectionStatus | | GetConnectionStatus | ||
|- | |- | ||
| 0x0014.... | | 0x0014.... | ||
| | | [[2.0.0-2]] | ||
| GetTryingToConnectStatus | | GetTryingToConnectStatus | ||
|- | |- | ||
| 0x0015.... | | 0x0015.... | ||
| | | [[2.0.0-2]] | ||
| GetReceiveSizeFreeAndUsed | | GetReceiveSizeFreeAndUsed | ||
|- | |- | ||
| 0x0016.... | | 0x0016.... | ||
| | | [[2.0.0-2]] | ||
| GetSendSizeFreeAndUsed | | GetSendSizeFreeAndUsed | ||
|- | |- | ||
| 0x0017.... | | 0x0017.... | ||
| | | [[2.2.0-X]] | ||
| GetConnectionRole | | GetConnectionRole | ||
|- | |- | ||
| 0x00180182 | | 0x00180182 | ||
| | | [[2.2.0-X]] | ||
| InitializeIrnopShared | | [[IRUSER:InitializeIrnopShared|InitializeIrnopShared]] | ||
|- | |- | ||
| 0x00190040 | | 0x00190040 | ||
| | | [[2.2.0-X]] | ||
| ReleaseReceivedData (32bit_value input) | | ReleaseReceivedData (32bit_value input) | ||
|- | |- | ||
| | | 0x001A0040 | ||
| | | [[2.2.0-X]] | ||
| SetOwnMachineId | | 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. | When sending data, SendIrnop is used when the size is <=0xFC, otherwise SendIrnopLarge is used. | ||
Line 226: | Line 247: | ||
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 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). | ||
The protocol used with IRUSER involves encryption(?) implemented in software. IRUSER is used for the [[Circle Pad Pro]]. This same IRUSER service uses the New3DS HID hardware when running on New3DS | The protocol used with IRUSER involves encryption(?) implemented in software. IRUSER is used for the [[Circle Pad Pro]]. This same IRUSER service uses the New3DS HID hardware when running on New3DS. Note that the main service for New3DS HID is ir:rst, and these two service are mutually exclusive: when one is initialized and reading data from New3DS HID, the other cannot access it. |