BCAT services: Difference between revisions
No edit summary |
|||
(14 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
= bcat:a, bcat:m, bcat:u, bcat:s = | = bcat:a, bcat:m, bcat:u, bcat:s = | ||
These are "nn::bcat | These are "nn::bcat::ipc::IServiceCreator". | ||
These were added with [2.0.0+]. | These were added with [2.0.0+]. | ||
Line 8: | Line 8: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || [[#CreateBcatService]] | ||
|- | |- | ||
| 1 || | | 1 || [[#CreateDeliveryCacheStorageService]] | ||
|- | |- | ||
| 2 || | | 2 || [[#CreateDeliveryCacheStorageServiceWithApplicationId]] | ||
|- | |- | ||
| 3 || [2.0.0-2.3.0] | | 3 || [2.0.0-2.3.0] [[#CreateDeliveryCacheProgressService]] | ||
|- | |- | ||
| 4 || [2.0.0-2.3.0] | | 4 || [2.0.0-2.3.0] [[#CreateDeliveryCacheProgressServiceWithApplicationId]] | ||
|} | |} | ||
Equivalent to 3DS BOSS(SpotPass). See [[BCAT_Content_Container|here]] for BCAT-content-container. | Equivalent to 3DS BOSS(SpotPass). See [[BCAT_Content_Container|here]] for BCAT-content-container. | ||
== CreateBcatService == | |||
Takes an input u64 ProcessId. Returns an [[#IBcatService]]. | |||
== CreateDeliveryCacheStorageService == | |||
Takes an input u64 ProcessId. Returns an [[#IDeliveryCacheStorageService]]. | |||
== CreateDeliveryCacheStorageServiceWithApplicationId == | |||
Takes an input u64 <code>nn::ApplicationId</code>. Returns an [[#IDeliveryCacheStorageService]]. | |||
== CreateDeliveryCacheProgressService == | |||
Takes an input u64 ProcessId. Returns an [[#IDeliveryCacheProgressService]]. | |||
== CreateDeliveryCacheProgressServiceWithApplicationId == | |||
Takes an input u64 <code>nn::ApplicationId</code>. returns an [[#IDeliveryCacheProgressService]]. | |||
== IBcatService == | == IBcatService == | ||
This is "nn::bcat | This is "nn::bcat::ipc::IBcatService". | ||
This was added with [2.0.0+]. | This was added with [2.0.0+]. | ||
Line 52: | Line 67: | ||
| 20410 || [9.1.0+] SetSystemApplicationDeliveryTaskTimer | | 20410 || [9.1.0+] SetSystemApplicationDeliveryTaskTimer | ||
|- | |- | ||
| 30100 || SetPassphrase | | 30100 || [[#SetPassphrase]] | ||
|- | |- | ||
| 30101 || [2.0.0-2.3.0] | | 30101 || [2.0.0-2.3.0] | ||
Line 71: | Line 86: | ||
|- | |- | ||
| 90100 || GetDeliveryTaskList | | 90100 || GetDeliveryTaskList | ||
|- | |||
| 90101 || [11.0.0+] GetDeliveryTaskListForSystem | |||
|- | |- | ||
| 90200 || [[#GetDeliveryList]] | | 90200 || [[#GetDeliveryList]] | ||
Line 80: | Line 97: | ||
| 90300 || [3.0.0+] GetPushNotificationLog | | 90300 || [3.0.0+] GetPushNotificationLog | ||
|- | |- | ||
| 90301 || [11.0.0+] GetDeliveryCacheStorageUsage | |||
| 90301 || [11.0.0+] | |||
|} | |} | ||
Line 91: | Line 106: | ||
=== RequestSyncDeliveryCacheWithApplicationId === | === RequestSyncDeliveryCacheWithApplicationId === | ||
Takes an input u64 <code>nn::ApplicationId</code> | Takes an input u64 <code>nn::ApplicationId</code>. No output. | ||
[3.0.0+] Now takes an additional 8-bytes of input, and returns an [[#IDeliveryCacheProgressService]]. | [3.0.0+] Now takes an additional 8-bytes of input, and returns an [[#IDeliveryCacheProgressService]]. | ||
=== GetDeliveryCacheStorageUpdateNotifier === | === GetDeliveryCacheStorageUpdateNotifier === | ||
Takes an input u64 <code>nn::ApplicationId</code> | Takes an input u64 <code>nn::ApplicationId</code>. Returns an [[#INotifierService]]. | ||
=== RequestSuspendDeliveryTask === | === RequestSuspendDeliveryTask === | ||
Takes an input u64 <code>nn::ApplicationId</code> | Takes an input u64 <code>nn::ApplicationId</code>. Returns an [[#IDeliveryTaskSuspensionService]]. | ||
=== RegisterSystemApplicationDeliveryTask === | === RegisterSystemApplicationDeliveryTask === | ||
Takes an input u64 <code>nn::ApplicationId</code> | Takes an input u64 <code>nn::ApplicationId</code>. No output. | ||
=== UnregisterSystemApplicationDeliveryTask === | === UnregisterSystemApplicationDeliveryTask === | ||
Takes an input u64 <code>nn::ApplicationId</code> | Takes an input u64 <code>nn::ApplicationId</code>. No output. | ||
=== SetPassphrase === | |||
Takes an input u64 <code>nn::ApplicationId</code> and a type-0x9 input buffer. No output. | |||
=== GetDeliveryList === | === GetDeliveryList === | ||
Takes a type-0x6 output buffer | Takes a type-0x6 output buffer. Returns a total of 4-bytes of output. | ||
[3.0.0+] Now takes a total of 8-bytes of input, and returns an additional 4-bytes of output. | [3.0.0+] Now takes a total of 8-bytes of input, and returns an additional 4-bytes of output. | ||
=== IDeliveryCacheProgressService === | === IDeliveryCacheProgressService === | ||
This is "nn::bcat | This is "nn::bcat::ipc::IDeliveryCacheProgressService". | ||
This was added with [2.0.0+]. | This was added with [2.0.0+]. | ||
Line 127: | Line 145: | ||
== IDeliveryCacheStorageService == | == IDeliveryCacheStorageService == | ||
This is "nn::bcat | This is "nn::bcat::ipc::IDeliveryCacheStorageService". | ||
This was added with [2.0.0+]. | This was added with [2.0.0+]. | ||
Line 143: | Line 161: | ||
=== IDeliveryCacheFileService === | === IDeliveryCacheFileService === | ||
This is "nn::bcat | This is "nn::bcat::ipc::IDeliveryCacheFileService". | ||
This was added with [2.0.0+]. | This was added with [2.0.0+]. | ||
Line 161: | Line 179: | ||
=== IDeliveryCacheDirectoryService === | === IDeliveryCacheDirectoryService === | ||
This is "nn::bcat | This is "nn::bcat::ipc::IDeliveryCacheDirectoryService". | ||
This was added with [2.0.0+]. | This was added with [2.0.0+]. | ||
Line 177: | Line 195: | ||
=== INotifierService === | === INotifierService === | ||
This is "nn::bcat | This is "nn::bcat::ipc::INotifierService". | ||
Added with [8.0.0+]. | Added with [8.0.0+]. | ||
Line 189: | Line 207: | ||
=== IDeliveryTaskSuspensionService === | === IDeliveryTaskSuspensionService === | ||
This is "nn::bcat | This is "nn::bcat::ipc::IDeliveryTaskSuspensionService". | ||
Added with [8.0.0+]. | Added with [8.0.0+]. | ||
Line 195: | Line 213: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || GetEvent | | 0 || GetEvent | ||
|} | |} | ||
Line 211: | Line 229: | ||
All sessions have 32 sessions. | All sessions have 32 sessions. | ||
Permission masks are: | Permission masks are: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 229: | Line 246: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || [[#CreateNewsService|CreateNewsService]] | ||
|- | |- | ||
| 1 || | | 1 || [[#CreateNewlyArrivedEventHolder|CreateNewlyArrivedEventHolder]] | ||
|- | |- | ||
| 2 || | | 2 || [[#CreateNewsDataService|CreateNewsDataService]] | ||
|- | |- | ||
| 3 || | | 3 || [[#CreateNewsDatabaseService|CreateNewsDatabaseService]] | ||
|- | |- | ||
| 4 || | | 4 || [[#CreateOverwriteEventHolder|CreateOverwriteEventHolder]] | ||
|} | |} | ||
CreateNewsDataService | == CreateNewsService == | ||
No input. Returns an [[#INewsService]]. | |||
== CreateNewlyArrivedEventHolder == | |||
No input. Returns an [[#INewlyArrivedEventHolder]]. | |||
== CreateNewsDataService == | |||
No input. Returns an [[#INewsDataService]]. | |||
Requires permission bit 2. | |||
== CreateNewsDatabaseService == | |||
No input. Returns an [[#INewsDatabaseService]]. | |||
Requires permission bit 2. | |||
== CreateOverwriteEventHolder == | |||
No input. Returns an [[#IOverwriteEventHolder]]. | |||
== INewsService == | == INewsService == | ||
Line 259: | Line 293: | ||
| 30101 || [3.0.0+] GetTopicList || 2 | | 30101 || [3.0.0+] GetTopicList || 2 | ||
|- | |- | ||
| | | 30110 || [6.0.0+] || 2 | ||
|- | |- | ||
| 30200 || [[#IsSystemUpdateRequired]] || 2 | | 30200 || [[#IsSystemUpdateRequired]] || 2 | ||
Line 265: | Line 299: | ||
| 30201 || [8.0.0+] || 2 | | 30201 || [8.0.0+] || 2 | ||
|- | |- | ||
| | | 30210 || [10.0.0+] || 2 | ||
|- | |- | ||
| 30300 || RequestImmediateReception || 2 | | 30300 || RequestImmediateReception || 2 | ||
|- | |- | ||
| 30400 || [3.0.0 | | 30400 || [3.0.0-18.1.0] DecodeArchiveFile || 2 | ||
|- | |- | ||
| | | 30500 || [8.0.0+] ? || 2 | ||
|- | |- | ||
| 30900 || [1.0.0] (No input, returns an [[#INewlyArrivedEventHolder]]) || 2 | | 30900 || [1.0.0] (No input, returns an [[#INewlyArrivedEventHolder]]) || 2 | ||
Line 303: | Line 337: | ||
=== 30500 === | === 30500 === | ||
Takes a type-0x9 input buffer URL, the size of the transfer memory and a handle for the latter, returns an [[# | Takes a type-0x9 input buffer URL, the size of the transfer memory and a handle for the latter, returns an [[#IDownloadContext]]. | ||
Downloaded files need to be encrypted [https://switchbrew.org/wiki/BCAT_Content_Container BCAT Content Container] (Crypto type 1-3). | Downloaded files need to be encrypted [https://switchbrew.org/wiki/BCAT_Content_Container BCAT Content Container] (Crypto type 1-3). | ||
Files will be decrypted before being stored in the transfer memory. | Files will be decrypted before being stored in the transfer memory. | ||
Line 312: | Line 346: | ||
== INewlyArrivedEventHolder == | == INewlyArrivedEventHolder == | ||
This is <nowiki>"nn::news::detail::ipc::INewlyArrivedEventHolder"</nowiki>. | This is <nowiki>"nn::news::detail::ipc::INewlyArrivedEventHolder"</nowiki>. | ||
[19.0.0+] This is now <nowiki>"nn::news::detail::ipc::INewArrivalEventHolder"</nowiki>. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 340: | Line 376: | ||
|- | |- | ||
| 1001 || [6.0.0+] [[#OpenWithNewsRecord]] | | 1001 || [6.0.0+] [[#OpenWithNewsRecord]] | ||
|- | |||
| 1100 || [19.0.0+] | |||
|} | |} | ||
Line 359: | Line 397: | ||
== INewsDatabaseService == | == INewsDatabaseService == | ||
This is <nowiki>"nn::news::detail::ipc::INewsDatabaseService"</nowiki>. | This is <nowiki>"nn::news::detail::ipc::INewsDatabaseService"</nowiki>. | ||
[19.0.0+] This is now <nowiki>"nn::news::detail::ipc::IDeviceNewsDatabaseService"</nowiki>. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 393: | Line 433: | ||
Event is signaled on fetch from CDN if the file already exists. | Event is signaled on fetch from CDN if the file already exists. | ||
== | == IDownloadContext == | ||
This is <nowiki>"nn::news::detail::ipc::IDownloadContext"</nowiki>. | |||
This was added with [8.0.0+]. | This was added with [8.0.0+]. | ||
On creation this object is enqueued and an event is signaled prompting a download from another thread (nn.news.Downloader). | On creation this object is enqueued and an event is signaled prompting a download from another thread (nn.news.Downloader). | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 410: | Line 451: | ||
|- | |- | ||
| 3 || [[#GetSize]] | | 3 || [[#GetSize]] | ||
|- | |||
| 4 || [20.0.0+] | |||
|} | |} | ||
=== Get === | === Get === | ||
Unofficial name. | |||
Return event handle. Signaled on download finish. | Return event handle. Signaled on download finish. | ||
=== Cancel === | === Cancel === | ||
Unofficial name. | |||
Cancels Download. | Cancels Download. | ||
=== GetResult === | === GetResult === | ||
Unofficial name. | |||
Returns last result. | Returns last result. | ||
=== GetSize === | === GetSize === | ||
Unofficial name. | |||
Returns final decoded size. 0 if the result of [[#GetResult]] is not 0 or Download isn't finished/was canceled. | Returns final decoded size. 0 if the result of [[#GetResult]] is not 0 or Download isn't finished/was canceled. | ||
== NewsDatabase == | == NewsDatabase == | ||
Internal SQLite database. Has a second version since 6.0.0. | Internal SQLite database. Has a second version since 6.0.0. | ||
Line 485: | Line 535: | ||
== NewsRecordV1 == | == NewsRecordV1 == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 509: | Line 558: | ||
== NewsRecord == | == NewsRecord == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 568: | Line 616: | ||
|- | |- | ||
| 10400 || [9.0.0+] GetSystemSessionId | | 10400 || [9.0.0+] GetSystemSessionId | ||
|- | |||
| 10500 || [15.0.0+] SendReportWithUser | |||
|- | |- | ||
| 20100 || SaveSystemReport | | 20100 || SaveSystemReport | ||
Line 610: | Line 660: | ||
= mnpp:app = | = mnpp:app = | ||
This is "nn::mnpp::detail::ipc::IServiceForApplication". | This is "nn::mnpp::detail::ipc::IServiceForApplication". | ||
This was added with [13.0.0+]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 615: | Line 667: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || [[#Initialize]] | ||
|- | |- | ||
| 1 || | | 1 || [[#SubmitEvent]] | ||
|} | |} | ||
== Initialize == | |||
Unofficial name. | |||
Takes a PID-descriptor and a reserved input u64. No output. | |||
Uses [[Glue_services#arp:r|arp:r]] commands [[Glue_services#GetApplicationInstanceId|GetApplicationInstanceId]] and [[Glue_services#GetApplicationLaunchProperty|GetApplicationLaunchProperty]] to get and store the application's [[NCM_services#ProgramId|ProgramId]]. | |||
== SubmitEvent == | |||
Unofficial name. | |||
Takes an input [[Account_services#Uid|Uid]] and a type-0x5 input buffer. No output. | |||
Uses the input buffer's contents to create a "mission event" which is later uploaded to "fw-api.%.nso.nintendo.net/v1/events". | |||
= mnpp:sys = | = mnpp:sys = | ||
This is "nn::mnpp::detail::ipc::IServiceForSystem". | This is "nn::mnpp::detail::ipc::IServiceForSystem". | ||
This was added with [13.0.0+]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 630: | Line 698: | ||
|- | |- | ||
| 100 || | | 100 || | ||
|- | |||
| 200 || [13.1.0-13.2.1] | |||
|- | |||
| 300 || [13.1.0-14.1.2] | |||
|- | |||
| 400 || [14.0.0-14.1.2] | |||
|} | |} | ||
= mnpp:web = | = mnpp:web = | ||
This is "nn::mnpp::detail::ipc::IServiceForWebBrowser". | This is "nn::mnpp::detail::ipc::IServiceForWebBrowser". | ||
This was added with [13.0.0+]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 640: | Line 716: | ||
|- | |- | ||
| 0 || | | 0 || | ||
|- | |||
| 1 || [14.0.0+] | |||
|- | |||
| 10 || [14.0.0+] | |||
|- | |||
| 20 || [14.0.0+] | |||
|- | |||
| 100 || [16.1.0+] | |||
|} | |} | ||
= Data reporting = | |||
The "Play Report" (prepo) service uploads system and user information to a cloud server. | The "Play Report" (prepo) service uploads system and user information to a cloud server. | ||
This includes the following fields: | This includes the following fields: |