BCAT services: Difference between revisions

From Nintendo Switch Brew
Jump to navigation Jump to search
No edit summary
Line 13: Line 13:
|-
|-
| 2 || CreateDeliveryCacheStorageServiceWithApplicationId
| 2 || CreateDeliveryCacheStorageServiceWithApplicationId
|-
| [?-2.3.0] 3 ||
|-
| [?-2.3.0] 4 ||
|}
|}


Line 24: Line 28:
! Cmd || Name
! Cmd || Name
|-
|-
| 10100 || RequestSyncDeliveryCache
| 10100 || [[#RequestSyncDeliveryCache]]
|-
|-
| 10101 || [5.0.0+] RequestSyncDeliveryCacheWithDirectoryName
| 10101 || [5.0.0+] RequestSyncDeliveryCacheWithDirectoryName
Line 30: Line 34:
| 10200 || [5.0.0+] CancelSyncDeliveryCacheRequest
| 10200 || [5.0.0+] CancelSyncDeliveryCacheRequest
|-
|-
| 20100 || RequestSyncDeliveryCacheWithApplicationId
| 20100 || [[#RequestSyncDeliveryCacheWithApplicationId]]
|-
|-
| 20101 || [5.0.0+] RequestSyncDeliveryCacheWithApplicationIdAndDirectoryName
| 20101 || [5.0.0+] RequestSyncDeliveryCacheWithApplicationIdAndDirectoryName
Line 40: Line 44:
| 30100 || SetPassphrase
| 30100 || SetPassphrase
|-
|-
| 30200 || RegisterDeliveryTask
| [?-2.3.0] 30101 ||  
|-
|-
| 30201 || UnregisterDeliveryTask
| [?-2.3.0] 30102 ||  
|-
|-
| 30202 || BlockDeliveryTask
| 30200 || [3.0.0+] RegisterDeliveryTask
|-
|-
| 30203 || UnblockDeliveryTask
| 30201 || [3.0.0+] UnregisterDeliveryTask
|-
| 30202 || [3.0.0+] BlockDeliveryTask
|-
| 30203 || [3.0.0+] UnblockDeliveryTask
|-
|-
| 30300 || [8.0.0+] RegisterSystemApplicationDeliveryTasks
| 30300 || [8.0.0+] RegisterSystemApplicationDeliveryTasks
Line 52: Line 60:
| 90100 || GetDeliveryTaskList
| 90100 || GetDeliveryTaskList
|-
|-
| 90200 || GetDeliveryList
| 90200 || [[#GetDeliveryList]]
|-
|-
| 90201 || ClearDeliveryCacheStorage
| 90201 || [3.0.0+] ClearDeliveryCacheStorage
|-
|-
| 90202 || [8.0.0+] ClearDeliveryTaskSubscriptionStatus
| 90202 || [8.0.0+] ClearDeliveryTaskSubscriptionStatus
|-
|-
| 90300 || GetPushNotificationLog
| 90300 || [3.0.0+] GetPushNotificationLog
|}
|}
=== RequestSyncDeliveryCache ===
No input/output.
[3.0.0+] Now returns an [[#IDeliveryCacheProgressService]].
=== RequestSyncDeliveryCacheWithApplicationId ===
Takes a total of 8-bytes of input, no output.
[3.0.0+] Now takes an additional 8-bytes of input, and returns an [[#IDeliveryCacheProgressService]].


=== GetDeliveryCacheStorageUpdateNotifier ===
=== GetDeliveryCacheStorageUpdateNotifier ===
Line 66: Line 84:
=== RequestSuspendDeliveryTask ===
=== RequestSuspendDeliveryTask ===
Takes a total of 8-bytes of input, returns an [[#IDeliveryTaskSuspensionService]].
Takes a total of 8-bytes of input, returns an [[#IDeliveryTaskSuspensionService]].
=== 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 ===
=== IDeliveryCacheProgressService ===
Line 178: Line 201:
| 30100 ||  
| 30100 ||  
|-
|-
| 30101 ||  
| 30101 || [3.0.0+]
|-
|-
| 30110 || [6.0.0+]
| 30110 || [6.0.0+]
Line 188: Line 211:
| 30300 ||  
| 30300 ||  
|-
|-
| 30400 ||  
| 30400 || [3.0.0+]
|-
|-
| 30500 || [8.0.0+] ? (Takes a total of 8-bytes of input, a handle, and a type-0x9 input buffer, returns an [[#IUnknown2]])
| 30500 || [8.0.0+] ? (Takes a total of 8-bytes of input, a handle, and a type-0x9 input buffer, returns an [[#IUnknown2]])
Line 194: Line 217:
| 40100 ||  
| 40100 ||  
|-
|-
| 40101 ||  
| 40101 || [3.0.0+]
|-
|-
| 40200 ||  
| 40200 ||  

Revision as of 18:14, 6 May 2019

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::detail::ipc::IServiceCreator".

Cmd Name
0 CreateBcatService
1 CreateDeliveryCacheStorageService
2 CreateDeliveryCacheStorageServiceWithApplicationId
[?-2.3.0] 3
[?-2.3.0] 4

Equivalent to 3DS BOSS(SpotPass). See here for BCAT-content-container.

IBcatService

This is "nn::bcat::detail::ipc::IBcatService".

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
30100 SetPassphrase
[?-2.3.0] 30101
[?-2.3.0] 30102
30200 [3.0.0+] RegisterDeliveryTask
30201 [3.0.0+] UnregisterDeliveryTask
30202 [3.0.0+] BlockDeliveryTask
30203 [3.0.0+] UnblockDeliveryTask
30300 [8.0.0+] RegisterSystemApplicationDeliveryTasks
90100 GetDeliveryTaskList
90200 #GetDeliveryList
90201 [3.0.0+] ClearDeliveryCacheStorage
90202 [8.0.0+] ClearDeliveryTaskSubscriptionStatus
90300 [3.0.0+] GetPushNotificationLog

RequestSyncDeliveryCache

No input/output.

[3.0.0+] Now returns an #IDeliveryCacheProgressService.

RequestSyncDeliveryCacheWithApplicationId

Takes a total of 8-bytes of input, no output.

[3.0.0+] Now takes an additional 8-bytes of input, and returns an #IDeliveryCacheProgressService.

GetDeliveryCacheStorageUpdateNotifier

Takes a total of 8-bytes of input, returns an #INotifierService.

RequestSuspendDeliveryTask

Takes a total of 8-bytes of input, returns an #IDeliveryTaskSuspensionService.

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::detail::ipc::IDeliveryCacheProgressService".

Cmd Name
0 GetEvent
1 GetImpl

IDeliveryCacheStorageService

This is "nn::bcat::detail::ipc::IDeliveryCacheStorageService".

Cmd Name
0 CreateFileService
1 CreateDirectoryService
10 EnumerateDeliveryCacheDirectory

IDeliveryCacheFileService

This is "nn::bcat::detail::ipc::IDeliveryCacheFileService".

Cmd Name
0 Open
1 Read
2 GetSize
3 GetDigest

IDeliveryCacheDirectoryService

This is "nn::bcat::detail::ipc::IDeliveryCacheDirectoryService".

Cmd Name
0 Open
1 Read
2 GetCount

INotifierService

This is "nn::bcat::detail::ipc::INotifierService".

Added with [8.0.0+].

Cmd Name Notes
0 GetEvent

IDeliveryTaskSuspensionService

This is "nn::bcat::detail::ipc::IDeliveryTaskSuspensionService".

Added with [8.0.0+].

Cmd Name Notes
0 GetEvent

news:a, news:c, news:m, news:p, news:v

These are "nn::news::detail::ipc::IServiceCreator".

Cmd Name Notes
0 No input, returns an #INewsService.
1 No input, returns an #INewlyArrivedEventHolder.
2 No input, returns an #INewsDataService.
3 No input, returns an #INewsDatabaseService.
4 No input, returns an #IOverwriteEventHolder.

INewsService

This is "nn::news::detail::ipc::INewsService".

Cmd Name
10100
20100
30100
30101 [3.0.0+]
30110 [6.0.0+]
30200
30201 [8.0.0+]
30300
30400 [3.0.0+]
30500 [8.0.0+] ? (Takes a total of 8-bytes of input, a handle, and a type-0x9 input buffer, returns an #IUnknown2)
40100
40101 [3.0.0+]
40200
40201
90100

INewlyArrivedEventHolder

This is "nn::news::detail::ipc::INewlyArrivedEventHolder".

Cmd Name
0

INewsDataService

This is "nn::news::detail::ipc::INewsDataService".

Cmd Name
0
1
2
3
1001 [6.0.0+]

INewsDatabaseService

This is "nn::news::detail::ipc::INewsDatabaseService".

Cmd Name
0
1
2
3
4
5
1000 [6.0.0+]

IOverwriteEventHolder

This is "nn::news::detail::ipc::IOverwriteEventHolder".

Cmd Name
0

IUnknown2

This was added with [8.0.0+].

Cmd Name
0
1
2
3

prepo:a, prepo:a2, prepo:m, prepo:u, prepo:s

These are "nn::prepo::detail::ipc::IPrepoService".

Cmd Name
10100 SaveReportOld ([1.0.0-5.1.0] SaveReport)
10101 SaveReportWithUserOld ([1.0.0-5.1.0] SaveReportWithUser)
10102 [6.0.0+] SaveReport
10103 [6.0.0+] SaveReportWithUser
10200 RequestImmediateTransmission
10300 GetTransmissionStatus
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
40100 IsUserAgreementCheckEnabled
40101 SetUserAgreementCheckEnabled
90100 [6.0.0+] ReadAllReportFiles ([1.0.0-5.1.0] GetStorageUsage)
[5.0.0-5.1.0] 90200
[5.0.0-5.1.0] 90201
[5.0.0-5.1.0] 90300

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:

  • https://receive-%.dg.srv.nintendo.net/post

It also checks the validity of the device's authentication token using the following URL:

  • https://dauth-%.ndas.srv.nintendo.net/v1/device_auth_token