NPNS services: Difference between revisions

From Nintendo Switch Brew
Jump to navigation Jump to search
Behemoth (talk | contribs)
npns: General functionality information
No edit summary
 
(12 intermediate revisions by 3 users not shown)
Line 2: Line 2:


It uses a version of the libstrophe[http://strophe.im/libstrophe/] xmpp library with libxml2.
It uses a version of the libstrophe[http://strophe.im/libstrophe/] xmpp library with libxml2.
Modifications were made to use the SSL services[https://switchbrew.org/wiki/SSL_services] and support network proxy settings.
Modifications were made to use the [[SSL services|ssl]] service and support network proxy settings.


= npns:u =
= npns:u =
Line 22: Line 22:
|-
|-
| 7 || [[#GetStateChangeEvent]]
| 7 || [[#GetStateChangeEvent]]
|-
| 8 || [18.0.0+] ListenToByName
|-
|-
| 21 || CreateToken
| 21 || CreateToken
Line 48: Line 50:
|-
|-
| 153 || [8.0.0+] GetDropEventWithHandover
| 153 || [8.0.0+] GetDropEventWithHandover
|-
| 154 || [12.0.0+] CreateTokenAsync
|}
|}


Line 72: Line 76:
|-
|-
| 7 || [[#GetStateChangeEvent]]
| 7 || [[#GetStateChangeEvent]]
|-
| 8 || [18.0.0+] ListenToByName
|-
|-
| 11 || SubscribeTopic
| 11 || SubscribeTopic
Line 77: Line 83:
| 12 || UnsubscribeTopic
| 12 || UnsubscribeTopic
|-
|-
| 13 || QueryIsTopicExist
| 13 || [1.0.0-17.0.1] QueryIsTopicExist
|-
| 14 || [18.0.0+] SubscribeTopicByAccount
|-
| 15 || [18.0.0+] UnsubscribeTopicByAccount
|-
| 16 || [18.0.0+] DownloadSubscriptionList
|-
| 17 || [19.0.0+]
|-
|-
| 21 || CreateToken
| 21 || CreateToken
Line 90: Line 104:
|-
|-
| 26 || [5.0.0+] ListenToMyApplicationId
| 26 || [5.0.0+] ListenToMyApplicationId
|-
| 27 || [13.0.0+] DestroyTokenAll
|-
| 28 || [18.0.0+] CreateTokenWithName
|-
| 29 || [18.0.0+] DestroyTokenWithName
|-
|-
| 31 || UploadTokenToBaaS
| 31 || UploadTokenToBaaS
Line 97: Line 117:
| 33 || [7.0.0+] CreateTokenForBaas
| 33 || [7.0.0+] CreateTokenForBaas
|-
|-
| 34 || [7.0.0+] SetBaasDeviceAccountIdList
| 34 || [7.0.0-19.0.1] SetBaasDeviceAccountIdList
|-
| 35 || [17.0.0+] LinkNsaId
|-
| 36 || [17.0.0+] UnlinkNsaId
|-
| 37 || [18.0.0+] RelinkNsaId
|-
| 40 || [17.0.0+] GetNetworkServiceAccountIdTokenRequestEvent
|-
| 41 || [17.0.0+] TryPopNetworkServiceAccountIdTokenRequestUid
|-
| 42 || [17.0.0+] SetNetworkServiceAccountIdTokenSuccess
|-
| 43 || [17.0.0+] SetNetworkServiceAccountIdTokenFailure
|-
| 44 || [17.0.0+] SetUidList
|-
| 45 || [20.0.0+] ([17.0.0-18.1.0] PutDigitalTwinKeyValue)
|-
| 51 || [18.0.0+] DeleteDigitalTwinKeyValue
|-
| 52 || [20.0.0+]
|-
| 53 || [20.0.0+]
|-
| 60 || [19.0.0+]
|-
| 61 || [19.0.0+]
|-
| 70 || [20.0.0+]
|-
|-
| 101 || Suspend
| 101 || Suspend
Line 108: Line 158:
|-
|-
| 105 || [3.0.0+] GetPlayReportRequestEvent
| 105 || [3.0.0+] GetPlayReportRequestEvent
|-
| 106 || [18.0.0+] GetLastNotifiedTime
|-
| 107 || [18.0.0+] SetLastNotifiedTime
|-
|-
| 111 || [[#GetJid]]
| 111 || [[#GetJid]]
Line 120: Line 174:
|-
|-
| 120 || [7.0.0+] [[#CreateNotificationReceiver]]
| 120 || [7.0.0+] [[#CreateNotificationReceiver]]
|-
| 141 || [19.0.0+]
|-
| 142 || [19.0.0+]
|-
| 143 || [19.0.0+]
|-
| 144 || [19.0.0+]
|-
| 145 || [19.0.0+]
|-
| 146 || [20.0.0+]
|-
| 147 || [20.0.0+]
|-
|-
| 151 || [8.0.0+] GetStateWithHandover
| 151 || [8.0.0+] GetStateWithHandover
Line 126: Line 194:
|-
|-
| 153 || [8.0.0+] GetDropEventWithHandover
| 153 || [8.0.0+] GetDropEventWithHandover
|-
| 154 || [12.0.0+] CreateTokenAsync
|-
| 155 || [12.0.0+] CreateTokenAsyncWithApplicationId
|-
| 156 || [18.0.0+] CreateTokenWithNameAsync
|-
|-
| 161 || [10.0.0+] GetRequestChangeStateCancelEvent
| 161 || [10.0.0+] GetRequestChangeStateCancelEvent
Line 134: Line 208:
|-
|-
| 202 || [3.0.0+] RequestChangeStateForceAsync
| 202 || [3.0.0+] RequestChangeStateForceAsync
|-
| 203 || [20.0.0+]
|-
| 301 || [18.0.0-19.0.1] GetPassword
|-
| 302 || [18.0.0-19.0.1] GetAllImmigration
|-
| 303 || [18.0.0-19.0.1] GetNotificationHistories
|-
| 304 || [18.0.0-19.0.1] GetPersistentConnectionSummary
|-
| 305 || [18.0.0-19.0.1] GetDigitalTwinSummary
|-
| 306 || [18.0.0-19.0.1] GetDigitalTwinValue
|}
|}
ListenAll, ReceiveRaw, CreateToken, DestroyToken, QueryIsTokenValid are stubbed. They return 0x7fc9a on [1.0.0] and 0x36dc9a on later versions.


[5.0.0+] CreateToken/DestroyToken now takes an additional 8-bytes of input and a PID.
[5.0.0+] CreateToken/DestroyToken now takes an additional 8-bytes of input and a PID.


ListenAll, ReceiveRaw, CreateToken, DestroyToken, QueryIsTokenValid are stubbed. They return 0x7fc9a on [1.0.0] and 0x36dc9a on later versions.
[20.0.0+] Cmd143 now takes a total of 0x10-bytes of input instead of 8-bytes.  


=== ListenTo ===
=== ListenTo ===
Line 183: Line 273:
|-
|-
| 4 || GetReceiveEvent || No input, returns an output handle.
| 4 || GetReceiveEvent || No input, returns an output handle.
|-
| 5 || [18.0.0+] ListenToByName ||
|}
== ICreateTokenAsyncContext ==
This is "nn::npns::ICreateTokenAsyncContext".
This was added with [12.0.0+].
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 1 || GetFinishEvent
|-
| 2 || Cancel
|-
| 3 || GetResult
|-
| 10 || GetToken
|}
== ISubscriptionUpdateNotifier ==
This is "nn::npns::ISubscriptionUpdateNotifier".
This was added with [19.0.0+].
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 1 ||
|-
| 2 ||
|}
== IFuture ==
This is "nn::npns::IFuture".
This was added with [19.0.0+].
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 1 ||
|-
| 2 ||
|-
| 3 ||
|-
| 10 ||
|}
|}
= Notes =
[[Process_Manager_services|pm:bm]] GetBootMode is only used for passing <code>BootMode == Maintenance</code> to a func, which eventually writes that flag into object state. The func which uses GetBootMode is called from nnMain.


[[Category:Services]]
[[Category:Services]]

Latest revision as of 20:33, 30 April 2025

This is used for Push Notifications.

It uses a version of the libstrophe[1] xmpp library with libxml2. Modifications were made to use the ssl service and support network proxy settings.

npns:u

This is "nn::npns::INpnsUser".

Cmd Name
1 ListenAll
2 #ListenTo
3 Receive
4 ReceiveRaw
5 #GetReceiveEvent
7 #GetStateChangeEvent
8 [18.0.0+] ListenToByName
21 CreateToken
23 DestroyToken
25 QueryIsTokenValid
26 [5.0.0+] ListenToMyApplicationId
101 Suspend
102 Resume
103 GetState
104 [3.0.0+] GetStatistics
111 GetJid
120 [7.0.0+] #CreateNotificationReceiver
151 [8.0.0+] GetStateWithHandover
152 [8.0.0+] GetStateChangeEventWithHandover
153 [8.0.0+] GetDropEventWithHandover
154 [12.0.0+] CreateTokenAsync

[5.0.0+] CreateToken/DestroyToken now takes an additional 8-bytes of input and a PID.

npns:s

This is "nn::npns::INpnsSystem".

Cmd Name
1 ListenAll
2 #ListenTo
3 Receive
4 ReceiveRaw
5 #GetReceiveEvent
6 #ListenUndelivered
7 #GetStateChangeEvent
8 [18.0.0+] ListenToByName
11 SubscribeTopic
12 UnsubscribeTopic
13 [1.0.0-17.0.1] QueryIsTopicExist
14 [18.0.0+] SubscribeTopicByAccount
15 [18.0.0+] UnsubscribeTopicByAccount
16 [18.0.0+] DownloadSubscriptionList
17 [19.0.0+]
21 CreateToken
22 CreateTokenWithApplicationId
23 DestroyToken
24 DestroyTokenWithApplicationId
25 QueryIsTokenValid
26 [5.0.0+] ListenToMyApplicationId
27 [13.0.0+] DestroyTokenAll
28 [18.0.0+] CreateTokenWithName
29 [18.0.0+] DestroyTokenWithName
31 UploadTokenToBaaS
32 [2.0.0+] DestroyTokenForBaaS
33 [7.0.0+] CreateTokenForBaas
34 [7.0.0-19.0.1] SetBaasDeviceAccountIdList
35 [17.0.0+] LinkNsaId
36 [17.0.0+] UnlinkNsaId
37 [18.0.0+] RelinkNsaId
40 [17.0.0+] GetNetworkServiceAccountIdTokenRequestEvent
41 [17.0.0+] TryPopNetworkServiceAccountIdTokenRequestUid
42 [17.0.0+] SetNetworkServiceAccountIdTokenSuccess
43 [17.0.0+] SetNetworkServiceAccountIdTokenFailure
44 [17.0.0+] SetUidList
45 [20.0.0+] ([17.0.0-18.1.0] PutDigitalTwinKeyValue)
51 [18.0.0+] DeleteDigitalTwinKeyValue
52 [20.0.0+]
53 [20.0.0+]
60 [19.0.0+]
61 [19.0.0+]
70 [20.0.0+]
101 Suspend
102 Resume
103 GetState
104 [3.0.0+] GetStatistics
105 [3.0.0+] GetPlayReportRequestEvent
106 [18.0.0+] GetLastNotifiedTime
107 [18.0.0+] SetLastNotifiedTime
111 #GetJid
112 #CreateJid
113 #DestroyJid
114 AttachJid
115 DetachJid
120 [7.0.0+] #CreateNotificationReceiver
141 [19.0.0+]
142 [19.0.0+]
143 [19.0.0+]
144 [19.0.0+]
145 [19.0.0+]
146 [20.0.0+]
147 [20.0.0+]
151 [8.0.0+] GetStateWithHandover
152 [8.0.0+] GetStateChangeEventWithHandover
153 [8.0.0+] GetDropEventWithHandover
154 [12.0.0+] CreateTokenAsync
155 [12.0.0+] CreateTokenAsyncWithApplicationId
156 [18.0.0+] CreateTokenWithNameAsync
161 [10.0.0+] GetRequestChangeStateCancelEvent
162 [10.0.0+] RequestChangeStateForceTimedWithCancelEvent
201 [3.0.0+] RequestChangeStateForceTimed
202 [3.0.0+] RequestChangeStateForceAsync
203 [20.0.0+]
301 [18.0.0-19.0.1] GetPassword
302 [18.0.0-19.0.1] GetAllImmigration
303 [18.0.0-19.0.1] GetNotificationHistories
304 [18.0.0-19.0.1] GetPersistentConnectionSummary
305 [18.0.0-19.0.1] GetDigitalTwinSummary
306 [18.0.0-19.0.1] GetDigitalTwinValue

ListenAll, ReceiveRaw, CreateToken, DestroyToken, QueryIsTokenValid are stubbed. They return 0x7fc9a on [1.0.0] and 0x36dc9a on later versions.

[5.0.0+] CreateToken/DestroyToken now takes an additional 8-bytes of input and a PID.

[20.0.0+] Cmd143 now takes a total of 0x10-bytes of input instead of 8-bytes.

ListenTo

Takes an input u64 program id, no output.

GetReceiveEvent

No input, returns an output Event handle with autoclear=true.

GetStateChangeEvent

No input, returns an output Event handle with autoclear=true.

ListenUndelivered

No input, same as calling #ListenTo with program id 0.

GetJid

No input, returns the current Jabber Identifier[2] in a type-10 buffer. Locally it's stored in "npns_save:/persistent.bin"

CreateJid

No input, no output. Fetches a new Jid from the CDN. Invalidates the old one if existent.

DestroyJid

No input, no output. Invalidates and deletes the current Jid.

CreateNotificationReceiver

Returns an #INotificationReceiver.

INotificationReceiver

This is "nn::npns::INotificationReceiver".

This was added with [7.0.0+].

Cmd Name Notes
1 #ListenTo Takes a total of 8-bytes of input, no output.
2 ListenToMyApplicationId Takes a total of 8-bytes of input and a PID, no output.
3 Receive Takes a total of 2-bytes of input and a type-0x6 output buffer.
4 GetReceiveEvent No input, returns an output handle.
5 [18.0.0+] ListenToByName

ICreateTokenAsyncContext

This is "nn::npns::ICreateTokenAsyncContext".

This was added with [12.0.0+].

Cmd Name
1 GetFinishEvent
2 Cancel
3 GetResult
10 GetToken

ISubscriptionUpdateNotifier

This is "nn::npns::ISubscriptionUpdateNotifier".

This was added with [19.0.0+].

Cmd Name
1
2

IFuture

This is "nn::npns::IFuture".

This was added with [19.0.0+].

Cmd Name
1
2
3
10

Notes

pm:bm GetBootMode is only used for passing BootMode == Maintenance to a func, which eventually writes that flag into object state. The func which uses GetBootMode is called from nnMain.