NFC Services: Difference between revisions

No edit summary
Line 32: Line 32:


==Post-9.3.0-21==
==Post-9.3.0-21==
Commands for post-9.3.0-21 have been extracted by analyzing the amiibo Settings applet. Therefore this table may be missing commands.
Commands for post-9.3.0-21 have been extracted by analyzing the amiibo Settings applet. Therefore this table may be missing commands. Note that the function name is actually a nickname for easeness of reading, as original function names have been stripped off the binaries.


Command header is stored at [[Thread Local Storage|TLS]]+0x80. Input and output parameters, if any, are set at TLS+0x84 onwards. If the command specifies has a parameter named "pid", this value has to be set to 0x20, as the kernel will replace the next word ("pidPlaceholder" - which can be left uninitialized) with the process' real PID (see [[IPC_Command_Structure]]).
See [[IPC Command Structure]] for an explanation on how IPC communication works and how to use these functions.
 
Note that the function name is actually a nickname for easeness of reading, as original function names have been stripped off the binaries.
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 54: Line 52:
| nfcStop
| nfcStop
| u8 unknownA
| u8 unknownA
| s32 result
|
|-
| 0x00030000
| ???
| void
| s32 result
|
|-
| 0x00040000
| ???
| void
| s32 result
| s32 result
|
|
Line 92: Line 102:
| s32 result
| s32 result
|
|
|-
| 0x000B0000
| ???
| void
| s32 result, u32 unknownA, u32 unknownB
| amiibo applet ignores value unknownA. It doesn't even read it from the command buffer.
|-
| 0x000C0000
| ???
| void
| s32 result, u32 unknownA, u32 unknownB
| amiibo applet also ignores value unknownA for this command.
|-
|-
| 0x000D0000
| 0x000D0000
Line 140: Line 162:
| s32 result
| s32 result
| Uses something at TLS+0x180
| Uses something at TLS+0x180
|-
| 0x00160242
| ???
| u32 unknownA, u8 unknownB[32], u32 (buffer_size << 14) <nowiki>|</nowiki> 0x00000002, void * buffer
| s32 result
|
|-
|-
| 0x00170000
| 0x00170000
Line 158: Line 186:
| s32 result, u32 unknownA[8], u32 unknownB[4], u64 unknownC, u32 unknownD
| s32 result, u32 unknownA[8], u32 unknownB[4], u64 unknownC, u32 unknownD
| Apparently output is a struct
| Apparently output is a struct
|-
| 0x040100C2
| ???
| u32 unknownA, u32 unknownB, u32 unknownC, u32 (sizeof(*buffer) << 14 | 0x402), void * buffer
| s32 result
|
|-
| 0x04020000
| ???
| void
| s32 result, u32 unknownA[16]
| Output seems to be a struct
|-
| 0x04030000
| ???
| void
| s32 result, u32 unknownA[41]
|
|-
| 0x04040A40
| ???
| u32 unknownA[41]
| s32 result
|
|-
|-
| 0x04060000
| 0x04060000
Line 163: Line 215:
| void
| void
| s32 result
| s32 result
|
|-
| 0x04070000
| ???
| void
| s32 result, u32 unknownA
|
|-
| 0x04080000
| ???
| void
| s32 result, u32 unknownA
|
|-
| 0x040D0000
| ???
| void
| s32 result
|
|-
| 0x040E0000
| ???
| void
| s32 result, u32 unknownA, u32 unknownB
| Again, amiibo applet ignores value unknownA.
|-
| 0x040F0000
| ???
| void
| s32 result, u32 unknownA, u32 unknownB
|
|
|}
|}