LDN services: Difference between revisions
No edit summary |
No edit summary |
||
| Line 158: | Line 158: | ||
| 403 || [7.0.0+] [[#InitializeSystem2]] | | 403 || [7.0.0+] [[#InitializeSystem2]] | ||
|} | |} | ||
=== GetState === | |||
No input, returns an output u32. | |||
sdknso implements this by <code>return</code>ing the u32, with 0 being returned on error / when service isn't initialized. | |||
=== GetNetworkInfo === | |||
Takes a type-0x1A output buffer containing a [[#NetworkInfo]]. | |||
=== GetIpv4Address === | |||
No input, returns an output [[#Ipv4Address]] and a [[#SubnetMask]]. | |||
=== GetDisconnectReason === | |||
No input, returns an output s16. | |||
sdknso implements this by <code>return</code>ing the s16 as a s32, with -1 being returned on error. | |||
=== OpenAccessPoint === | === OpenAccessPoint === | ||
Revision as of 20:49, 11 May 2020
LDN handles all local network communication.
ldn:m
This is "nn::ldn::detail::IMonitorServiceCreator".
| Cmd | Name |
|---|---|
| 0 | #CreateMonitorService |
CreateMonitorService
Returns an #IMonitorService.
The user-process closes the IMonitorServiceCreator object immediately after using this cmd.
IMonitorService
This is "nn::ldn::detail::IMonitorService".
GetStateForMonitor
No input, returns an output u32.
sdknso implements this by returning the u32, with 0 being returned on error.
GetNetworkInfoForMonitor
Takes a type-0x1A output buffer containing a #NetworkInfo.
GetIpv4AddressForMonitor
No input, returns an output #Ipv4Address and a #SubnetMask.
GetDisconnectReasonForMonitor
No input, returns an output s16.
This is not exposed by sdknso.
GetSecurityParameterForMonitor
No input, returns an output 0x20-byte struct with 1-byte alignment.
This is not exposed by sdknso.
GetNetworkConfigForMonitor
No input, returns an output 0x20-byte struct with 8-byte alignment.
This is not exposed by sdknso.
InitializeMonitor
No input/output.
This is used immediately after object creation. Official sw will Abort if this fails.
FinalizeMonitor
No input/output.
This is used during service exit, prior to closing the object. Official sw will Abort if this fails.
ldn:s
This is "nn::ldn::detail::ISystemServiceCreator".
| Cmd | Name |
|---|---|
| 0 | #CreateSystemLocalCommunicationService |
CreateSystemLocalCommunicationService
Returns an #ISystemLocalCommunicationService.
The user-process closes the ISystemServiceCreator object immediately after using this cmd. Official sw ignores errors from this cmd.
ISystemLocalCommunicationService
This is "nn::ldn::detail::ISystemLocalCommunicationService".
| Cmd | Name |
|---|---|
| 0 | #GetState |
| 1 | #GetNetworkInfo |
| 2 | #GetIpv4Address |
| 3 | #GetDisconnectReason |
| 4 | #GetSecurityParameter |
| 5 | #GetNetworkConfig |
| 100 | #AttachStateChangeEvent |
| 101 | #GetNetworkInfoLatestUpdate |
| 102 | #Scan |
| 103 | #ScanPrivate |
| 104 | [5.0.0+] #SetWirelessControllerRestriction |
| 200 | #OpenAccessPoint |
| 201 | #CloseAccessPoint |
| 202 | #CreateNetwork |
| 203 | #CreateNetworkPrivate |
| 204 | #DestroyNetwork |
| 205 | #Reject |
| 206 | #SetAdvertiseData |
| 207 | #SetStationAcceptPolicy |
| 208 | #AddAcceptFilterEntry |
| 209 | #ClearAcceptFilter |
| 300 | #OpenStation |
| 301 | #CloseStation |
| 302 | #Connect |
| 303 | #ConnectPrivate |
| 304 | #Disconnect |
| 400 | #InitializeSystem |
| 401 | #FinalizeSystem |
| 402 | [4.0.0+] #SetOperationMode |
| 403 | [7.0.0+] #InitializeSystem2 |
GetState
No input, returns an output u32.
sdknso implements this by returning the u32, with 0 being returned on error / when service isn't initialized.
GetNetworkInfo
Takes a type-0x1A output buffer containing a #NetworkInfo.
GetIpv4Address
No input, returns an output #Ipv4Address and a #SubnetMask.
GetDisconnectReason
No input, returns an output s16.
sdknso implements this by returning the s16 as a s32, with -1 being returned on error.
OpenAccessPoint
No input/output.
CloseAccessPoint
No input/output.
DestroyNetwork
No input/output.
ClearAcceptFilter
No input/output.
OpenStation
No input/output.
CloseStation
No input/output.
Disconnect
No input/output.
InitializeSystem
Takes an input PID and an u64 pid_placeholder.
This is used immediately after object creation.
With [7.0.0+] #InitializeSystem2 is used instead.
FinalizeSystem
No input/output.
This is used during service exit, prior to closing the object. Official sw will Abort if this fails.
InitializeSystem2
Takes an input PID, an u32, and an u64 pid_placeholder.
Official sw uses hard-coded value 0x1 for the u32.
ldn:u
This is "nn::ldn::detail::IUserServiceCreator".
| Cmd | Name |
|---|---|
| 0 | #CreateUserLocalCommunicationService |
CreateUserLocalCommunicationService
Returns an #IUserLocalCommunicationService.
The user-process closes the IUserServiceCreator object immediately after using this cmd. Official sw ignores errors from this cmd.
IUserLocalCommunicationService
This is "nn::ldn::detail::IUserLocalCommunicationService".
| Cmd | Name |
|---|---|
| 0 | #GetState |
| 1 | #GetNetworkInfo |
| 2 | #GetIpv4Address |
| 3 | #GetDisconnectReason |
| 4 | #GetSecurityParameter |
| 5 | #GetNetworkConfig |
| 100 | #AttachStateChangeEvent |
| 101 | #GetNetworkInfoLatestUpdate |
| 102 | #Scan |
| 103 | #ScanPrivate |
| 104 | [5.0.0+] #SetWirelessControllerRestriction |
| 200 | #OpenAccessPoint |
| 201 | #CloseAccessPoint |
| 202 | #CreateNetwork |
| 203 | #CreateNetworkPrivate |
| 204 | #DestroyNetwork |
| 205 | #Reject |
| 206 | #SetAdvertiseData |
| 207 | #SetStationAcceptPolicy |
| 208 | #AddAcceptFilterEntry |
| 209 | #ClearAcceptFilter |
| 300 | #OpenStation |
| 301 | #CloseStation |
| 302 | #Connect |
| 303 | #ConnectPrivate |
| 304 | #Disconnect |
| 400 | #Initialize |
| 401 | #Finalize |
| 402 | [7.0.0+] #Initialize2 |
Initialize
Takes an input PID and an u64 pid_placeholder.
This is used immediately after object creation.
With [7.0.0+] #Initialize2 is used instead.
Finalize
No input/output.
This is used during service exit, prior to closing the object. Official sw will Abort if this fails.
Initialize2
Takes an input PID, an u32, and an u64 pid_placeholder.
Official sw uses hard-coded value 0x1 for the u32.
ndd
This is "nn::ndd::IService".
This was added with [5.0.0] and removed with [6.0.0].
| Cmd | Name |
|---|---|
| 0 | EnableAutoCommunication |
| 1 | DisableAutoCommunication |
| 2 | IsAutoCommunicationEnabled |
| 3 | EnablePowerSave |
| 4 | DisablePowerSave |
| 5 | IsPowerSaveEnabled |
| 6 | IsNetworkActive |
| 7 | AcquireSendDataUpdateEvent |
| 8 | AddSendData |
| 9 | ClearSendData |
| 10 | GetSendData |
| 11 | AcquireReceiveDataEvent |
| 12 | GetCurrentReceiveDataCounter |
| 13 | GetOldestReceiveDataCounter |
| 14 | GetNextReceiveDataCounter |
| 15 | GetAvailableReceiveDataCount |
| 16 | GetRecentReceiveDataCounter |
| 17 | GetReceiveData |
| 18 | AddReceiveData |
| 19 | ClearReceiveData |
| 20 | ClearDataIdFilter |
| 21 | AcquireDeviceScanEvent |
| 22 | StartDeviceScan |
| 23 | CancelDeviceScan |
| 24 | GetDeviceScanResult |
lp2p:app, lp2p:sys
These are "nn::lp2p::detail::INetworkServiceCreator".
These were added with [9.0.0+].
| Cmd | Name |
|---|---|
| 0 | CreateNetworkService |
| 8 | CreateNetworkServiceMonitor |
INetworkService
This is "nn::lp2p::detail::INetworkService".
| Cmd | Name |
|---|---|
| 0 | Initialize |
| [9.0.0-9.0.1] 256 | AttachNetworkInterfaceStateChangeEvent |
| [9.0.0-9.0.1] 264 | GetNetworkInterfaceLastError |
| [9.0.0-9.0.1] 272 | GetRole |
| [9.0.0-9.0.1] 280 | |
| [9.0.0-9.0.1] 288 | GetGroupInfo |
| [9.0.0-9.0.1] 296 | |
| [9.0.0-9.0.1] 304 | |
| [9.0.0-9.0.1] 312 | |
| [9.0.0-9.0.1] 320 | |
| 512 | |
| 768 | |
| 776 | |
| 784 | |
| 1536 | SendToOtherGroup |
| 1544 | RecvFromOtherGroup |
| 1552 | AddAcceptableGroupId |
| 1560 | [9.1.0+] |
Initialize
Returns 0.
INetworkServiceMonitor
This is "nn::lp2p::detail::INetworkServiceMonitor".
This interface has no commands, until [9.1.0+] which added actual commands.
| Cmd | Name |
|---|---|
| 0 | Initialize |
| 256 | AttachNetworkInterfaceStateChangeEvent |
| 264 | GetNetworkInterfaceLastError |
| 272 | GetRole |
| 280 | |
| 281 | |
| 288 | GetGroupInfo |
| 296 | |
| 304 | |
| 312 | |
| 320 | |
| 328 | AttachJoinEvent |
| 336 |
Initialize
Returns 0.
lp2p:m
This is "nn::lp2p::detail::IMonitorServiceCreator".
This was added with [9.1.0+].
| Cmd | Name |
|---|---|
| 0 | #CreateMonitorService |
CreateMonitorService
Takes a PID, a total of 0x10-bytes of input, and returns an #IMonitorService.
IMonitorService
This is "nn::lp2p::detail::IMonitorService".
| Cmd | Name |
|---|---|
| 0 | Initialize |
| 288 | GetGroupInfo |
| 320 |
Initialize
Returns 0.
Ipv4Address
This is "nn::ldn::Ipv4Address". This is a 0x4-byte struct with 4-byte alignment.
This is essentially the same as struct in_addr.
SubnetMask
This is "nn::ldn::SubnetMask". This is a 0x4-byte struct with 4-byte alignment.
This is essentially the same as struct in_addr.
Ssid
This is "nn::ldn::Ssid".
When converting a Ssid to a string, the loaded chars from the string must be in the range of 0x20-0x7F, otherwise the byte written to the string will be 0.
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x1 | Length excluding NUL-terminator, must be 0x1-0x20. |
| 0x1 | 0x21 | SSID string including NUL-terminator, str[{above length}] must be 0. |
NetworkInfo
This is "nn::ldn::NetworkInfo". This is a 0x480-byte struct.