Changes

Jump to navigation Jump to search
no edit summary
Line 1: Line 1:  
= wlan:inf =
 
= wlan:inf =
 
This is "nn::wlan::detail::IInfraManager".
 
This is "nn::wlan::detail::IInfraManager".
 +
 +
This service no longer exists in [15.0.0+].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 6: Line 8:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[#OpenMode]]
+
| 0 || [[#OpenMode|OpenMode]]
 
|-
 
|-
| 1 || [[#CloseMode]]
+
| 1 || [[#CloseMode|CloseMode]]
 
|-
 
|-
| 2 || [[#GetMacAddress]]
+
| 2 || [[#GetMacAddress|GetMacAddress]]
 
|-
 
|-
| 3 || [[#StartScan]]
+
| 3 || [[#StartScan|StartScan]]
 
|-
 
|-
| 4 || [[#StopScan]]
+
| 4 || [[#StopScan|StopScan]]
 
|-
 
|-
| 5 || [[#Connect]]
+
| 5 || [[#Connect|Connect]]
 
|-
 
|-
| 6 || [[#CancelConnect]]
+
| 6 || [[#CancelConnect|CancelConnect]]
 
|-
 
|-
| 7 || [[#Disconnect]]
+
| 7 || [[#Disconnect|Disconnect]]
 
|-
 
|-
| 8 || [[#GetSystemEvent]]
+
| 8 || [[#GetConnectionEvent|GetConnectionEvent]]
 
|-
 
|-
| 9 || [[#GetConnectionStatus]]
+
| 9 || [[#GetConnectionStatus|GetConnectionStatus]]
 
|-
 
|-
| 10 || [[#GetState]]
+
| 10 || [[#GetState|GetState]]
 
|-
 
|-
| 11 || [[#GetScanResult]]
+
| 11 || [[#GetScanResult|GetScanResult]]
 
|-
 
|-
| 12 || [[#GetRssi]]
+
| 12 || [[#GetRssi|GetRssi]]
 
|-
 
|-
| 13 || [[#ChangeRxAntenna]]
+
| 13 || [[#ChangeRxAntenna|ChangeRxAntenna]]
 
|-
 
|-
| 14 || [[#GetFwVersion]]
+
| 14 || [[#GetFwVersion|GetFwVersion]]
 
|-
 
|-
| 15 || [[#RequestSleep]]
+
| 15 || [[#RequestSleep|RequestSleep]]
 
|-
 
|-
| 16 || [[#RequestWakeUp]]
+
| 16 || [[#RequestWakeUp|RequestWakeUp]]
 
|-
 
|-
| 17 || [[#ConnectWithWps]]
+
| 17 || [[#ConnectWithWps|ConnectWithWps]]
 
|-
 
|-
| 18 || [3.0.0+]
+
| 18 || [3.0.0+] [[#GetWakeupReason|GetWakeupReason]]
 
|-
 
|-
| 19 || [3.0.0+]
+
| 19 || [3.0.0+] [[#SetTcpSessionInformation|SetTcpSessionInformation]]
 
|-
 
|-
| 20 || [3.0.0+]
+
| 20 || [3.0.0+] [[#RemoveTcpSessionInformation|RemoveTcpSessionInformation]]
 
|-
 
|-
| 21 || [3.0.0+]
+
| 21 || [3.0.0+] [[#GetWakeupReasonRaw|GetWakeupReasonRaw]]
 
|-
 
|-
| 22 || [3.0.0+]
+
| 22 || [3.0.0+] [[#SetWakeupReasonRaw|SetWakeupReasonRaw]]
 
|-
 
|-
| 23 || [3.0.0+]
+
| 23 || [3.0.0+] [[#EnableWowlFeatures|EnableWowlFeatures]]
 
|-
 
|-
| 24 || [3.0.0+]
+
| 24 || [3.0.0+] [[#GetWowlStats|GetWowlStats]]
 
|-
 
|-
| 25 || [3.0.0+]
+
| 25 || [3.0.0+] [[#ClearWowlStats|ClearWowlStats]]
 
|-
 
|-
| 26 || [4.0.0+]
+
| 26 || [4.0.0+] [[#EmulateDriverInitFail|EmulateDriverInitFail]]
 
|-
 
|-
| 27 || [4.0.0+]
+
| 27 || [4.0.0+] [[#GetAllowedChannels|GetAllowedChannels]]
 
|-
 
|-
| 28 || [5.0.0+] [[#InitializeWlan]]
+
| 28 || [5.0.0+] [[#InitializeWlan|InitializeWlan]]
 
|-
 
|-
| 29 || [7.0.0+] [[#FinalizeWlan]]
+
| 29 || [7.0.0+] [[#FinalizeWlan|FinalizeWlan]]
 
|-
 
|-
| 30 || [8.0.0+]
+
| 30 || [8.0.0+] [[#SetWowlDelayedWakeTime|SetWowlDelayedWakeTime]]
 
|-
 
|-
| 31 || [11.0.0+]
+
| 31 || [11.0.0+] [[#StartConcurrentCommunication|StartConcurrentCommunication]]
 
|-
 
|-
| 32 || [11.0.0+]
+
| 32 || [11.0.0+] [[#StopConcurrentCommunication|StopConcurrentCommunication]]
 
|-
 
|-
| 33 || [11.0.0+]
+
| 33 || [11.0.0+] [[#SendConcurrentData|SendConcurrentData]]
 
|-
 
|-
| 34 || [11.0.0+]
+
| 34 || [11.0.0+] [[#RecvConcurrentData|RecvConcurrentData]]
 
|-
 
|-
| 35 || [11.0.0+]
+
| 35 || [11.0.0+] [[#CancelRecvConcurrentData|CancelRecvConcurrentData]]
 
|-
 
|-
| 36 || [11.0.0+]
+
| 36 || [11.0.0+] [[#SetConcurrentCycle|SetConcurrentCycle]]
 
|-
 
|-
| 37 || [11.0.0+]
+
| 37 || [11.0.0+] [[#SetConcurrentDataRate|SetConcurrentDataRate]]
 
|-
 
|-
| 38 || [13.0.0+] [[#SetDfrts]]
+
| 38 || [13.0.0+] [[#SetPowerSaveMode|SetPowerSaveMode]]
 
|}
 
|}
  −
[4.0.0+] Connect now takes an additional 4-bytes of input.
  −
  −
[5.0.0+] Cmd24 now returns a total of 0x58-bytes of output instead of 0x5C.
  −
  −
[7.0.0+] Input/output for cmds 27/28 were swapped, perhaps these cmds were swapped?
      
== OpenMode ==
 
== OpenMode ==
Line 114: Line 110:  
== StartScan ==
 
== StartScan ==
 
Takes a type-0x15 input buffer buffer containing a [[#ScanRequest]]. No output.  
 
Takes a type-0x15 input buffer buffer containing a [[#ScanRequest]]. No output.  
 +
 +
[15.0.0+] Now takes a type-0x19 input buffer instead of a type-0x15 input buffer.
    
Sends command messages 0xA (SetWlanInterfaceUpDown) and 0x14 (ScanRequest) to the state machine.
 
Sends command messages 0xA (SetWlanInterfaceUpDown) and 0x14 (ScanRequest) to the state machine.
Line 128: Line 126:  
== Connect ==
 
== Connect ==
 
Takes an input [[#ConnectParam]]. No output.
 
Takes an input [[#ConnectParam]]. No output.
 +
 +
[4.0.0+] Now takes an additional 4-bytes of input.
    
Sends command messages 0xA (SetWlanInterfaceUpDown), 0x11 (SetBeaconLostTimeout) and 0x20 (JoinNetworkSta) to the state machine.
 
Sends command messages 0xA (SetWlanInterfaceUpDown), 0x11 (SetBeaconLostTimeout) and 0x20 (JoinNetworkSta) to the state machine.
Line 147: Line 147:  
This is used by [[Network_Interface_services|nifm]].
 
This is used by [[Network_Interface_services|nifm]].
   −
== GetSystemEvent ==
+
== GetConnectionEvent ==
 
Takes an input u32 '''SystemEventType'''. Returns an output Event handle.
 
Takes an input u32 '''SystemEventType'''. Returns an output Event handle.
   Line 200: Line 200:  
== RequestSleep ==
 
== RequestSleep ==
 
No input/output.
 
No input/output.
 +
 +
[15.0.0+] This had various changes.
    
Sends command messages 0x24 (DisconnectRequest), 0x34 (RequestSleep), 0x3D and 0x3E to the state machine.
 
Sends command messages 0x24 (DisconnectRequest), 0x34 (RequestSleep), 0x3D and 0x3E to the state machine.
 +
 +
First message GetState is sent, if state is 0x3 it does the following:
 +
 +
* Sends message 0x3D. If successful and the output u8 is 0, this then does the following:
 +
** Uses GetState to check for state 0x2/0x3. On success message DisconnectRequest is sent. If state is invalid or the command message failed, this will Abort.
 +
** Uses GetState to check for state 0x1/0x2/0xA. On success message 0x9A with param=0 is sent. If state is invalid or the command message failed, this will Abort.
 +
 +
Then message RequestSleep is sent. If the Result is not 0x146B (including success), it returns the Result. Otherwise when the Result is that value, it does the following:
 +
 +
* Sends message 0x3E.
 +
** Uses GetState to check for state 0x2/0x3. On success message DisconnectRequest is sent. If state is invalid or the command message failed, this will Abort.
 +
** Uses GetState to check for state 0x1/0x2/0xA. On success message 0x9A with param=0 is sent. If state is invalid or the command message failed, this will Abort.
 +
** Then this cmpl impl func will return the Result from calling itself.
    
This is used by [[Network_Interface_services|nifm]].
 
This is used by [[Network_Interface_services|nifm]].
Line 207: Line 222:  
== RequestWakeUp ==
 
== RequestWakeUp ==
 
No input/output.
 
No input/output.
 +
 +
[15.0.0+] This had various changes.
    
Sends command messages 0x1 (InitalizeWlanDriver), 0x24 (DisconnectRequest), 0x35 (RequestWakeUp), 0x3E, 0x80 (GetState) and 0x81 (GetStateBeforeSleep) to the state machine.
 
Sends command messages 0x1 (InitalizeWlanDriver), 0x24 (DisconnectRequest), 0x35 (RequestWakeUp), 0x3E, 0x80 (GetState) and 0x81 (GetStateBeforeSleep) to the state machine.
 +
 +
First message GetState is sent, returning 0 if state is 0xC, or throwing error if it isn't 0xA. Then message RequestWakeUp is sent, if successful then message 0x3E is sent and 0 is returned.
 +
 +
If RequestWakeUp fails it will immediately return the Result, unless the Result is one of the following:
 +
* 0xE86B (normal non-wowl codepath was previously used during RequestSleep): Sends message InitalizeWlanDriver, returning a Result on failure. Then message GetStateBeforeSleep is sent. If the output state is 0x1, it returns 0. If not 0x2 or the second output field is non-zero, it will Abort. Uses GetState to verify the state is valid, returning the Result from that on failure. Otherwise this will return the Result from sending command request 0x99 with param=0.
 +
* 0xE66B: Sends message 0x3E. Uses GetState to verify the state is valid, when valid then message DisconnectRequest is sent. If state-validation/DisconnectRequest failed this will Abort, otherwise this then returns 0.
    
This is used by [[Network_Interface_services|nifm]].
 
This is used by [[Network_Interface_services|nifm]].
Line 219: Line 242:  
This is not used on retail.
 
This is not used on retail.
   −
== Cmd18 ==
+
== GetWakeupReason ==
No input, returns an output u32.
+
No input. Returns an output u32.
    
Sends command message 0x80 (GetState) to the state machine, to check current state. Sends command message 0x36 to the state machine to get a value from state, which is then passed to a vfunc call. That func checks bits in the input to determine what value to return, which is then written to the output u32.
 
Sends command message 0x80 (GetState) to the state machine, to check current state. Sends command message 0x36 to the state machine to get a value from state, which is then passed to a vfunc call. That func checks bits in the input to determine what value to return, which is then written to the output u32.
Line 226: Line 249:  
This is not used on retail.
 
This is not used on retail.
   −
== Cmd19 ==
+
== SetTcpSessionInformation ==
Takes a [[#MacAddress]], 3 u16s, 3 u32s, no output.
+
Takes an input [[#MacAddress]], three input u16s '''SrcPort''', '''DstPort''' and '''Unk0''', and three input u32s '''SrcIp''', '''DstIp''' and '''Unk1'''. No output.
   −
This copies the input data into state, and sets a flag in state. The input is written into state with the following structure: [[#MacAddress]], u32[0], u32[1], u16[0], u16[1], u32[2], u16[2].
+
This copies the input data into state, and sets a flag in state. The input is written into state with the following structure: [[#MacAddress]], '''SrcIp''', '''DstIp''', '''SrcPort''', '''DstPort''', '''Unk1''', '''Unk0'''.
   −
This data is used during RequestSleep if a state field is set for using it (the codepath using this will throw an error if this data was not set). This data is cleared afterwards regardless of whether it was used. This is used for configuring various config related to wowl/tcpka/etc (wake-on-WLAN/TCP keep-alive). Note that an error is thrown if "wowl_activate" isn't set but sysmodule-side doesn't do so - this seems to be set automatically at some point.
+
This data is used during RequestSleep if a state field is set for using it (the codepath using this will throw an error if this data was not set). This data is cleared afterwards unless sleep was successfully entered with wowl. This is also cleared during RequestWakeUp. This is used for configuring various config related to wowl/tcpka/etc (wake-on-WLAN/TCP keep-alive). Note that an error is thrown if "wowl_activate" isn't set but sysmodule-side doesn't do so - this seems to be set automatically at some point.
    
This is used by [[Network_Interface_services|nifm]].
 
This is used by [[Network_Interface_services|nifm]].
   −
== Cmd20 ==
+
== RemoveTcpSessionInformation ==
 
No input/output.
 
No input/output.
   −
This clears the state set by [[#Cmd19]].
+
This clears the state set by [[#SetTcpSessionInformation]].
    
This is not used on retail.
 
This is not used on retail.
   −
== Cmd21 ==
+
== GetWakeupReasonRaw ==
No input, returns an output u32.
+
No input. Returns an output u32.
   −
Same as [[#Cmd18]] except the value from the request is returned directly, without calling the vfunc.
+
Same as [[#GetWakeupReason]] except the value from the request is returned directly, without calling the vfunc.
    
This is not used on retail.
 
This is not used on retail.
   −
== Cmd22 ==
+
== SetWakeupReasonRaw ==
Takes an input u32, no output.
+
Takes an input u32. No output.
   −
Same as [[#Cmd21]] except this uses message 0x37 with the input u32. This is handled by writing the u32 into a global field (default value is 0xBC), which is used during configuration for [[#Cmd19|"wowl"]].
+
Same as [[#GetWakeupReasonRaw]] except this uses message 0x37 with the input u32. This is handled by writing the u32 into a global field (default value is 0xBC), which is used during configuration for [[#SetTcpSessionInformation|"wowl"]].
    
This is not used on retail.
 
This is not used on retail.
   −
== Cmd23 ==
+
== EnableWowlFeatures ==
Takes an input u32, no output.
+
Takes an input u32. No output.
   −
Sends command message 0x38 to the state machine. This is handled by writing the input value into a global flags field. The default value is 0x3 (all flag bits set). These flag bits are checked during the RequestSleep code handling the state for [[#Cmd19]].
+
Sends command message 0x38 to the state machine. This is handled by writing the input value into a global flags field. The default value is 0x3 (all flag bits set). These flag bits are checked during the RequestSleep code handling the state for [[#SetTcpSessionInformation]].
    
This is not used on retail.
 
This is not used on retail.
   −
== Cmd24 ==
+
== GetWowlStats ==
No input, returns a 0x20-byte struct and a 0x38-byte struct.
+
No input. Returns a [[#WakeUpStats]] and a [[#SleepStats]].
 +
 
 +
[5.0.0+] Now returns a total of 0x58-bytes of output instead of 0x5C.
    
Sends command message 0x39 to the state machine, with 0x20-bytes from the output being copied to the first output struct. Sends command message 0x3A to the state machine, with 0x38-bytes from the output being copied to the second output struct.
 
Sends command message 0x39 to the state machine, with 0x20-bytes from the output being copied to the first output struct. Sends command message 0x3A to the state machine, with 0x38-bytes from the output being copied to the second output struct.
Line 272: Line 297:  
This is not used on retail.
 
This is not used on retail.
   −
== Cmd25 ==
+
== ClearWowlStats ==
Takes two input bools, no output.
+
Takes two input bools. No output.
    
When the first bool flag is set, sends command message 0x3B to the state machine. When the second bool flag is set, sends command message 0x3C to the state machine. Then 0 is returned.
 
When the first bool flag is set, sends command message 0x3B to the state machine. When the second bool flag is set, sends command message 0x3C to the state machine. Then 0 is returned.
   −
Both requests are handled by clearing various data in state.
+
Both requests are handled by clearing various data in state. The first request clears the first state struct returned by [[#GetWowlStats]], likewise with the second request and the second state struct from [[#GetWowlStats]].
    
This is not used on retail.
 
This is not used on retail.
   −
== Cmd26 ==
+
== EmulateDriverInitFail ==
 
No input/output.
 
No input/output.
   Line 290: Line 315:  
This is not used on retail.
 
This is not used on retail.
   −
== Cmd27 ==
+
== GetAllowedChannels ==
Takes a type-0xA output buffer containing an array of 2-byte entries, returns an output u32 total_out.
+
Takes a type-0xA output buffer containing an array of 2-byte entries. Returns an output u32 total_out.
    
This memcpys data from state into the output buffer, clamped to a maximum of 0x40 entries (nifm hard-codes the count to 0x26).
 
This memcpys data from state into the output buffer, clamped to a maximum of 0x40 entries (nifm hard-codes the count to 0x26).
Line 311: Line 336:  
This is not used on retail.
 
This is not used on retail.
   −
== Cmd30 ==
+
== SetWowlDelayedWakeTime ==
Takes an input s32, no output.
+
Takes an input s32 '''WowlDelayedWakeTime'''. No output.
   −
The input s32 must be <=0xE10 (3600) and >= -1. The input value is written into state, then this returns 0.
+
'''WowlDelayedWakeTime''' must be <=0xE10 (3600) and >= -1. This value is written into state (last field in the state struct also used by [[#SetTcpSessionInformation]], which [[#SetTcpSessionInformation]] doesn't write), then this returns 0.
    
The user-process code using this cmd also has the above bounds check.
 
The user-process code using this cmd also has the above bounds check.
   −
This is used by wlan during RequestSleep from the same code using the state set by [[#Cmd19]].
+
This is used by wlan during RequestSleep from the same code using the state set by [[#SetTcpSessionInformation]].
    
This cmd is used by [[Network_Interface_services|nifm]] with a value from state, prior to using RequestSleep.
 
This cmd is used by [[Network_Interface_services|nifm]] with a value from state, prior to using RequestSleep.
   −
== Cmd31 ==
+
If wificore gets to the point of actually using this for TCP-keep-alive, then it does the following:
 +
* This is only used when the [[#SetTcpSessionInformation|TCP]] connection is RST.
 +
** '''WowlDelayedWakeTime''' is the time in seconds to schedule a timer which will wake the system. 0 will schedule it for immediately.
 +
** -1 will skip scheduling that timer, hence waking the system is disabled when RST is received.
 +
** The wificore also supports -3 for immediately waking the system from the frame-handler, however wlan-sysmodule doesn't allow that.
 +
* Frames where the TCP flags do not match ACK will immediately wake the system, + other wake cause(s).
 +
 
 +
== StartConcurrentCommunication ==
 
No input/output.
 
No input/output.
   Line 329: Line 361:  
This is not used on retail.
 
This is not used on retail.
   −
== Cmd32 ==
+
== StopConcurrentCommunication ==
 
No input/output.
 
No input/output.
   Line 336: Line 368:  
This is not used on retail.
 
This is not used on retail.
   −
== Cmd33 ==
+
== SendConcurrentData ==
Takes an input [[#MacAddress]] and a type-0x5 input buffer, no output.
+
Takes an input [[#MacAddress]] and a type-0x5 input buffer. No output.
    
Stubbed, just returns an error.
 
Stubbed, just returns an error.
Line 343: Line 375:  
This is not used on retail.
 
This is not used on retail.
   −
== Cmd34 ==
+
== RecvConcurrentData ==
Takes a type-0x6 output buffer and returns a total of 0x10-bytes.
+
Takes a type-0x6 output buffer. Returns a total of 0x10-bytes.
    
Stubbed, just returns an error.
 
Stubbed, just returns an error.
Line 350: Line 382:  
This is not used on retail.
 
This is not used on retail.
   −
== Cmd35 ==
+
== CancelRecvConcurrentData ==
 
No input/output.
 
No input/output.
   Line 357: Line 389:  
This is not used on retail.
 
This is not used on retail.
   −
== Cmd36 ==
+
== SetConcurrentCycle ==
Takes two input u64s, no output.
+
Takes two input u64s. No output.
    
Stubbed, just returns an error.
 
Stubbed, just returns an error.
Line 364: Line 396:  
This is not used on retail.
 
This is not used on retail.
   −
== Cmd37 ==
+
== SetConcurrentDataRate ==
Takes an input u32, no output.
+
Takes an input u32. No output.
    
Stubbed, just returns an error.
 
Stubbed, just returns an error.
Line 371: Line 403:  
This is not used on retail.
 
This is not used on retail.
   −
== SetDfrts ==
+
== SetPowerSaveMode ==
Unofficial name.
+
Takes an input u32 '''Mode'''. No output.
   −
Takes an input u32 '''Mode'''. No output.
+
[15.0.0+] Now takes an input u8 instead of an input u32.
    
'''Mode''' must be 0 or 1.
 
'''Mode''' must be 0 or 1.
Line 413: Line 445:  
= wlan:lcl =
 
= wlan:lcl =
 
This is "nn::wlan::detail::ILocalManager".
 
This is "nn::wlan::detail::ILocalManager".
 +
 +
This service no longer exists in [15.0.0+].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 418: Line 452:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || OpenMasterMode
+
| 0 || [9.0.0+] [[#OpenMode_2|OpenMode]] ([1.0.0-8.1.0] [[#OpenMasterMode|OpenMasterMode]])
 
|-
 
|-
| 1 || CloseMasterMode
+
| 1 || [9.0.0+] [[#CloseMode_2|CloseMode]] ([1.0.0-8.1.0] [[#CloseMasterMode|CloseMasterMode]])
 
|-
 
|-
| 2 || OpenClientMode
+
| 2 || [9.0.0+] [[#GetMacAddress_2|GetMacAddress]] ([1.0.0-8.1.0] [[#OpenClientMode|OpenClientMode]])
 
|-
 
|-
| 3 || CloseClientMode
+
| 3 || [9.0.0+] [[#CreateBss|CreateBss]] ([1.0.0-8.1.0] [[#CloseClientMode|CloseClientMode]])
 
|-
 
|-
| 4 || OpenSpectatorMode
+
| 4 || [9.0.0+] [[#DestroyBss|DestroyBss]] ([1.0.0-8.1.0] [[#OpenSpectatorMode|OpenSpectatorMode]])
 
|-
 
|-
| 5 || CloseSpectatorMode
+
| 5 || [9.0.0+] [[#StartScan_2|StartScan]] ([1.0.0-8.1.0] [[#CloseSpectatorMode|CloseSpectatorMode]])
 
|-
 
|-
| 6 || GetMacAddress
+
| 6 || [9.0.0+] [[#StopScan_2|StopScan]] ([1.0.0-8.1.0] [[#GetMacAddress_2|GetMacAddress]])
 
|-
 
|-
| 7 || CreateBss
+
| 7 || [9.0.0+] [[#Connect_2|Connect]] ([1.0.0-8.1.0] [[#CreateBss|CreateBss]])
 
|-
 
|-
| 8 || DestroyBss
+
| 8 || [9.0.0+] [[#CancelConnect_2|CancelConnect]] ([1.0.0-8.1.0] [[#DestroyBss|DestroyBss]])
 
|-
 
|-
| 9 || StartScan
+
| 9 || [9.0.0+] [[#Join|Join]] ([1.0.0-8.1.0] [[#StartScan_2|StartScan]])
 
|-
 
|-
| 10 || StopScan
+
| 10 || [9.0.0+] [[#CancelJoin|CancelJoin]] ([1.0.0-8.1.0] [[#StopScan_2|StopScan]])
 
|-
 
|-
| 11 || Connect
+
| 11 || [9.0.0+] [[#Disconnect_2|Disconnect]] ([1.0.0-8.1.0] [[#Connect_2|Connect]])
 
|-
 
|-
| 12 || CancelConnect
+
| 12 || [9.0.0+] [[#SetBeaconLostCount|SetBeaconLostCount]] ([1.0.0-8.1.0] [[#CancelConnect_2|CancelConnect]])
 
|-
 
|-
| 13 || Join
+
| 13 || [9.0.0+] [[#GetSystemEvent_2|GetSystemEvent]] ([1.0.0-8.1.0] [[#Join|Join]])
 
|-
 
|-
| 14 || CancelJoin
+
| 14 || [9.0.0+] [[#GetConnectionStatus_2|GetConnectionStatus]] ([1.0.0-8.1.0] [[#CancelJoin|CancelJoin]])
 
|-
 
|-
| 15 || Disconnect
+
| 15 || [9.0.0+] [[#GetClientStatus|GetClientStatus]] ([1.0.0-8.1.0] [[#Disconnect_2|Disconnect]])
 
|-
 
|-
| 16 || SetBeaconLostCount
+
| 16 || [9.0.0+] [[#GetBssIndicationEvent|GetBssIndicationEvent]] ([1.0.0-8.1.0] [[#SetBeaconLostCount|SetBeaconLostCount]])
 
|-
 
|-
| 17 || GetSystemEvent
+
| 17 || [9.0.0+] [[#GetBssIndicationInfo|GetBssIndicationInfo]] ([1.0.0-8.1.0] [[#GetSystemEvent_2|GetSystemEvent]])
 
|-
 
|-
| 18 || GetConnectionStatus
+
| 18 || [9.0.0+] [[#GetState_2|GetState]] ([1.0.0-8.1.0] [[#GetConnectionStatus_2|GetConnectionStatus]])
 
|-
 
|-
| 19 || GetClientStatus
+
| 19 || [9.0.0+] [[#GetAllowedChannels|GetAllowedChannels]] ([1.0.0-8.1.0] [[#GetClientStatus|GetClientStatus]])
 
|-
 
|-
| 20 || GetBssIndicationEvent
+
| 20 || [9.0.0+] [[#AddIe|AddIe]] ([1.0.0-8.1.0] [[#GetBssIndicationEvent|GetBssIndicationEvent]])
 
|-
 
|-
| 21 || GetBssIndicationInfo
+
| 21 || [9.0.0+] [[#DeleteIe|DeleteIe]] ([1.0.0-8.1.0] [[#GetBssIndicationInfo|GetBssIndicationInfo]])
 
|-
 
|-
| 22 || GetState
+
| 22 || [9.0.0+] [[#PutFrameRaw|PutFrameRaw]] ([1.0.0-8.1.0] [[#GetState_2|GetState]])
 
|-
 
|-
| 23 || GetAllowedChannels
+
| 23 || [9.0.0+] [[#CancelGetFrame|CancelGetFrame]] ([1.0.0-8.1.0] [[#GetAllowedChannels|GetAllowedChannels]])
 
|-
 
|-
| 24 || AddIe
+
| 24 || [9.0.0+] [[#CreateRxEntry|CreateRxEntry]] ([1.0.0-8.1.0] [[#AddIe|AddIe]])
 
|-
 
|-
| 25 || DeleteIe
+
| 25 || [9.0.0+] [[#DeleteRxEntry|DeleteRxEntry]] ([1.0.0-8.1.0] [[#DeleteIe|DeleteIe]])
 
|-
 
|-
| 26 || PutFrameRaw
+
| 26 || [9.0.0+] [[#AddEthertypeToRxEntry|AddEthertypeToRxEntry]] ([1.0.0-8.1.0] [[#PutFrameRaw|PutFrameRaw]])
 
|-
 
|-
| 27 || CancelGetFrame
+
| 27 || [9.0.0+] [[#DeleteEthertypeFromRxEntry|DeleteEthertypeFromRxEntry]] ([1.0.0-8.1.0] [[#CancelGetFrame|CancelGetFrame]])
 
|-
 
|-
| 28 || CreateRxEntry
+
| 28 || [9.0.0+] [[#AddMatchingDataToRxEntry|AddMatchingDataToRxEntry]] ([1.0.0-8.1.0] [[#CreateRxEntry|CreateRxEntry]])
 
|-
 
|-
| 29 || DeleteRxEntry
+
| 29 || [9.0.0+] [[#RemoveMatchingDataFromRxEntry|RemoveMatchingDataFromRxEntry]] ([1.0.0-8.1.0] [[#DeleteRxEntry|DeleteRxEntry]])
 
|-
 
|-
| 30 || AddEthertypeToRxEntry
+
| 30 || [9.0.0+] [[#GetScanResult_2|GetScanResult]] ([1.0.0-8.1.0] [[#AddEthertypeToRxEntry|AddEthertypeToRxEntry]])
 
|-
 
|-
| 31 || DeleteEthertypeFromRxEntry
+
| 31 || [9.0.0+] [[#PutActionFrameOneShot|PutActionFrameOneShot]] ([1.0.0-8.1.0] [[#DeleteEthertypeFromRxEntry|DeleteEthertypeFromRxEntry]])
 
|-
 
|-
| 32 || AddMatchingDataToRxEntry
+
| 32 || [9.0.0+] [[#SetActionFrameWithBeacon|SetActionFrameWithBeacon]] ([1.0.0-8.1.0] [[#AddMatchingDataToRxEntry|AddMatchingDataToRxEntry]])
 
|-
 
|-
| 33 || RemoveMatchingDataFromRxEntry
+
| 33 || [9.0.0+] [[#CancelActionFrameWithBeacon|CancelActionFrameWithBeacon]] ([1.0.0-8.1.0] [[#RemoveMatchingDataFromRxEntry|RemoveMatchingDataFromRxEntry]])
 
|-
 
|-
| 34 || GetScanResult
+
| 34 || [9.0.0+] [[#CreateRxEntryForActionFrame|CreateRxEntryForActionFrame]] ([1.0.0-8.1.0] [[#GetScanResult_2|GetScanResult]])
 
|-
 
|-
| 35 || PutActionFrameOneShot
+
| 35 || [9.0.0+] [[#DeleteRxEntryForActionFrame|DeleteRxEntryForActionFrame]] ([1.0.0-8.1.0] [[#PutActionFrameOneShot|PutActionFrameOneShot]])
 
|-
 
|-
| 36 || SetActionFrameWithBeacon
+
| 36 || [9.0.0+] [[#AddSubtypeToRxEntryForActionFrame|AddSubtypeToRxEntryForActionFrame]] ([1.0.0-8.1.0] [[#SetActionFrameWithBeacon|SetActionFrameWithBeacon]])
 
|-
 
|-
| 37 || CancelActionFrameWithBeacon
+
| 37 || [9.0.0+] [[#DeleteSubtypeFromRxEntryForActionFrame|DeleteSubtypeFromRxEntryForActionFrame]] ([1.0.0-8.1.0] [[#CancelActionFrameWithBeacon|CancelActionFrameWithBeacon]])
 
|-
 
|-
| 38 || CreateRxEntryForActionFrame
+
| 38 || [9.0.0+] [[#CancelGetActionFrame|CancelGetActionFrame]] ([1.0.0-8.1.0] [[#CreateRxEntryForActionFrame|CreateRxEntryForActionFrame]])
 
|-
 
|-
| 39 || DeleteRxEntryForActionFrame
+
| 39 || [9.0.0+] [[#GetRssi_2|GetRssi]] ([1.0.0-8.1.0] [[#DeleteRxEntryForActionFrame|DeleteRxEntryForActionFrame]])
 
|-
 
|-
| 40 || AddSubtypeToRxEntryForActionFrame
+
| 40 || [9.0.0+] [[#SetMaxAssociationNumber|SetMaxAssociationNumber]] ([1.0.0-8.1.0] [[#AddSubtypeToRxEntryForActionFrame|AddSubtypeToRxEntryForActionFrame]])
 
|-
 
|-
| 41 || DeleteSubtypeFromRxEntryForActionFrame
+
| 41 || [9.0.0+] ([1.0.0-8.1.0] [[#DeleteSubtypeFromRxEntryForActionFrame|DeleteSubtypeFromRxEntryForActionFrame]])
 
|-
 
|-
| 42 || CancelGetActionFrame
+
| 42 || [9.0.0+] ([1.0.0-8.1.0] [[#CancelGetActionFrame|CancelGetActionFrame]])
 
|-
 
|-
| 43 || GetRssi
+
| 43 || [9.0.0+] ([1.0.0-8.1.0] [[#GetRssi_2|GetRssi]])
 
|-
 
|-
| 44 || SetMaxAssociationNumber
+
| 44 || [9.0.0+] ([1.0.0-8.1.0] [[#SetMaxAssociationNumber|SetMaxAssociationNumber]])
 
|-
 
|-
| 45 || [4.0.0+]
+
| 45 || [9.0.0+] ([4.0.0-8.1.0])
 
|-
 
|-
| 46 || [4.0.0+]
+
| 46 || [9.0.0+] ([4.0.0-8.1.0])
 
|-
 
|-
| 47 || [4.0.0+]
+
| 47 || [9.0.0+] ([4.0.0-8.1.0])
 
|-
 
|-
 
| 48 || [10.0.0+] ([4.0.0-8.1.0])
 
| 48 || [10.0.0+] ([4.0.0-8.1.0])
 
|-
 
|-
| 49 || [6.0.0-8.1.0]
+
| 49 || [13.0.0+] ([6.0.0-8.1.0])
|-
  −
| 50 || [6.0.0-8.1.0]
   
|-
 
|-
| 51 || [8.0.0-8.1.0]
+
| 50 || [13.0.0+] ([6.0.0-8.1.0])
 
|-
 
|-
| 52 || [8.0.0-8.1.0]
+
| 51 || [13.0.0+] ([8.0.0-8.1.0])
 
|-
 
|-
| 49 || [13.0.0+]
+
| 52 || ([8.0.0-8.1.0])
|-
  −
| 50 || [13.0.0+]
  −
|-
  −
| 51 || [13.0.0+]
   
|}
 
|}
   −
[4.0.0+] CreateBss, Connect, and Join now takes an additional 4-bytes of input.
+
[5.0.0+] GetAllowedChannels now returns a total of 4-bytes of output instead of 0x50, and now takes a type-0xA output buffer.
 +
 
 +
[10.0.0+] Cmd46 now takes a total of 1-byte of input instead of 6-bytes, while cmd47 now takes a total of 6-bytes of input instead of 1-byte.
 +
 
 +
== OpenMasterMode ==
 +
No input/output.
 +
 
 +
Sends command message 0x7 to the state machine.
 +
 
 +
== CloseMasterMode ==
 +
No input/output.
 +
 
 +
Sends command message 0x5 to the state machine.
 +
 
 +
== OpenClientMode ==
 +
No input/output.
 +
 
 +
Sends command message 0x8 to the state machine.
 +
 
 +
== CloseClientMode ==
 +
No input/output.
 +
 
 +
Sends command message 0x5 to the state machine.
 +
 
 +
== OpenSpectatorMode ==
 +
No input/output.
 +
 
 +
Sends command message 0x9 to the state machine.
 +
 
 +
== CloseSpectatorMode ==
 +
No input/output.
 +
 
 +
Sends command message 0x5 to the state machine.
 +
 
 +
== OpenMode ==
 +
Takes an input u32 '''Mode'''. No output.
 +
 
 +
== CloseMode ==
 +
Takes an input u32 '''Mode'''. No output.
 +
 
 +
== GetMacAddress ==
 +
No input. Returns an output [[#MacAddress]].
 +
 
 +
Sends command message 0x18 (GetMacAddress) to the state machine.
 +
 
 +
== CreateBss ==
 +
Takes an input [[#Bss]]. No output.
 +
 
 +
Sends command messages 0xA (SetWlanInterfaceUpDown) and 0x1E (CreateAp) to the state machine.
 +
 
 +
== DestroyBss ==
 +
No input/output.
 +
 
 +
Sends command message 0x1F (DestroyAp) to the state machine.
 +
 
 +
== StartScan ==
 +
Takes a type-0x15 input buffer buffer containing a [[#ScanRequest]]. No output.
 +
 
 +
Sends command messages 0xA (SetWlanInterfaceUpDown) and 0x14 (ScanRequest) to the state machine.
 +
 
 +
== StopScan ==
 +
No input/output.
 +
 
 +
Sends command message 0x16 (CancelScan) to the state machine.
 +
 
 +
== Connect ==
 +
Takes an input [[#ConnectParam]]. No output.
 +
 
 +
Sends command messages 0xA (SetWlanInterfaceUpDown), 0x11 (SetBeaconLostTimeout), 0xF (SetStaticAesMode) and 0x20 (JoinNetworkSta) to the state machine.
 +
 
 +
== CancelConnect ==
 +
No input/output.
 +
 
 +
Sends command message 0x23 (CancelJoinNetwork) to the state machine.
 +
 
 +
== Join ==
 +
Takes an input [[#ConnectParam]]. No output.
 +
 
 +
Sends command messages 0xA (SetWlanInterfaceUpDown), 0x11 (SetBeaconLostTimeout), 0xF (SetStaticAesMode) and 0x22 (JoinNetworkSpectator) to the state machine.
 +
 
 +
== CancelJoin ==
 +
No input/output.
 +
 
 +
Sends command message 0x23 (CancelJoinNetwork) to the state machine.
 +
 
 +
== Disconnect ==
 +
Takes an input u32 '''Argument''' and an input [[#MacAddress]]. No output.
 +
 
 +
Sends command message 0x25 (DeauthRequest) to the state machine.
 +
 
 +
== SetBeaconLostCount ==
 +
Takes an input u32 '''BeaconLostCount'''. No output.
 +
 
 +
== GetSystemEvent ==
 +
Takes an input u32 '''SystemEventType'''. Returns an output Event handle.
 +
 
 +
== GetConnectionStatus ==
 +
No input. Returns an output [[#ConnectionStatus]].
 +
 
 +
Sends command message 0x80 (GetState) to the state machine, to check current state. Then this copies data from state to output (unrelated to message 0x80).
 +
 
 +
== GetClientStatus ==
 +
Takes a type-0x16 output buffer containing a [[#ClientStatus]]. No output.
 +
 
 +
Sends command message 0x80 (GetState) to the state machine, to check current state.
 +
 
 +
== GetBssIndicationEvent ==
 +
No input. Returns an output Event handle.
 +
 
 +
== GetBssIndicationInfo ==
 +
Takes a type-0x16 output buffer. No output.
 +
 
 +
== GetState ==
 +
No input. Returns an output [[#State]].
 +
 
 +
Sends command message 0x80 (GetState) to the state machine.
 +
 
 +
== GetAllowedChannels ==
 +
Takes a type-0xA output buffer. Returns an output u32 '''AllowedChannelsCount'''.
 +
 
 +
== AddIe ==
 +
Takes a type-0x5 input buffer and an input u32 '''ManagementFrameType'''. Returns an output u32 '''Ie'''.
 +
 
 +
Sends command message 0x28 (AddIe) to the state machine.
 +
 
 +
== DeleteIe ==
 +
Takes an input u32 '''Ie'''. No output.
 +
 
 +
Sends command message 0x29 (DeleteIe) to the state machine.
 +
 
 +
== PutFrameRaw ==
 +
Takes a type-0x5 input buffer. No output.
 +
 
 +
Sends command message 0x80 (GetState) to the state machine, to check current state.
 +
 
 +
== CancelGetFrame ==
 +
Takes an input u32 '''RxId'''. No output.
 +
 
 +
Sends command message 0x80 (GetState) to the state machine, to check current state.
 +
 
 +
== CreateRxEntry ==
 +
Takes a type-0x9 input buffer and an input u32 '''Capacity'''. Returns an output u32 '''RxId'''.
 +
 
 +
== DeleteRxEntry ==
 +
Takes an input u32 '''RxId'''. No output.
 +
 
 +
== AddEthertypeToRxEntry ==
 +
Takes an input u32 '''RxId''' and an input u32 '''Protocol'''. No output.
 +
 
 +
== DeleteEthertypeFromRxEntry ==
 +
Takes an input u16 '''Protocol'''. Returns an output u32.
 +
 
 +
== AddMatchingDataToRxEntry ==
 +
Takes a type-0x19 input buffer and an input u32 '''RxId'''. No output.
 +
 
 +
[15.0.0+] Now takes a total of 0x1C-bytes of input.
 +
 
 +
Sends command message 0x2A (AddMatchingDataInfoToRxEntry) to the state machine.
 +
 
 +
== RemoveMatchingDataFromRxEntry ==
 +
Takes a type-0x19 input buffer and an input u32 '''RxId'''. No output.
 +
 
 +
[15.0.0+] Now takes a total of 0x1C-bytes of input.
 +
 
 +
Sends command message 0x2B (RemoveMatchingDataFromRxEntry) to the state machine.
 +
 
 +
== GetScanResult ==
 +
Takes a type-0x19 input buffer and a type-0x6 output buffer containing a [[#ScanResult]]. No output.
 +
 
 +
Sends command message 0x15 (BssInfoListGet) to the state machine.
 +
 
 +
== PutActionFrameOneShot ==
 +
Takes a type-0x5 input buffer, an input [[#MacAddress]] and two u32s '''Channel''' and '''DwellTime'''. No output.
 +
 
 +
Sends command message 0xA (SetWlanInterfaceUpDown) to the state machine.
 +
 
 +
== SetActionFrameWithBeacon ==
 +
Takes a type-0x5 input buffer. No output.
 +
 
 +
[15.0.0+] Now takes a type-0x21 input buffer instead of a type-0x5 input buffer.
 +
 
 +
Sends command message 0x2C (SetActionFrameWithBeacon) to the state machine.
 +
 
 +
== CancelActionFrameWithBeacon ==
 +
No input/output.
 +
 
 +
Sends command message 0x2D (CancelActionFrameWithBeacon) to the state machine.
 +
 
 +
== CreateRxEntryForActionFrame ==
 +
Takes a type-0x9 input buffer and an input u32 '''Capacity'''. Returns an output u32 '''RxId'''.
 +
 
 +
== DeleteRxEntryForActionFrame ==
 +
Takes an input u32 '''RxId'''. No output.
 +
 
 +
== AddSubtypeToRxEntryForActionFrame ==
 +
Takes an input u32 '''RxId''' and an input u32 '''Subtype'''. No output.
 +
 
 +
== DeleteSubtypeFromRxEntryForActionFrame ==
 +
Takes an input u32 '''Subtype'''. Returns an output u32.
 +
 
 +
== CancelGetActionFrame ==
 +
Takes an input u32 '''RxId'''. No output.
 +
 
 +
Sends command message 0x80 (GetState) to the state machine, to check current state.
 +
 
 +
== GetRssi ==
 +
No input. Returns an output u32 '''Rssi'''.
   −
[5.0.0+] GetAllowedChannels now returns a total of 4-bytes of output instead of 0x50, and now takes a type-0xA output buffer.
+
Sends command message 0x2E (GetRssi) to the state machine.
   −
[9.0.0+] Almost all cmds had input/output changed / cmds moved around (?).
+
== SetMaxAssociationNumber ==
 +
Takes an input u32 '''MaxAssociationNumber'''. No output.
   −
[10.0.0+] Cmd46 now takes a total of 1-byte of input instead of 6-bytes, while cmd47 now takes a total of 6-bytes of input instead of 1-byte.
+
Sends command message 0x31 (SetMaxAssociationNumber) to the state machine.
    
= wlan:lg =
 
= wlan:lg =
 
This is "nn::wlan::detail::ILocalGetFrame".
 
This is "nn::wlan::detail::ILocalGetFrame".
 +
 +
This service no longer exists in [15.0.0+].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 546: Line 783:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || GetFrameRaw
+
| 0 || [[#GetFrameRaw|GetFrameRaw]]
 
|}
 
|}
 +
 +
== GetFrameRaw ==
 +
Takes a type-0x6 output buffer and an input u32 '''RxId'''. Returns an output u32 '''FrameSize'''.
 +
 +
Sends command message 0x80 (GetState) to the state machine, to check current state.
    
= wlan:lga =
 
= wlan:lga =
 
This is "nn::wlan::detail::ILocalGetActionFrame".
 
This is "nn::wlan::detail::ILocalGetActionFrame".
 +
 +
This service no longer exists in [15.0.0+].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 556: Line 800:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || GetActionFrame
+
| 0 || [[#GetActionFrame|GetActionFrame]]
 
|}
 
|}
   −
[5.0.0+] Cmd0 now takes an additional 4-bytes of input, and returns an additional 4-bytes of output.
+
== GetActionFrame ==
 +
Takes a type-0x6 output buffer and an input u32 '''RxId'''. Returns an output [[#MacAddress]] and an output u32 '''ActionFrame'''.
 +
 
 +
[5.0.0+] Now takes another input u32 and returns another output u32.
    
= wlan:sg =
 
= wlan:sg =
 
This is "nn::wlan::detail::ISocketGetFrame".
 
This is "nn::wlan::detail::ISocketGetFrame".
 +
 +
This service no longer exists in [15.0.0+].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 568: Line 817:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || GetFrameRaw
+
| 0 || [[#GetFrameRaw_2|GetFrameRaw]]
 
|}
 
|}
 +
 +
== GetFrameRaw ==
 +
Takes a type-0x6 output buffer and an input u32 '''RxId'''. Returns an output u32 '''FrameSize'''.
    
= wlan:soc =
 
= wlan:soc =
 
This is "nn::wlan::detail::ISocketManager".
 
This is "nn::wlan::detail::ISocketManager".
 +
 +
This service no longer exists in [15.0.0+].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 578: Line 832:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || PutFrameRaw
+
| 0 || [[#PutFrameRaw_2|PutFrameRaw]]
 
|-
 
|-
| 1 || CancelGetFrame
+
| 1 || [[#CancelGetFrame_2|CancelGetFrame]]
 
|-
 
|-
| 2 || CreateRxEntry
+
| 2 || [[#CreateRxEntry_2|CreateRxEntry]]
 
|-
 
|-
| 3 || DeleteRxEntry
+
| 3 || [[#DeleteRxEntry_2|DeleteRxEntry]]
 
|-
 
|-
| 4 || AddEthertypeToRxEntry
+
| 4 || [[#AddEthertypeToRxEntry_2|AddEthertypeToRxEntry]]
 
|-
 
|-
| 5 || DeleteEthertypeFromRxEntry
+
| 5 || [[#DeleteEthertypeFromRxEntry_2|DeleteEthertypeFromRxEntry]]
 
|-
 
|-
| 6 || GetMacAddress
+
| 6 || [[#GetMacAddress_3|GetMacAddress]]
 
|-
 
|-
| 7 || SwitchTsfTimerFunction
+
| 7 || [[#SwitchTsfTimerFunction|SwitchTsfTimerFunction]]
 
|-
 
|-
| 8 || GetDeltaTimeBetweenSystemAndTsf
+
| 8 || [[#GetDeltaTimeBetweenSystemAndTsf|GetDeltaTimeBetweenSystemAndTsf]]
 
|-
 
|-
| 9 || RegisterSharedMemory
+
| 9 || [[#RegisterSharedMemory|RegisterSharedMemory]]
 
|-
 
|-
| 10 || UnregisterSharedMemory
+
| 10 || [[#UnregisterSharedMemory|UnregisterSharedMemory]]
 
|-
 
|-
| 11 || EnableSharedMemory
+
| 11 || [[#EnableSharedMemory|EnableSharedMemory]]
 
|-
 
|-
| 12 || [6.0.0+]
+
| 12 || [6.0.0+] [[#SetMulticastFilter|SetMulticastFilter]]
 
|}
 
|}
 +
 +
== PutFrameRaw ==
 +
Takes a type-0x5 input buffer. No output.
 +
 +
Sends command message 0x80 (GetState) to the state machine, to check current state.
 +
 +
== CancelGetFrame ==
 +
Takes an input u32 '''RxId'''. No output.
 +
 +
Sends command message 0x80 (GetState) to the state machine, to check current state.
 +
 +
== CreateRxEntry ==
 +
Takes a type-0x9 input buffer and an input u32 '''Capacity'''. Returns an output u32 '''RxId'''.
 +
 +
== DeleteRxEntry ==
 +
Takes an input u32 '''RxId'''. No output.
 +
 +
== AddEthertypeToRxEntry ==
 +
Takes an input u32 '''RxId''' and an input u32 '''Protocol'''. No output.
 +
 +
== DeleteEthertypeFromRxEntry ==
 +
Takes an input u16 '''Protocol'''. Returns an output u32.
 +
 +
== GetMacAddress ==
 +
No input. Returns an output [[#MacAddress]].
 +
 +
Sends command message 0x18 (GetMacAddress) to the state machine.
 +
 +
== SwitchTsfTimerFunction ==
 +
Takes an input bool. No output.
 +
 +
Sends command message 0x2F (SetTsfTimerEventmask) to the state machine.
 +
 +
== GetDeltaTimeBetweenSystemAndTsf ==
 +
No input. Returns an u64 '''DeltaTimeBetweenSystemAndTsf'''.
 +
 +
== RegisterSharedMemory ==
 +
Takes an input SharedMemory handle, an u32 '''SharedMemorySize''' and four input Event handles '''RxPacketEventHandle''', '''TxPacketEventHandle''', '''RxCbufEventHandle''' and '''TxCbufEventHandle'''. No output.
 +
 +
[15.0.0+] Stubbed. Returns 0.
 +
 +
== UnregisterSharedMemory ==
 +
No input/output.
 +
 +
[15.0.0+] Stubbed. Returns 0.
 +
 +
== EnableSharedMemory ==
 +
No input/output.
 +
 +
[15.0.0+] Stubbed. Returns 0.
 +
 +
== SetMulticastFilter ==
 +
Takes an input [[#MulticastList]]. No output.
    
= wlan:dtc =
 
= wlan:dtc =
Line 609: Line 916:     
This was added with [6.0.0+].
 
This was added with [6.0.0+].
 +
 +
This service no longer exists in [15.0.0+].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 672: Line 981:     
[7.0.0+] Cmd14 now takes an input u8.
 
[7.0.0+] Cmd14 now takes an input u8.
 +
 +
= wlan =
 +
This is "nn::wlan::detail::IGeneralServiceCreator".
 +
 +
This was added with [15.0.0+].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#CreateWirelessCommunicationService]]
 +
|}
 +
 +
== CreateWirelessCommunicationService ==
 +
No input. Returns an [[#IWirelessCommunicationService]].
 +
 +
== IWirelessCommunicationService ==
 +
This is "nn::wlan::detail::IWirelessCommunicationService".
 +
 +
This was added with [15.0.0+].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 ||
 +
|-
 +
| 1 ||
 +
|-
 +
| 10 ||
 +
|-
 +
| 11 ||
 +
|-
 +
| 12 ||
 +
|-
 +
| 13 ||
 +
|-
 +
| 14 ||
 +
|-
 +
| 20 ||
 +
|-
 +
| 21 ||
 +
|-
 +
| 30 ||
 +
|-
 +
| 31 ||
 +
|-
 +
| 32 ||
 +
|-
 +
| 33 || [[#GetMacAddress|GetMacAddress]]
 +
|-
 +
| 40 ||
 +
|-
 +
| 41 ||
 +
|-
 +
| 42 ||
 +
|-
 +
| 43 || [[#CreateRxEntry|CreateRxEntry]]
 +
|-
 +
| 44 || [[#DeleteRxEntry|DeleteRxEntry]]
 +
|-
 +
| 45 || [[#AddEthertypeToRxEntry|AddEthertypeToRxEntry]]
 +
|-
 +
| 46 || [[#DeleteEthertypeFromRxEntry|DeleteEthertypeFromRxEntry]]
 +
|-
 +
| 47 || [[#AddMatchingDataToRxEntry|AddMatchingDataToRxEntry]]
 +
|-
 +
| 48 || [[#RemoveMatchingDataFromRxEntry|RemoveMatchingDataFromRxEntry]]
 +
|-
 +
| 50 || [[#AddIe|AddIe]]
 +
|-
 +
| 51 || [[#DeleteIe|DeleteIe]]
 +
|-
 +
| 60 || [[#StartScan|StartScan]]
 +
|-
 +
| 61 || [[#StopScan|StopScan]]
 +
|-
 +
| 62 || [[#GetBssIndicationEvent|GetBssIndicationEvent]]
 +
|-
 +
| 63 || [[#GetScanResult|GetScanResult]]
 +
|-
 +
| 70 || [[#RegisterSharedMemory|RegisterSharedMemory]]
 +
|-
 +
| 71 || [[#UnregisterSharedMemory|UnregisterSharedMemory]]
 +
|-
 +
| 72 || [[#EnableSharedMemory|EnableSharedMemory]]
 +
|-
 +
| 80 || [[#RequestSleep|RequestSleep]]
 +
|-
 +
| 81 || [[#RequestWakeUp|RequestWakeUp]]
 +
|-
 +
| 90 ||
 +
|-
 +
| 91 ||
 +
|-
 +
| 92 ||
 +
|-
 +
| 93 ||
 +
|-
 +
| 94 ||
 +
|-
 +
| 95 || [[#SetActionFrameWithBeacon|SetActionFrameWithBeacon]]
 +
|-
 +
| 96 || [[#CancelActionFrameWithBeacon|CancelActionFrameWithBeacon]]
 +
|-
 +
| 97 || [[#SetMaxAssociationNumber|SetMaxAssociationNumber]]
 +
|-
 +
| 98 ||
 +
|-
 +
| 100 ||
 +
|-
 +
| 101 ||
 +
|-
 +
| 102 ||
 +
|-
 +
| 103 ||
 +
|-
 +
| 104 ||
 +
|-
 +
| 105 ||
 +
|-
 +
| 106 ||
 +
|-
 +
| 107 || [[#SetMulticastFilter|SetMulticastFilter]]
 +
|-
 +
| 108 || [[#SetPowerSaveMode|SetPowerSaveMode]]
 +
|-
 +
| 110 ||
 +
|-
 +
| 111 ||
 +
|-
 +
| 112 ||
 +
|-
 +
| 113 ||
 +
|-
 +
| 200 || [17.0.0+]
 +
|-
 +
| 201 || [17.0.0+]
 +
|-
 +
| 202 || [17.0.0+]
 +
|-
 +
| 203 || [17.0.0+]
 +
|}
 +
 +
= wlan:p =
 +
This is "nn::wlan::detail::IPrivateServiceCreator".
 +
 +
This was added with [15.0.0+].
 +
 +
As of [15.0.0] nothing has access to this service on retail (and hence [[#IPrivateWirelessCommunicationService]] isn't usable either).
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#CreateWirelessCommunicationService]]
 +
|-
 +
| 1 || [[#CreatePrivateWirelessCommunicationService]]
 +
|}
 +
 +
== CreatePrivateWirelessCommunicationService ==
 +
No input. Returns an [[#IPrivateWirelessCommunicationService]].
 +
 +
== IPrivateWirelessCommunicationService ==
 +
This is "nn::wlan::detail::IPrivateWirelessCommunicationService".
 +
 +
This was added with [15.0.0+].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#GetFwVersion|GetFwVersion]]
 +
|-
 +
| 1 || [15.0.0-16.1.0] [[#ChangeRxAntenna|ChangeRxAntenna]]
 +
|-
 +
| 2 ||
 +
|-
 +
| 3 ||
 +
|-
 +
| 4 ||
 +
|-
 +
| 5 ||
 +
|-
 +
| 6 ||
 +
|-
 +
| 7 ||
 +
|-
 +
| 8 ||
 +
|-
 +
| 9 ||
 +
|-
 +
| 10 ||
 +
|-
 +
| 11 ||
 +
|-
 +
| 12 ||
 +
|-
 +
| 13 || EnableTsfTimerFunction
 +
|-
 +
| 14 || DisableTsfTimerFunction
 +
|-
 +
| 15 || [[#GetDeltaTimeBetweenSystemAndTsf|GetDeltaTimeBetweenSystemAndTsf]]
 +
|-
 +
| 16 ||
 +
|-
 +
| 17 ||
 +
|-
 +
| 18 ||
 +
|-
 +
| 19 ||
 +
|-
 +
| 20 || [15.0.0-16.1.0]
 +
|-
 +
| 21 || [15.0.0-16.1.0]
 +
|-
 +
| 22 || [15.0.0-16.1.0]
 +
|}
 +
 +
= wlan:nd =
 +
This is "nn::anif::detail::ISfDriverServiceCreator".
 +
 +
This was added with [15.0.0+].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#CreateDriverService]]
 +
|}
 +
 +
== CreateDriverService ==
 +
No input. Returns an [[#ISfDriverService]].
 +
 +
== ISfDriverService ==
 +
This is "nn::anif::detail::ISfDriverService".
 +
 +
This was added with [15.0.0+].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#OpenNetworkInterface]]
 +
|-
 +
| 128 ||
 +
|-
 +
| 129 ||
 +
|-
 +
| 130 ||
 +
|-
 +
| 131 ||
 +
|-
 +
| 384 ||
 +
|-
 +
| 385 ||
 +
|-
 +
| 386 ||
 +
|-
 +
| 387 ||
 +
|-
 +
| 388 ||
 +
|-
 +
| 389 ||
 +
|}
 +
 +
=== OpenNetworkInterface ===
 +
Takes a type-0x21 input buffer. Returns an [[#ISfNetworkInterfaceService]].
 +
 +
=== ISfNetworkInterfaceService ===
 +
This is "nn::anif::detail::ISfNetworkInterfaceService".
 +
 +
This was added with [15.0.0+].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 ||
 +
|-
 +
| 1 ||
 +
|-
 +
| 2 ||
 +
|-
 +
| 3 ||
 +
|-
 +
| 4 ||
 +
|-
 +
| 5 ||
 +
|-
 +
| 6 ||
 +
|-
 +
| 128 ||
 +
|-
 +
| 129 ||
 +
|-
 +
| 130 ||
 +
|-
 +
| 131 ||
 +
|-
 +
| 256 ||
 +
|-
 +
| 257 ||
 +
|-
 +
| 258 ||
 +
|-
 +
| 259 ||
 +
|-
 +
| 260 ||
 +
|-
 +
| 261 ||
 +
|-
 +
| 262 ||
 +
|-
 +
| 384 ||
 +
|-
 +
| 385 ||
 +
|-
 +
| 386 ||
 +
|-
 +
| 387 ||
 +
|-
 +
| 388 ||
 +
|-
 +
| 389 ||
 +
|}
    
= Ssid =
 
= Ssid =
Line 753: Line 1,388:  
| 0x3A || 0x2 || Reserved
 
| 0x3A || 0x2 || Reserved
 
|}
 
|}
 +
 +
= ClientStatus =
 +
This is a 0xE4-byte struct.
    
= ScanRequest =
 
= ScanRequest =
Line 799: Line 1,437:  
| 0xC || Variable || Array of [[#BssInfo]]
 
| 0xC || Variable || Array of [[#BssInfo]]
 
|}
 
|}
 +
 +
= Bss =
 +
This is a 0x80-byte struct.
 +
 +
[4.0.0+] This is a 0x84-byte struct.
    
= BssInfo =
 
= BssInfo =
Line 875: Line 1,518:  
= WpsPin =
 
= WpsPin =
 
This is a 0x8-byte string.
 
This is a 0x8-byte string.
 +
 +
= MulticastList =
 +
This is a 0x31-byte struct.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x1 || Count
 +
|-
 +
| 0x1 || 0x30 || Array of [[#MacAddress]]
 +
|}
 +
 +
= WakeUpStats =
 +
This is a 0x20-byte struct.
 +
 +
This is updated during RequestWakeUp. The fields starting with offset +0x4 are updated when handling [[#Cmd19|wowl]], which counter is updated depends on the value of iovar "tcpka_wake_cause".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x4 || Number of normal non-wowl wakeups. Also incremented during wowl handling if the output from the func using "tcpka_wake_cause" is 0.
 +
|-
 +
| 0x4 || 0x4 ||
 +
|-
 +
| 0x8 || 0x4 ||
 +
|-
 +
| 0xC || 0x4 ||
 +
|-
 +
| 0x10 || 0x4 ||
 +
|-
 +
| 0x14 || 0x4 ||
 +
|-
 +
| 0x18 || 0x4 ||
 +
|-
 +
| 0x1C || 0x4 || Number of wowl wakeups where the cause is unrecognized.
 +
|}
 +
 +
= SleepStats =
 +
This is a 0x38-byte struct.
 +
 +
During RequestWakeUp when handling [[#Cmd19|wowl]], this data in state is updated by adding each field with the corresponding field from iovar "sleep_stats_get".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x4 ||
 +
|-
 +
| 0x4 || 0x4 ||
 +
|-
 +
| 0x8 || 0x4 ||
 +
|-
 +
| 0xC || 0x4 ||
 +
|-
 +
| 0x10 || 0x4 ||
 +
|-
 +
| 0x14 || 0x4 ||
 +
|-
 +
| 0x18 || 0x4 ||
 +
|-
 +
| 0x1C || 0x4 ||
 +
|-
 +
| 0x20 || 0x4 ||
 +
|-
 +
| 0x24 || 0x4 ||
 +
|-
 +
| 0x28 || 0x4 ||
 +
|-
 +
| 0x2C || 0x4 ||
 +
|-
 +
| 0x30 || 0x4 ||
 +
|-
 +
| 0x34 || 0x4 ||
 +
|}
    
= FwVersion =
 
= FwVersion =
Line 908: Line 1,633:  
| [12.0.0-13.0.0] || 4356a3-roml/pcie-ag-msgbuf-splitrx-pktctx-keepalive-sr-proptxstatus-ampduhostreorder-dlystat-rxdesens-clm_4356a3_ntd-noclminc-ntdds3-btcdyn-trfmgmt-pspretend-btafh-pktfilter-wowlpf-gtkoe-aoe-tcpkaoe-aloe Version: 7.35.252.104 (r728022) CRC: f0b454ec Date: Wed 2021-02-24 04:39:25 PST Ucode Ver: 1020.228 FWID 01-fbba058
 
| [12.0.0-13.0.0] || 4356a3-roml/pcie-ag-msgbuf-splitrx-pktctx-keepalive-sr-proptxstatus-ampduhostreorder-dlystat-rxdesens-clm_4356a3_ntd-noclminc-ntdds3-btcdyn-trfmgmt-pspretend-btafh-pktfilter-wowlpf-gtkoe-aoe-tcpkaoe-aloe Version: 7.35.252.104 (r728022) CRC: f0b454ec Date: Wed 2021-02-24 04:39:25 PST Ucode Ver: 1020.228 FWID 01-fbba058
 
|-
 
|-
| [14.0.0] || 4356a3-roml/pcie-ag-msgbuf-splitrx-pktctx-keepalive-sr-proptxstatus-ampduhostreorder-dlystat-rxdesens-clm_4356a3_ntd-noclminc-ntdds3-btcdyn-trfmgmt-pspretend-btafh-pktfilter-wowlpf-gtkoe-aoe-tcpkaoe-aloe Version: 7.35.252.108 (c216b7c) CRC: 1be69227 Date: Sun 2021-08-29 19:24:39 PDT Ucode Ver: 1020.228 FWID 01-65333037
+
| [14.0.0-18.0.0] || 4356a3-roml/pcie-ag-msgbuf-splitrx-pktctx-keepalive-sr-proptxstatus-ampduhostreorder-dlystat-rxdesens-clm_4356a3_ntd-noclminc-ntdds3-btcdyn-trfmgmt-pspretend-btafh-pktfilter-wowlpf-gtkoe-aoe-tcpkaoe-aloe Version: 7.35.252.108 (c216b7c) CRC: 1be69227 Date: Sun 2021-08-29 19:24:39 PDT Ucode Ver: 1020.228 FWID 01-65333037
 
|}
 
|}
   Line 915: Line 1,640:  
* [6.0.0+] Besides the version update, added "clm_4356a3_ntd" to the string.
 
* [6.0.0+] Besides the version update, added "clm_4356a3_ntd" to the string.
 
* [7.0.0+] Besides the version update, added "noclminc" to the string.
 
* [7.0.0+] Besides the version update, added "noclminc" to the string.
 +
 +
= Notes =
 +
Originally wlan-sysmodule had a func called from nnMain which (among other things) handled configuring [[Bus_services|GPIO]] WifiReset (uses commands SetDirection and SetValue with input value 1), when not disabled by a system-setting. This GPIO functionality was removed from wlan with [7.0.0+], it was redundant since [[PCIe_services|pcie]] already had code handling that GPIO as well.
    
[[Category:Services]]
 
[[Category:Services]]

Navigation menu