Line 128: |
Line 128: |
| | 104 || [5.0.0+] [[#SetWirelessControllerRestriction]] | | | 104 || [5.0.0+] [[#SetWirelessControllerRestriction]] |
| |- | | |- |
− | | 105 || [13.1.0+] SetBluetoothAudioDeviceConnectableMode | + | | 105 || [13.1.0+] [[#SetBluetoothAudioDeviceConnectableMode]] |
| |- | | |- |
| | 106 || [18.0.0+] | | | 106 || [18.0.0+] |
Line 170: |
Line 170: |
| | 403 || [7.0.0+] [[#InitializeSystem2]] | | | 403 || [7.0.0+] [[#InitializeSystem2]] |
| |- | | |- |
− | | 500 || [18.0.0+] | + | | 500 || [18.0.0+] EnableActionFrame |
| |- | | |- |
− | | 501 || [18.0.0+] | + | | 501 || [18.0.0+] DisableActionFrame |
| |- | | |- |
− | | 502 || [18.0.0+] | + | | 502 || [18.0.0+] SendActionFrame |
| |- | | |- |
− | | 503 || [18.0.0+] | + | | 503 || [18.0.0+] RecvActionFrame |
| |- | | |- |
− | | 505 || [18.0.0+] | + | | 505 || [18.0.0+] SetHomeChannel |
| |- | | |- |
− | | 600 || [18.0.0+] | + | | 600 || [18.0.0+] SetTxPower |
| |- | | |- |
− | | 601 || [18.0.0+] | + | | 601 || [18.0.0+] ResetTxPower |
| |} | | |} |
| | | |
| === GetState === | | === GetState === |
− | No input, returns an output u32. | + | No input, returns an output [[#State]]. |
| | | |
| sdknso implements this by <code>return</code>ing the u32, with 0 being returned on error / when service isn't initialized. | | sdknso implements this by <code>return</code>ing the u32, with 0 being returned on error / when service isn't initialized. |
− |
| |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Value
| |
− | ! Description
| |
− | |-
| |
− | | 0 || None
| |
− | |-
| |
− | | 1 || Initialized
| |
− | |-
| |
− | | 2 || AccessPointOpened
| |
− | |-
| |
− | | 3 || AccessPointCreated
| |
− | |-
| |
− | | 4 || StationOpened
| |
− | |-
| |
− | | 5 || StationConnected
| |
− | |-
| |
− | | 6 || Error
| |
− | |-
| |
− | |}
| |
| | | |
| === GetNetworkInfo === | | === GetNetworkInfo === |
Line 218: |
Line 197: |
| | | |
| === GetDisconnectReason === | | === GetDisconnectReason === |
− | No input, returns an output s16. | + | No input, returns an output [[#DisconnectReason]]. |
| | | |
| sdknso implements this by <code>return</code>ing the s16 as a s32, with -1 being returned on error. | | sdknso implements this by <code>return</code>ing the s16 as a s32, with -1 being returned on error. |
− |
| |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Value
| |
− | ! Description
| |
− | |-
| |
− | | -1 || See above.
| |
− | |-
| |
− | | 0 || None
| |
− | |-
| |
− | | 1 || User
| |
− | |-
| |
− | | 2 || SystemRequest
| |
− | |-
| |
− | | 3 || DestroyedByAdmin
| |
− | |-
| |
− | | 4 || DestroyedBySystemRequest
| |
− | |-
| |
− | | 5 || Admin
| |
− | |-
| |
− | | 6 || SignalLost
| |
− | |}
| |
| | | |
| === GetSecurityParameter === | | === GetSecurityParameter === |
Line 286: |
Line 243: |
| | | |
| The input value is written into state. | | The input value is written into state. |
| + | |
| + | === SetBluetoothAudioDeviceConnectableMode === |
| + | Takes an input [[#BluetoothAudioDeviceConnectableMode]], no output. |
| | | |
| === OpenAccessPoint === | | === OpenAccessPoint === |
Line 468: |
Line 428: |
| | 104 || [5.0.0+] [[#SetWirelessControllerRestriction]] | | | 104 || [5.0.0+] [[#SetWirelessControllerRestriction]] |
| |- | | |- |
− | | 105 || [13.1.0+] SetBluetoothAudioDeviceConnectableMode | + | | 105 || [13.1.0+] [[#SetBluetoothAudioDeviceConnectableMode]] |
| |- | | |- |
| | 106 || [18.0.0+] | | | 106 || [18.0.0+] |
Line 508: |
Line 468: |
| | 402 || [7.0.0+] [[#Initialize2]] | | | 402 || [7.0.0+] [[#Initialize2]] |
| |- | | |- |
− | | 500 || [18.0.0+] | + | | 500 || [18.0.0+] EnableActionFrame |
| |- | | |- |
− | | 501 || [18.0.0+] | + | | 501 || [18.0.0+] DisableActionFrame |
| |- | | |- |
− | | 502 || [18.0.0+] | + | | 502 || [18.0.0+] SendActionFrame |
| |- | | |- |
− | | 503 || [18.0.0+] | + | | 503 || [18.0.0+] RecvActionFrame |
| |- | | |- |
− | | 505 || [18.0.0+] | + | | 505 || [18.0.0+] SetHomeChannel |
| |- | | |- |
− | | 600 || [18.0.0+] | + | | 600 || [18.0.0+] SetTxPower |
| |- | | |- |
− | | 601 || [18.0.0+] | + | | 601 || [18.0.0+] ResetTxPower |
| |} | | |} |
| | | |
Line 869: |
Line 829: |
| === Initialize === | | === Initialize === |
| Returns 0. | | Returns 0. |
| + | |
| + | = State = |
| + | This is "nn::ldn::State". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value |
| + | ! Description |
| + | |- |
| + | | 0 || None |
| + | |- |
| + | | 1 || Initialized |
| + | |- |
| + | | 2 || AccessPoint |
| + | |- |
| + | | 3 || AccessPointCreated |
| + | |- |
| + | | 4 || Station |
| + | |- |
| + | | 5 || StationConnected |
| + | |- |
| + | | 6 || Error |
| + | |- |
| + | |} |
| | | |
| = Ipv4Address = | | = Ipv4Address = |
Line 893: |
Line 877: |
| ! Description | | ! Description |
| |- | | |- |
− | | 0x0 || 0x1 || Length excluding NUL-terminator, must be 0x1-0x20. | + | | 0x0 || 0x1 || Length (excluding NUL-terminator, must be 0x1-0x20) |
| |- | | |- |
− | | 0x1 || 0x21 || SSID string including NUL-terminator, str[{above length}] must be 0. | + | | 0x1 || 0x21 || Raw (SSID string including NUL-terminator, str[{above length}] must be 0) |
| |} | | |} |
| | | |
Line 987: |
Line 971: |
| | 0x4C || 0x10 || Cleared to zero for the tmp struct. | | | 0x4C || 0x10 || Cleared to zero for the tmp struct. |
| |- | | |- |
− | | 0x5C || 0x4 || Flags. Masked with 0x37 for [[#Scan]], with [[#ScanPrivate]] this is masked with 0x3F. | + | | 0x5C || 0x4 || [[#ScanFilterFlag|Flag]] (masked with 0x37 for [[#Scan]], with [[#ScanPrivate]] this is masked with 0x3F) |
| |} | | |} |
| | | |
− | Flags:
| + | = ScanFilterFlag = |
| + | This is "nn::ldn::ScanFilterFlag". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
− | ! Bit | + | ! Value |
− | ! Description | + | ! Description |
| + | |- |
| + | | 0x0 || None |
| + | |- |
| + | | 0x1 || LocalCommunicationId |
| + | |- |
| + | | 0x2 || SessionId |
| + | |- |
| + | | 0x4 || NetworkType |
| |- | | |- |
− | | 0 || When set, enables using ScanFilter+0. | + | | 0x8 || Bssid |
| |- | | |- |
− | | 1 || When set, enables using ScanFilter+0x10. | + | | 0x10 || Ssid |
| |- | | |- |
− | | 2 || When set, enables using ScanFilter+0x20. | + | | 0x20 || SceneId |
| |- | | |- |
− | | 3 || When set, enables using the ScanFilter [[#MacAddress|MacAddress]]. | + | | 0x21 || IntentId |
| |- | | |- |
− | | 4 || When set, enables using the ScanFilter [[#Ssid]]. | + | | 0x23 || NetworkId |
| |- | | |- |
− | | 5 || When set, enables using ScanFilter+0xA. | + | | 0x3F || All |
| |} | | |} |
| | | |
Line 1,064: |
Line 1,057: |
| ! Description | | ! Description |
| |- | | |- |
− | | 0 || | + | | 0 || Disabled |
| + | |- |
| + | | 1 || Enabled |
| + | |} |
| + | |
| + | = BluetoothAudioDeviceConnectableMode = |
| + | This is "nn::ldn::BluetoothAudioDeviceConnectableMode". This is an u32 enum. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value |
| + | ! Description |
| + | |- |
| + | | 0 || Disabled |
| + | |- |
| + | | 1 || Enabled |
| + | |} |
| + | |
| + | = SecurityMode = |
| + | This is "nn::ldn::SecurityMode". This is an u32 enum. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value |
| + | ! Description |
| + | |- |
| + | | 0 || Any |
| |- | | |- |
− | | 1 || This is the default. | + | | 1 || Product |
| + | |- |
| + | | 2 || Debug |
| + | |- |
| + | | 3 || SystemDebug |
| |} | | |} |
| | | |
Line 1,078: |
Line 1,101: |
| ! Description | | ! Description |
| |- | | |- |
− | | 0x0 || 0x2 || Type, a default of value 1 can be used here. Overwritten by [[#CreateNetwork]]/[[#CreateNetworkPrivate]] and [[#Connect]]/[[#ConnectPrivate]]. The value used internally by these cmds must be 1-3. | + | | 0x0 || 0x2 || [[#SecurityMode|SecurityMode]] (overwritten by [[#CreateNetwork]]/[[#CreateNetworkPrivate]] and [[#Connect]]/[[#ConnectPrivate]], the value used internally by these cmds must be 1-3) |
| |- | | |- |
− | | 0x2 || 0x2 || Data size. Must be 0x10-0x40. | + | | 0x2 || 0x2 || PassphraseSize (must be 0x10-0x40) |
| |- | | |- |
− | | 0x4 || 0x40 || Data, used with key derivation. | + | | 0x4 || 0x40 || Passphrase (used with key derivation) |
| |} | | |} |
| | | |
Line 1,101: |
Line 1,124: |
| ! Description | | ! Description |
| |- | | |- |
− | | 0x0 || 0x10 || Data, used with the same key derivation as [[#SecurityConfig]]. | + | | 0x0 || 0x10 || ServerRandom (used with the same key derivation as [[#SecurityConfig]]) |
| |- | | |- |
− | | 0x10 || 0x10 || NetworkId, see [[#NetworkInfo]]. | + | | 0x10 || 0x10 || [[#SessionId|SessionId]] |
| + | |} |
| + | |
| + | = SessionId = |
| + | This is "nn::ldn::SessionId". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 || 0x10 || Random |
| |} | | |} |
| | | |
Line 1,117: |
Line 1,152: |
| ! Description | | ! Description |
| |- | | |- |
− | | 0x0 || 0x20 || NUL-terminated string for the user nickname. | + | | 0x0 || 0x21 || UserName (NUL-terminated string for the user nickname) |
| |- | | |- |
− | | 0x20 || 0x10 || Cleared to zero during the copy. | + | | 0x21 || 0xF || Reserved (cleared to zero during the copy) |
| |} | | |} |
| | | |
Line 1,135: |
Line 1,170: |
| | 0x4 || 0x6 || [[#MacAddress|MacAddress]] | | | 0x4 || 0x6 || [[#MacAddress|MacAddress]] |
| |- | | |- |
− | | 0xA || 0x2 || Padding | + | | 0xA || 0x2 || Reserved |
| |} | | |} |
| | | |
Line 1,146: |
Line 1,181: |
| ! Description | | ! Description |
| |- | | |- |
− | | 0 || Allow all. | + | | 0 || AlwaysAccept |
| |- | | |- |
− | | 1 || Deny all. | + | | 1 || AlwaysReject |
| |- | | |- |
− | | 2 || Blacklist, addresses in the [[#AddAcceptFilterEntry|list]] are not allowed. | + | | 2 || BlackList (addresses in the [[#AddAcceptFilterEntry|list]] are not allowed) |
| |- | | |- |
− | | 3 || Whitelist, only addresses in the [[#AddAcceptFilterEntry|list]] are allowed. | + | | 3 || WhiteList (only addresses in the [[#AddAcceptFilterEntry|list]] are allowed) |
| |} | | |} |
| | | |
Line 1,173: |
Line 1,208: |
| | 0x4 || 0x6 || [[#MacAddress|MacAddress]] | | | 0x4 || 0x6 || [[#MacAddress|MacAddress]] |
| |- | | |- |
− | | 0xA || 0x1 || s8 ID / index | + | | 0xA || 0x1 || NodeId |
| |- | | |- |
| | 0xB || 0x1 || IsConnected | | | 0xB || 0x1 || IsConnected |
| |- | | |- |
− | | 0xC || 0x20 || First 0x20-bytes of [[#UserConfig]]. | + | | 0xC || 0x21 || UserName (first 0x21-bytes of [[#UserConfig]]) |
| |- | | |- |
− | | 0x2C || 0x2 || Reserved | + | | 0x2D || 0x1 || Reserved |
| |- | | |- |
− | | 0x2E || 0x2 || s16 LocalCommunicationVersion | + | | 0x2E || 0x2 || LocalCommunicationVersion |
| |- | | |- |
| | 0x30 || 0x10 || Reserved | | | 0x30 || 0x10 || Reserved |
Line 1,194: |
Line 1,229: |
| | | |
| This must be <=0x1, besides this validation ConnectOption is ignored by [[#Connect]]/[[#ConnectPrivate]]. | | This must be <=0x1, besides this validation ConnectOption is ignored by [[#Connect]]/[[#ConnectPrivate]]. |
| + | |
| + | = DisconnectReason = |
| + | This is "nn::ldn::DisconnectReason". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value |
| + | ! Description |
| + | |- |
| + | | -1 || Unknown |
| + | |- |
| + | | 0 || None |
| + | |- |
| + | | 1 || DisconnectedByUser |
| + | |- |
| + | | 2 || DisconnectedBySystem |
| + | |- |
| + | | 3 || DestroyedByUser |
| + | |- |
| + | | 4 || DestroyedBySystem |
| + | |- |
| + | | 5 || Rejected |
| + | |- |
| + | | 6 || SignalLost |
| + | |} |
| | | |
| = OperationMode = | | = OperationMode = |
Line 1,207: |
Line 1,267: |
| ! Description | | ! Description |
| |- | | |- |
− | | 0 || This is the default. | + | | 0 || Stable |
| |- | | |- |
− | | 1 || | + | | 1 || HighSpeed |
| |} | | |} |
| | | |
Line 1,313: |
Line 1,373: |
| ** All string characters which were already written are summed same way as above. Then: <code>return character_lookup_table[sum % 0x2B];</code> (If the length passed to this function is 0, this will instead just return character_lookup_table[0]) | | ** All string characters which were already written are summed same way as above. Then: <code>return character_lookup_table[sum % 0x2B];</code> (If the length passed to this function is 0, this will instead just return character_lookup_table[0]) |
| *** character_lookup_table contains 0x2B entries: [V-A][k-a][5-0][Z-W]. | | *** character_lookup_table contains 0x2B entries: [V-A][k-a][5-0][Z-W]. |
− |
| |
− |
| |
| | | |
| loaded_flags are first loaded from elsewhere, then masked with the above flags when available. loaded_flags are used when +0x8A is 0. global_flags are loaded from global data. These flags are only used with [[#CreateGroup]]/[[#Join]]. Flags (note that the following was updated with [11.0.0+], and differs from below): | | loaded_flags are first loaded from elsewhere, then masked with the above flags when available. loaded_flags are used when +0x8A is 0. global_flags are loaded from global data. These flags are only used with [[#CreateGroup]]/[[#Join]]. Flags (note that the following was updated with [11.0.0+], and differs from below): |