BCAT services: Difference between revisions
No edit summary |
No edit summary |
||
(58 intermediate revisions by 9 users not shown) | |||
Line 1: | Line 1: | ||
BCAT (Background Content Asymmetric synchronized delivery and Transmission) encompasses a set of content download/upload related services. | BCAT (Background Content Asymmetric synchronized delivery and Transmission) encompasses a set of content download/upload related services. | ||
= | = bcat:a, bcat:m, bcat:u, bcat:s = | ||
These are "nn::bcat::ipc::IServiceCreator". | |||
These were added with [2.0.0+]. | |||
== bcat:m == | {| class="wikitable" border="1" | ||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || [[#CreateBcatService]] | |||
|- | |||
| 1 || [[#CreateDeliveryCacheStorageService]] | |||
|- | |||
| 2 || [[#CreateDeliveryCacheStorageServiceWithApplicationId]] | |||
|- | |||
| 3 || [2.0.0-2.3.0] [[#CreateDeliveryCacheProgressService]] | |||
|- | |||
| 4 || [2.0.0-2.3.0] [[#CreateDeliveryCacheProgressServiceWithApplicationId]] | |||
|} | |||
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 == | |||
This is "nn::bcat::ipc::IBcatService". | |||
This was added with [2.0.0+]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 10100 || [[#RequestSyncDeliveryCache]] | |||
|- | |||
| 10101 || [5.0.0+] RequestSyncDeliveryCacheWithDirectoryName | |||
|- | |||
| 10200 || [5.0.0+] CancelSyncDeliveryCacheRequest | |||
|- | |||
| 20100 || [[#RequestSyncDeliveryCacheWithApplicationId]] | |||
|- | |||
| 20101 || [5.0.0+] RequestSyncDeliveryCacheWithApplicationIdAndDirectoryName | |||
|- | |||
| 20300 || [8.0.0+] [[#GetDeliveryCacheStorageUpdateNotifier]] | |||
|- | |||
| 20301 || [8.0.0+] [[#RequestSuspendDeliveryTask]] | |||
|- | |||
| 20400 || [9.0.0+] [[#RegisterSystemApplicationDeliveryTask]] | |||
|- | |||
| 20401 || [9.0.0+] [[#UnregisterSystemApplicationDeliveryTask]] | |||
|- | |||
| 20410 || [9.1.0+] SetSystemApplicationDeliveryTaskTimer | |||
|- | |||
| 30100 || [[#SetPassphrase]] | |||
|- | |||
| 30101 || [2.0.0-2.3.0] | |||
|- | |||
| 30102 || [2.0.0-2.3.0] | |||
|- | |||
| 30200 || [3.0.0+] RegisterDeliveryTask | |||
|- | |||
| 30201 || [3.0.0+] UnregisterDeliveryTask | |||
|- | |||
| 30202 || [3.0.0+] BlockDeliveryTask | |||
|- | |||
| 30203 || [3.0.0+] UnblockDeliveryTask | |||
|- | |||
| 30210 || [9.1.0+] SetDeliveryTaskTimer | |||
|- | |||
| 30300 || [8.0.0+] RegisterSystemApplicationDeliveryTasks | |||
|- | |||
| 90100 || GetDeliveryTaskList | |||
|- | |||
| 90101 || [11.0.0+] GetDeliveryTaskListForSystem | |||
|- | |||
| 90200 || [[#GetDeliveryList]] | |||
|- | |||
| 90201 || [3.0.0+] ClearDeliveryCacheStorage | |||
|- | |||
| 90202 || [8.0.0+] ClearDeliveryTaskSubscriptionStatus | |||
|- | |||
| 90300 || [3.0.0+] GetPushNotificationLog | |||
|- | |||
| 90301 || [11.0.0+] GetDeliveryCacheStorageUsage | |||
|} | |||
=== RequestSyncDeliveryCache === | |||
No input/output. | |||
[3.0.0+] Now returns an [[#IDeliveryCacheProgressService]]. | |||
=== RequestSyncDeliveryCacheWithApplicationId === | |||
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]]. | |||
=== GetDeliveryCacheStorageUpdateNotifier === | |||
Takes an input u64 <code>nn::ApplicationId</code>. Returns an [[#INotifierService]]. | |||
=== RequestSuspendDeliveryTask === | |||
Takes an input u64 <code>nn::ApplicationId</code>. Returns an [[#IDeliveryTaskSuspensionService]]. | |||
=== RegisterSystemApplicationDeliveryTask === | |||
Takes an input u64 <code>nn::ApplicationId</code>. No output. | |||
=== UnregisterSystemApplicationDeliveryTask === | |||
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 === | |||
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. | |||
=== IDeliveryCacheProgressService === | |||
This is "nn::bcat::ipc::IDeliveryCacheProgressService". | |||
This was added with [2.0.0+]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || GetEvent | |||
|- | |||
| 1 || GetImpl | |||
|} | |||
== IDeliveryCacheStorageService == | |||
This is "nn::bcat::ipc::IDeliveryCacheStorageService". | |||
This was added with [2.0.0+]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || CreateFileService | |||
|- | |||
| 1 || CreateDirectoryService | |||
|- | |||
| 10 || EnumerateDeliveryCacheDirectory | |||
|} | |||
=== IDeliveryCacheFileService === | |||
This is "nn::bcat::ipc::IDeliveryCacheFileService". | |||
This was added with [2.0.0+]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || Open | |||
|- | |||
| 1 || Read | |||
|- | |||
| 2 || GetSize | |||
|- | |||
| 3 || GetDigest | |||
|} | |||
=== IDeliveryCacheDirectoryService === | |||
This is "nn::bcat::ipc::IDeliveryCacheDirectoryService". | |||
This was added with [2.0.0+]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || Open | |||
|- | |||
| 1 || Read | |||
|- | |||
| 2 || GetCount | |||
|} | |||
=== INotifierService === | |||
This is "nn::bcat::ipc::INotifierService". | |||
Added with [8.0.0+]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name || Notes | |||
|- | |||
| 0 || GetEvent || | |||
|} | |||
=== IDeliveryTaskSuspensionService === | |||
This is "nn::bcat::ipc::IDeliveryTaskSuspensionService". | |||
Added with [8.0.0+]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || GetEvent | |||
|} | |||
= <nowiki>news:a, news:c, news:m, news:p, news:v</nowiki> = | |||
These are <nowiki>"nn::news::detail::ipc::IServiceCreator"</nowiki>. | |||
On [1.0.0] these are <nowiki>"nn::news::detail::ipc::INewsService"</nowiki>, see [[#INewsService]]. | |||
News entries are fetched from CDN[https://switchbrew.org/wiki/Network#Others]. | |||
Metadata for each entry is stored and queried from an internal SQLite database. | |||
Official software uses sqlite[https://www.sqlite.org/download.html] for processing. | |||
All sessions have 32 sessions. | |||
Permission masks are: | |||
{| class="wikitable" border="1" | |||
|- | |||
! Name || Mask | |||
|- | |||
| <nowiki>news:a</nowiki> || 0xffffffff | |||
|- | |||
| <nowiki>news:p</nowiki> || 0x1 | |||
|- | |||
| <nowiki>news:c</nowiki> || 0x2 | |||
|- | |||
| <nowiki>news:v</nowiki> || 0x4 | |||
|- | |||
| <nowiki>news:m</nowiki> || 0xd | |||
|} | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || [[#CreateNewsService|CreateNewsService]] | |||
|- | |||
| 1 || [[#CreateNewlyArrivedEventHolder|CreateNewlyArrivedEventHolder]] | |||
|- | |||
| 2 || [[#CreateNewsDataService|CreateNewsDataService]] | |||
|- | |||
| 3 || [[#CreateNewsDatabaseService|CreateNewsDatabaseService]] | |||
|- | |||
| 4 || [[#CreateOverwriteEventHolder|CreateOverwriteEventHolder]] | |||
|} | |||
== 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 == | |||
This is <nowiki>"nn::news::detail::ipc::INewsService"</nowiki>. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name || Required Permission Bits | |||
|- | |||
| 10100 || [[#PostLocalNews]] || 0 | |||
|- | |||
| 20100 || SetPassphrase || 1 | |||
|- | |||
| 30100 || GetSubscriptionStatus || 1 or 2 | |||
|- | |||
| 30101 || [3.0.0+] GetTopicList || 2 | |||
|- | |||
| 30110 || [6.0.0+] || 2 | |||
|- | |||
| 30200 || [[#IsSystemUpdateRequired]] || 2 | |||
|- | |||
| 30201 || [8.0.0+] || 2 | |||
|- | |||
| 30210 || [10.0.0+] || 2 | |||
|- | |||
| 30300 || RequestImmediateReception || 2 | |||
|- | |||
| 30400 || [3.0.0-18.1.0] DecodeArchiveFile || 2 | |||
|- | |||
| 30500 || [8.0.0+] ? || 2 | |||
|- | |||
| 30900 || [1.0.0] (No input, returns an [[#INewlyArrivedEventHolder]]) || 2 | |||
|- | |||
| 30901 || [1.0.0] (No input, returns an [[#INewsDataService]]) || 2 | |||
|- | |||
| 30902 || [1.0.0] (No input, returns an [[#INewsDatabaseService]]) || 2 | |||
|- | |||
| 40100 || SetSubscriptionStatus || 1 or 3 | |||
|- | |||
| 40101 || [3.0.0+] RequestAutoSubscription || 3 | |||
|- | |||
| 40200 || ClearStorage || 3 | |||
|- | |||
| 40201 || ClearSubscriptionStatusAll || 1 or 3 | |||
|- | |||
| 90100 || [[#GetNewsDatabaseDump]] || 4 | |||
|} | |||
=== PostLocalNews === | |||
Takes an input buffer msgpack. | |||
=== 30110 === | |||
Returns two u64s. Current usage and total size of the news-mounted savedata 0x8000000000000090. | |||
=== IsSystemUpdateRequired === | |||
Matches the version in news-sys:/sup.version against the result from system setting news!system_version. | |||
=== 30210 === | |||
Returns the Database version retrieved from system setting news!db_version | |||
=== 30500 === | |||
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). | |||
Files will be decrypted before being stored in the transfer memory. | |||
=== GetNewsDatabaseDump === | |||
Dumps internal SQLite file. | |||
== INewlyArrivedEventHolder == | |||
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" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || [[#Get]] | |||
|} | |||
=== Get === | |||
Returns readable event. | |||
Event is signaled on PostLocalNews or on fetch from CDN if the file doesn't exist. | |||
== INewsDataService == | |||
This is <nowiki>"nn::news::detail::ipc::INewsDataService"</nowiki>. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || [[#Open]] | |||
|- | |||
| 1 || [[#OpenWithNewsRecordV1]] | |||
|- | |||
| 2 || [[#Read]] | |||
|- | |||
| 3 || [[#GetSize]] | |||
|- | |||
| 1001 || [6.0.0+] [[#OpenWithNewsRecord]] | |||
|- | |||
| 1100 || [19.0.0+] | |||
|} | |||
=== Open === | |||
Takes an input string. Opens file with the output of snprintf from <nowiki>"news:/data/%s"</nowiki> with input. | |||
=== OpenWithNewsRecordV1 === | |||
Takes an input [[#NewsRecordV1]]. Opens file with the output of snprintf of <nowiki>"news:/data/D00000000000000000000_%s.msgpack"</nowiki> with news_id if user_id is empty or else of <nowiki>"news:/data/U%s_%s.msgpack"</nowiki> with user_id and news_id of input. | |||
=== Read === | |||
Read from file opened with [[#Open]], [[#OpenWithNewsRecordV1]] or [[#OpenWithNewsRecord]]. | |||
=== GetSize === | |||
Get size of file opened with [[#Open]], [[#OpenWithNewsRecordV1]] or [[#OpenWithNewsRecord]]. | |||
=== OpenWithNewsRecord=== | |||
Takes an input [[#NewsRecord]]. Same behavior as [[#OpenWithNewsRecordV1]]. | |||
== INewsDatabaseService == | |||
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" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || GetListV1 | |||
|- | |||
| 1 || Count | |||
|- | |||
| 2 || CountWithKey | |||
|- | |||
| 3 || UpdateIntegerValue | |||
|- | |||
| 4 || UpdateIntegerValueWithAddition | |||
|- | |||
| 5 || UpdateStringValue | |||
|- | |||
| 1000 || [6.0.0+] GetList | |||
|} | |||
== IOverwriteEventHolder == | |||
This is <nowiki>"nn::news::detail::ipc::IOverwriteEventHolder"</nowiki>. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || [[#Get]] | |||
|} | |||
=== Get === | |||
Returns readable event. | |||
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+]. | |||
On creation this object is enqueued and an event is signaled prompting a download from another thread (nn.news.Downloader). | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || [[#Get]] | |||
|- | |||
| 1 || [[#Cancel]] | |||
|- | |||
| 2 || [[#GetResult]] | |||
|- | |||
| 3 || [[#GetSize]] | |||
|} | |||
== | === Get === | ||
Unofficial name. | |||
Return event handle. Signaled on download finish. | |||
= | === Cancel === | ||
Unofficial name. | |||
Cancels Download. | |||
== | === GetResult === | ||
Unofficial name. | |||
Returns last result. | |||
== | === GetSize === | ||
Unofficial name. | |||
Returns final decoded size. 0 if the result of [[#GetResult]] is not 0 or Download isn't finished/was canceled. | |||
== NewsDatabase == | |||
Internal SQLite database. Has a second version since 6.0.0. | |||
= | {| class="wikitable" border="1" | ||
|- | |||
! Name | |||
! Type | |||
! Exists | |||
|- | |||
| news_id || TEXT || All | |||
|- | |||
| user_id || TEXT || All | |||
|- | |||
| topic_id || TEXT || All | |||
|- | |||
| application_ids || TEXT || All | |||
|- | |||
| received_at || INTEGER || All | |||
|- | |||
| published_at || INTEGER || All | |||
|- | |||
| expire_at || INTEGER || All | |||
|- | |||
| pickup_limit || INTEGER || All | |||
|- | |||
| essential_pickup_limit || INTEGER || Only V2 | |||
|- | |||
| priority || INTEGER || All | |||
|- | |||
| deletion_priority || INTEGER || All | |||
|- | |||
| age_limit || INTEGER || All | |||
|- | |||
| surprise || INTEGER || All | |||
|- | |||
| bashotorya || INTEGER || Only V1 | |||
|- | |||
| decoration_type || INTEGER || Only V2 | |||
|- | |||
| point || INTEGER || All | |||
|- | |||
| read || INTEGER || All | |||
|- | |||
| newly || INTEGER || All | |||
|- | |||
| displayed || INTEGER || All | |||
|- | |||
| opted_in || INTEGER || All | |||
|- | |||
| point_status || INTEGER || All | |||
|- | |||
| feedback || INTEGER || Only V2 | |||
|- | |||
| extra_1 || INTEGER || All | |||
|- | |||
| extra_2 || INTEGER || All | |||
|- | |||
|} | |||
== NewsRecordV1 == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! SQLite association | |||
|- | |||
| 0x0 || 0x18 || TEXT news_id | |||
|- | |||
| 0x18 || 0x18 || TEXT user_id | |||
|- | |||
| 0x30 || 0x8 || INTEGER received_id | |||
|- | |||
| 0x38 || 0x4 || INTEGER news | |||
|- | |||
| 0x3c || 0x4 || INTEGER newly | |||
|- | |||
| 0x40 || 0x4 || INTEGER displayed | |||
|- | |||
| 0x44 || 0x4 || none | |||
|- | |||
|} | |||
== NewsRecord == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! SQLite association | |||
|- | |||
| 0x0 || 0x18 || TEXT news_id | |||
|- | |||
| 0x18 || 0x18 || TEXT user_id | |||
|- | |||
| 0x30 || 0x20 || TEXT topic_id | |||
|- | |||
| 0x50 || 0x8 || INTEGER received_id | |||
|- | |||
| 0x58 || 0x8 || none | |||
|- | |||
| 0x60 || 0x4 || INTEGER decoration_type | |||
|- | |||
| 0x64 || 0x4 || INTEGER read | |||
|- | |||
| 0x68 || 0x4 || INTEGER newly | |||
|- | |||
| 0x6c || 0x4 || INTEGER displayed | |||
|- | |||
| 0x70 || 0x4 || INTEGER feedback | |||
|- | |||
| 0x74 || 0x4 || none | |||
|- | |||
| 0x78 || 0x4 || INTEGER extra_1 | |||
|- | |||
| 0x7c || 0x4 || INTEGER extra_2 | |||
|- | |||
|} | |||
= prepo:a, prepo:a2, prepo:m, prepo:u, prepo:s = | |||
These are "nn::prepo::detail::ipc::IPrepoService". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 10100 || SaveReportOld ([1.0.0-5.1.0] SaveReport) | |||
|- | |||
| 10101 || SaveReportWithUserOld ([1.0.0-5.1.0] SaveReportWithUser) | |||
|- | |||
| 10102 || [6.0.0+] SaveReportOld2 ([1.0.0-9.2.0] SaveReport) | |||
|- | |||
| 10103 || [6.0.0+] SaveReportWithUserOld2 ([1.0.0-9.2.0] SaveReportWithUser) | |||
|- | |||
| 10104 || [10.0.0+] SaveReport | |||
|- | |||
| 10105 || [10.0.0+] SaveReportWithUser | |||
|- | |||
| 10200 || RequestImmediateTransmission | |||
|- | |||
| 10300 || GetTransmissionStatus | |||
|- | |||
| 10400 || [9.0.0+] GetSystemSessionId | |||
|- | |||
| 10500 || [15.0.0+] SendReportWithUser | |||
|- | |||
| 20100 || SaveSystemReport | |||
|- | |||
| 20101 || SaveSystemReportWithUser | |||
|- | |||
| 20200 || [4.0.0+] SetOperationMode | |||
|- | |||
| 30100 || ClearStorage | |||
|- | |||
| 30200 || [6.0.0+] ClearStatistics | |||
|- | |||
| 30300 || [6.0.0+] GetStorageUsage | |||
|- | |||
| 30400 || [6.0.0+] GetStatistics | |||
|- | |||
| 30401 || [6.0.0+] GetThroughputHistory | |||
|- | |||
| 30500 || [6.0.0+] GetLastUploadError | |||
|- | |||
| 30600 || [10.0.0+] GetApplicationUploadSummary | |||
|- | |||
| 40100 || [2.0.0+] IsUserAgreementCheckEnabled | |||
|- | |||
| 40101 || [2.0.0+] SetUserAgreementCheckEnabled | |||
|- | |||
| 50100 || [10.0.0+] ReadAllApplicationReportFiles | |||
|- | |||
| 90100 || [6.0.0+] ReadAllReportFiles ([1.0.0-5.1.0] GetStorageUsage) | |||
|- | |||
| 90101 || [1.0.0] | |||
|- | |||
| 90102 || [1.0.0] | |||
|- | |||
| 90200 || [5.0.0-5.1.0] GetStatistics | |||
|- | |||
| 90201 || [5.0.0-5.1.0] GetThroughputHistory | |||
|- | |||
| 90300 || [5.0.0-5.1.0] GetLastUploadError | |||
|} | |||
= mnpp:app = | |||
This is "nn::mnpp::detail::ipc::IServiceForApplication". | |||
This was added with [13.0.0+]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || [[#Initialize]] | |||
|- | |||
| 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 = | |||
This is "nn::mnpp::detail::ipc::IServiceForSystem". | |||
This was added with [13.0.0+]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| | | 0 || | ||
|- | |- | ||
| | | 100 || | ||
|- | |- | ||
| | | 200 || [13.1.0-13.2.1] | ||
|- | |- | ||
| | | 300 || [13.1.0-14.1.2] | ||
|- | |- | ||
| | | 400 || [14.0.0-14.1.2] | ||
|} | |||
= mnpp:web = | |||
This is "nn::mnpp::detail::ipc::IServiceForWebBrowser". | |||
This was added with [13.0.0+]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |- | ||
| | | 0 || | ||
|- | |- | ||
| | | 1 || [14.0.0+] | ||
|- | |- | ||
| | | 10 || [14.0.0+] | ||
|- | |- | ||
| | | 20 || [14.0.0+] | ||
|- | |- | ||
| | | 100 || [16.1.0+] | ||
|} | |} | ||
== prepo: | = Data reporting = | ||
The "Play Report" (prepo) service uploads system and user information to a cloud server. | |||
This includes the following fields: | |||
sys_info | |||
data | |||
application_id | |||
event_id | |||
operation_mode | |||
lc_recorded_at (followed by a timestamp) | |||
nc_recorded_at (followed by a timestamp) | |||
nsa_id | |||
os_version | |||
And the contents of the following file: | |||
is_user_agreement_check_enabled.bin | |||
All the information is periodically uploaded to the following URL:<br> | |||
* <nowiki>https://receive-%.dg.srv.nintendo.net/post</nowiki> | |||
It also checks the validity of the device's authentication token using the following URL:<br> | |||
* <nowiki>https://dauth-%.ndas.srv.nintendo.net/v1/device_auth_token</nowiki> | |||
[[Category:Services]] | [[Category:Services]] |