Line 561: |
Line 561: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || CreateNetworkService | + | | 0 || [[#CreateNetworkService]] |
| |- | | |- |
− | | 8 || CreateNetworkServiceMonitor | + | | 8 || [[#CreateNetworkServiceMonitor]] |
| |} | | |} |
| + | |
| + | == CreateNetworkService == |
| + | Takes an input u32, an u64 pid_reserved, a PID, returns an output [[#INetworkService]]. |
| + | |
| + | The input u32 must be value 0x1. |
| + | |
| + | == CreateNetworkServiceMonitor == |
| + | Takes an input u64 pid_reserved, a PID, returns an output [[#INetworkServiceMonitor]]. |
| | | |
| == INetworkService == | | == INetworkService == |
Line 601: |
Line 609: |
| | 784 || | | | 784 || |
| |- | | |- |
− | | 1536 || SendToOtherGroup | + | | 1536 || [[#SendToOtherGroup]] |
| |- | | |- |
− | | 1544 || RecvFromOtherGroup | + | | 1544 || [[#RecvFromOtherGroup]] |
| |- | | |- |
− | | 1552 || AddAcceptableGroupId | + | | 1552 || [[#AddAcceptableGroupId]] |
| |- | | |- |
| | 1560 || [9.1.0+] | | | 1560 || [9.1.0+] |
Line 611: |
Line 619: |
| | | |
| === Initialize === | | === Initialize === |
| + | No input/output. |
| + | |
| Returns 0. | | Returns 0. |
| + | |
| + | === Cmd512 === |
| + | Takes a type-0x19 input buffer containing a 0x200-byte struct, a type-0x22 output buffer containing an array of a 0x300-byte struct, returns an output u32. |
| + | |
| + | === Cmd768 === |
| + | Takes a type-0x31 input buffer containing a 0x200-byte struct, no output. |
| + | |
| + | === Cmd776 === |
| + | No input/output. |
| + | |
| + | === Cmd784 === |
| + | Takes a type-0x21 input buffer, no output. |
| + | |
| + | The buffer size must be <=0x80. |
| + | |
| + | === SendToOtherGroup === |
| + | Takes an input [[#MacAddress]], a [[#MacAddress]], a s16, a s16, an u32 flags, a type-0x21 input buffer, no output. |
| + | |
| + | The buffer size must be <=0x400. |
| + | |
| + | The s16s must be >=1. |
| + | |
| + | Flags is only used for selecting which func to call internally, via bit0. |
| + | |
| + | === RecvFromOtherGroup === |
| + | Takes an input u32 flags, a type-0x22 output buffer, returns a [[#MacAddress]], an u16, a s16, an u32 out_size, a s32. |
| + | |
| + | The out_size is the original size used for copying to the output buffer, before it's clamped to the output-buffer size. |
| + | |
| + | Flags is only used for selecting which func to call internally, via bit0. |
| + | |
| + | === AddAcceptableGroupId === |
| + | Takes an input [[#MacAddress]], no output. |
| + | |
| + | === Cmd1560 === |
| + | No input/output. |
| | | |
| == INetworkServiceMonitor == | | == INetworkServiceMonitor == |
Line 713: |
Line 759: |
| This is "nn::ldn::NetworkInfo". This is a 0x480-byte struct. The data at +0x50 is another struct. | | This is "nn::ldn::NetworkInfo". This is a 0x480-byte struct. The data at +0x50 is another struct. |
| | | |
− | The fields listed as Reserved are cleared during the memset and are not written to again afterwards, with cmds which return NetworkInfo. | + | The fields listed as Reserved (besides the fields before +0x10) are cleared during the memset and are not written to again afterwards, with cmds which return NetworkInfo. |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 723: |
Line 769: |
| | 0x0 || 0x8 || LocalCommunicationId | | | 0x0 || 0x8 || LocalCommunicationId |
| |- | | |- |
− | | 0x8 || 0x2 || | + | | 0x8 || 0x2 || Reserved |
| |- | | |- |
− | | 0xA || 0x2 || | + | | 0xA || 0x2 || Arbitrary user data which can be used for filtering with [[#ScanFilter]]. |
| |- | | |- |
− | | 0xC || 0x4 || | + | | 0xC || 0x4 || Reserved |
| |- | | |- |
| | 0x10 || 0x10 || Last 0x10-bytes of [[#SecurityParameter]]. NetworkId which is used to generate/overwrite the [[#Ssid]]. With [[#Scan]]/[[#ScanPrivate]], this is only done after filtering when +0x4B is value 0x2. The converted Ssid is a 0x20-byte lowercase hex string version of the input NetworkId. | | | 0x10 || 0x10 || Last 0x10-bytes of [[#SecurityParameter]]. NetworkId which is used to generate/overwrite the [[#Ssid]]. With [[#Scan]]/[[#ScanPrivate]], this is only done after filtering when +0x4B is value 0x2. The converted Ssid is a 0x20-byte lowercase hex string version of the input NetworkId. |
Line 749: |
Line 795: |
| | 0x62 || 0x1 || [[#AcceptPolicy]] | | | 0x62 || 0x1 || [[#AcceptPolicy]] |
| |- | | |- |
− | | 0x63 || 0x3 || Padding | + | | 0x63 || 0x1 || Only set with [[#Scan]]/[[#ScanPrivate]], when +0x4B is value 0x2. |
| + | |- |
| + | | 0x64 || 0x2 || Padding |
| |- | | |- |
| | 0x66 || 0x1 || Maximum participants, for the [[#NodeInfo]] array. | | | 0x66 || 0x1 || Maximum participants, for the [[#NodeInfo]] array. |