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 413: |
Line 454: |
| | | |
| === 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 533: |
| | | |
| == NewsRecordV1 == | | == NewsRecordV1 == |
− |
| |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
Line 509: |
Line 556: |
| | | |
| == NewsRecord == | | == NewsRecord == |
− |
| |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
Line 568: |
Line 614: |
| |- | | |- |
| | 10400 || [9.0.0+] GetSystemSessionId | | | 10400 || [9.0.0+] GetSystemSessionId |
| + | |- |
| + | | 10500 || [15.0.0+] SendReportWithUser |
| |- | | |- |
| | 20100 || SaveSystemReport | | | 20100 || SaveSystemReport |
Line 627: |
Line 675: |
| Takes a PID-descriptor and a reserved input u64. No output. | | 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]] to get and store the application's [[NCM_services#ProgramId|ProgramId]]. | + | 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 == | | == SubmitEvent == |
Line 649: |
Line 697: |
| | 100 || | | | 100 || |
| |- | | |- |
− | | 200 || [13.1.0+] | + | | 200 || [13.1.0-13.2.1] |
| |- | | |- |
− | | 300 || [13.1.0+] | + | | 300 || [13.1.0-14.1.2] |
| + | |- |
| + | | 400 || [14.0.0-14.1.2] |
| |} | | |} |
| | | |
Line 664: |
Line 714: |
| |- | | |- |
| | 0 || | | | 0 || |
| + | |- |
| + | | 1 || [14.0.0+] |
| + | |- |
| + | | 10 || [14.0.0+] |
| + | |- |
| + | | 20 || [14.0.0+] |
| + | |- |
| + | | 100 || [16.1.0+] |
| |} | | |} |
| | | |