LDN services: Difference between revisions
No edit summary |
No edit summary |
||
| Line 124: | Line 124: | ||
| 304 || Disconnect | | 304 || Disconnect | ||
|- | |- | ||
| 400 || InitializeSystem | | 400 || [[#InitializeSystem]] | ||
|- | |- | ||
| 401 || [[#FinalizeSystem]] | | 401 || [[#FinalizeSystem]] | ||
| Line 132: | Line 132: | ||
| 403 || [7.0.0+] [[#InitializeSystem2]] | | 403 || [7.0.0+] [[#InitializeSystem2]] | ||
|} | |} | ||
=== 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 === | === FinalizeSystem === | ||
| Line 141: | Line 148: | ||
Takes an input PID, an u32, and an u64 pid_placeholder. | Takes an input PID, an u32, and an u64 pid_placeholder. | ||
Official sw uses hard-coded value 0x1 for the u32 | Official sw uses hard-coded value 0x1 for the u32. | ||
= ldn:u = | = ldn:u = | ||
| Line 217: | Line 224: | ||
| 304 || Disconnect | | 304 || Disconnect | ||
|- | |- | ||
| 400 || Initialize | | 400 || [[#Initialize]] | ||
|- | |- | ||
| 401 || [[#Finalize]] | | 401 || [[#Finalize]] | ||
| Line 223: | Line 230: | ||
| 402 || [7.0.0+] [[#Initialize2]] | | 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 === | === Finalize === | ||
| Line 232: | Line 246: | ||
Takes an input PID, an u32, and an u64 pid_placeholder. | Takes an input PID, an u32, and an u64 pid_placeholder. | ||
Official sw uses hard-coded value 0x1 for the u32 | Official sw uses hard-coded value 0x1 for the u32. | ||
= ndd = | = ndd = | ||
Revision as of 03:30, 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".
| Cmd | Name |
|---|---|
| 0 | GetStateForMonitor |
| 1 | GetNetworkInfoForMonitor |
| 2 | GetIpv4AddressForMonitor |
| 3 | GetDisconnectReasonForMonitor |
| 4 | GetSecurityParameterForMonitor |
| 5 | GetNetworkConfigForMonitor |
| 100 | #InitializeMonitor |
| 101 | #FinalizeMonitor |
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 |
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.
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-0x1F. |
| 0x1 | 0x21 | SSID string including NUL-terminator, str[{above length}] must be 0. |