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::detail::ipc::IServiceCreator".
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 || Notes
! Cmd || Name
|-
|-
| 0 || CreateBcatService || Takes an input u64 ProcessId, returns an [[#IBcatService]]
| 0 || [[#CreateBcatService]]
|-
|-
| 1 || CreateDeliveryCacheStorageService || Takes an input u64 ProcessId, returns an [[#IDeliveryCacheStorageService]]
| 1 || [[#CreateDeliveryCacheStorageService]]
|-
|-
| 2 || CreateDeliveryCacheStorageServiceWithApplicationId || Takes an input u64 TitleId, returns an [[#IDeliveryCacheStorageService]]
| 2 || [[#CreateDeliveryCacheStorageServiceWithApplicationId]]
|-
|-
| 3 || [2.0.0-2.3.0] CreateDeliveryCacheProgressService || Takes an input u64 ProcessId, returns an [[#IDeliveryCacheProgressService]]
| 3 || [2.0.0-2.3.0] [[#CreateDeliveryCacheProgressService]]
|-
|-
| 4 || [2.0.0-2.3.0] CreateDeliveryCacheProgressServiceWithApplicationId || Takes an input u64 TitleId, returns an [[#IDeliveryCacheProgressService]]
| 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::detail::ipc::IBcatService".
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
|-
|-
| 90101 || [11.0.0+]
| 90301 || [11.0.0+] GetDeliveryCacheStorageUsage
|-
| 90301 || [11.0.0+]
|}
|}


Line 91: Line 106:


=== RequestSyncDeliveryCacheWithApplicationId ===
=== RequestSyncDeliveryCacheWithApplicationId ===
Takes an input u64 <code>nn::ApplicationId</code>, no output.
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>, returns an [[#INotifierService]].
Takes an input u64 <code>nn::ApplicationId</code>. Returns an [[#INotifierService]].


=== RequestSuspendDeliveryTask ===
=== RequestSuspendDeliveryTask ===
Takes an input u64 <code>nn::ApplicationId</code>, returns an [[#IDeliveryTaskSuspensionService]].
Takes an input u64 <code>nn::ApplicationId</code>. Returns an [[#IDeliveryTaskSuspensionService]].


=== RegisterSystemApplicationDeliveryTask ===
=== RegisterSystemApplicationDeliveryTask ===
Takes an input u64 <code>nn::ApplicationId</code>, no output.
Takes an input u64 <code>nn::ApplicationId</code>. No output.


=== UnregisterSystemApplicationDeliveryTask ===
=== UnregisterSystemApplicationDeliveryTask ===
Takes an input u64 <code>nn::ApplicationId</code>, no output.
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, returns a total of 4-bytes of output.
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::detail::ipc::IDeliveryCacheProgressService".
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::detail::ipc::IDeliveryCacheStorageService".
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::detail::ipc::IDeliveryCacheFileService".
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::detail::ipc::IDeliveryCacheDirectoryService".
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::detail::ipc::INotifierService".
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::detail::ipc::IDeliveryTaskSuspensionService".
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 || Notes
! 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 || Notes
! Cmd || Name
|-
|-
| 0 || CreateNewsService || No input, returns an [[#INewsService]].
| 0 || [[#CreateNewsService|CreateNewsService]]
|-
|-
| 1 || CreateNewlyArrivedEventHolder || No input, returns an [[#INewlyArrivedEventHolder]].
| 1 || [[#CreateNewlyArrivedEventHolder|CreateNewlyArrivedEventHolder]]
|-
|-
| 2 || CreateNewsDataService || No input, returns an [[#INewsDataService]].
| 2 || [[#CreateNewsDataService|CreateNewsDataService]]
|-
|-
| 3 || CreateNewsDatabaseService || No input, returns an [[#INewsDatabaseService]].
| 3 || [[#CreateNewsDatabaseService|CreateNewsDatabaseService]]
|-
|-
| 4 || CreateOverwriteEventHolder || No input, returns an [[#IOverwriteEventHolder]].
| 4 || [[#CreateOverwriteEventHolder|CreateOverwriteEventHolder]]
|}
|}


CreateNewsDataService and CreateNewsDatabaseService require permission bit 2.
== 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
| 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
| 30210 || [10.0.0+] || 2
|-
|-
| 30300 || RequestImmediateReception || 2
| 30300 || RequestImmediateReception || 2
|-
|-
| 30400 || [3.0.0+] DecodeArchiveFile || 2
| 30400 || [3.0.0-18.1.0] DecodeArchiveFile || 2
|-
|-
| [[#30500]] || [8.0.0+] ? || 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 [[#IUnknown2]].
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.


== IUnknown2 ==
== 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).
(Made up names)


{| 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 ==
= 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: