Changes

Jump to navigation Jump to search
1,772 bytes added ,  05:51, 22 October 2020
no edit summary
Line 647: Line 647:     
=== CreateGroup ===
 
=== CreateGroup ===
Takes a type-0x31 input buffer containing a 0x200-byte struct, no output.
+
Takes a type-0x31 input buffer containing a [[#GroupInfo]], no output.
    
[[Mario Kart Live: Home Circuit|mklive]] uses the following string with this: "Failed to create a group: %08X".
 
[[Mario Kart Live: Home Circuit|mklive]] uses the following string with this: "Failed to create a group: %08X".
Line 765: Line 765:     
=== Join ===
 
=== Join ===
Takes a type-0x32 output buffer containing a [[#GroupInfo]] and a type-0x31 input buffer containing a 0x200-byte struct.
+
Takes a type-0x32 output buffer containing a [[#GroupInfo]] and a type-0x31 input buffer containing a [[#GroupInfo]].
    
This runs the same code as [[#CreateGroup]] to generate the [[#GroupInfo]] for the input struct (which with [[#CreateGroup]] would be available with [[#GetGroupInfo]]). The input struct is the same as [[#CreateGroup]].
 
This runs the same code as [[#CreateGroup]] to generate the [[#GroupInfo]] for the input struct (which with [[#CreateGroup]] would be available with [[#GetGroupInfo]]). The input struct is the same as [[#CreateGroup]].
Line 1,192: Line 1,192:  
= GroupInfo =
 
= GroupInfo =
 
This is "nn::lp2p::GroupInfo". This is a 0x200-byte struct.
 
This is "nn::lp2p::GroupInfo". This is a 0x200-byte struct.
 +
 +
[[Mario Kart Live: Home Circuit|mklive]] sets the SSID to a string generated from random data, the key-data is also set to random data.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 1,199: Line 1,201:  
! Description
 
! Description
 
|-
 
|-
| 0x10 || 0x8 || LocalCommunicationId
+
| 0x0 || 0x10 || When zero, this is set to randomly-generated data.
 +
|-
 +
| 0x10 || 0x8 || LocalCommunicationId. When zero, the value from control.nacp is loaded.
 +
|-
 +
| 0x18 || 0x6 || "GROUP ID  (BSSID)" [[#GroupId]]. When zero, the default is used.
 
|-
 
|-
| 0x18 || 0x6 || "GROUP ID  (BSSID)" [[#GroupId]]
+
| 0x1E || 0x15 || "GROUP NAME (SSID)" NUL-terminated string.
 
|-
 
|-
| 0x1E || 0x21 || "GROUP NAME (SSID)" NUL-terminated string.
+
| 0x3F || 0x1 || s8 Flags_mask count.
 +
|-
 +
| 0x40 || {above count} || Array of s8 with the above count. Each entry is an array index used to load a set of flags from a global array with the specified index. loaded_flags below is masked with the flags loaded here. global_flags are also masked with flags loaded from here.
 
|-
 
|-
 
| 0x84 || 0x2 || Wifi frequency: 24 = 2.4GHz, 50 = 5.0GHz.
 
| 0x84 || 0x2 || Wifi frequency: 24 = 2.4GHz, 50 = 5.0GHz.
Line 1,210: Line 1,218:  
* 24: 1, 6, 11.
 
* 24: 1, 6, 11.
 
* 50: 36, 40, 44, 48.
 
* 50: 36, 40, 44, 48.
 +
|-
 +
| 0x8A || 0x1 || Security type. 0 = use defaults, 2 = encrypted, other-values = plaintext.
 +
|-
 +
| 0x8B || 0x1 ||
 +
|-
 +
| 0x8E || 0x1 || Bool flag, controls whether the SSID is hidden.
 +
|-
 +
| 0x8F || 0x1 || If zero, a default value of 0x20 is used.
 +
|-
 +
| 0x10F || 0x1 || Flags count.
 +
|-
 +
| 0x110 || {above count} || Array of s8 with the above count for total entries. The flags are loaded by: <nowiki>"loaded_flags |= BIT(s8_entryvalue)"</nowiki>, with each entry. Afterwards, loaded_flags is masked with 0x7. loaded_flags must be non-zero.
 +
|-
 +
| 0x1C0 || 0x1 || Key data size. Must be 0x20.
 +
|-
 +
| 0x1C1 || 0x20 || Key data.
 
|}
 
|}
 +
 +
The above loaded_flags are used when +0x8A is 0. global_flags are loaded from global data. Flags:
 +
* Bit2 clear:
 +
** global_flags must be non-zero, and loaded_flags bit1 must be set.
 +
** u8 +0x8A is set to value 1.
 +
** When the cached [[SPL_services#IsDevelopment|IsDevelopment]] value is false (retail), an error is thrown.
 +
** u8 +0x8B is set to value 0.
 +
* Otherwise, if bit2 is set:
 +
** u8 +0x8A is set to value 2.
 +
** global_flags bit1 set:
 +
*** u8 +0x8B is set to value 1.
 +
** Otherwise, if global_flags bit2 is set:
 +
*** u8 +0x8B is set to value 2.
    
= ScanResult =
 
= ScanResult =

Navigation menu