Shared Database services: Difference between revisions

No edit summary
 
(7 intermediate revisions by the same user not shown)
Line 3: Line 3:


"pl:s" has max_sessions 2 (5 with [16.0.0+]).
"pl:s" has max_sessions 2 (5 with [16.0.0+]).
The Function cmds (including GetRequiredApplicationVersion) uses data parsed from [[#FunctionBlackList|FunctionBlackList]].


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 22: Line 24:
| 6 || [4.0.0-15.0.1] GetSharedFontInOrderOfPriorityForSystem
| 6 || [4.0.0-15.0.1] GetSharedFontInOrderOfPriorityForSystem
|-
|-
| 100 || [8.0.0+] RequestApplicationFunctionAuthorization
| 100 || [8.0.0+] [[#RequestApplicationFunctionAuthorization|RequestApplicationFunctionAuthorization]]
|-
|-
| 101 || [8.0.0+] RequestApplicationFunctionAuthorizationByProcessId
| 101 || [8.0.0+] [[#RequestApplicationFunctionAuthorizationByProcessId|RequestApplicationFunctionAuthorizationByProcessId]]
|-
|-
| 102 || [10.0.0+] RequestApplicationFunctionAuthorizationByApplicationId
| 102 || [10.0.0+] [[#RequestApplicationFunctionAuthorizationByApplicationId|RequestApplicationFunctionAuthorizationByApplicationId]]
|-
|-
| 103 || [11.0.0+] RefreshApplicationFunctionBlackListDebugRecord
| 103 || [11.0.0+] [[#RefreshApplicationFunctionBlackListDebugRecord|RefreshApplicationFunctionBlackListDebugRecord]]
|-
|-
| 104 || [11.0.0+] RequestApplicationFunctionAuthorizationByProgramId
| 104 || [11.0.0+] [[#RequestApplicationFunctionAuthorizationByProgramId|RequestApplicationFunctionAuthorizationByProgramId]]
|-
|-
| 105 || [11.0.0+] GetFunctionBlackListSystemVersionToAuthorize
| 105 || [11.0.0+] [[#GetFunctionBlackListSystemVersionToAuthorize|GetFunctionBlackListSystemVersionToAuthorize]]
|-
|-
| 106 || [11.0.0+] GetFunctionBlackListVersion
| 106 || [11.0.0+] [[#GetFunctionBlackListVersion|GetFunctionBlackListVersion]]
|-
|-
| 107 || [17.0.0+] RequestApplicationFunctionAuthorizationByApplicationIdAndProgramId
| 107 || [17.0.0+] [[#RequestApplicationFunctionAuthorizationByApplicationIdAndProgramId|RequestApplicationFunctionAuthorizationByApplicationIdAndProgramId]]
|-
|-
| 108 || [20.0.0+] GetRequiredApplicationVersion
| 108 || [20.0.0+] [[#GetRequiredApplicationVersion|GetRequiredApplicationVersion]]
|-
|-
| 1000 || [9.0.0+] LoadNgWordDataForPlatformRegionChina
| 1000 || [9.0.0+] LoadNgWordDataForPlatformRegionChina
Line 100: Line 102:


* Nintendo Extended: Contains Nintendo-specific characters, including HID buttons, HID controller styles, applet icons, Wii(U) icons,  etc.
* Nintendo Extended: Contains Nintendo-specific characters, including HID buttons, HID controller styles, applet icons, Wii(U) icons,  etc.
== RequestApplicationFunctionAuthorization ==
Takes a PID, an u8 [[#ApplicationFunctionAuthorizationId|ApplicationFunctionAuthorizationId]], an u64 pid_reserved, no output.
== RequestApplicationFunctionAuthorizationByProcessId ==
Takes an u8 [[#ApplicationFunctionAuthorizationId|ApplicationFunctionAuthorizationId]], an u64 "nn::os::ProcessId", no output.
Uses the same cmd impl func as [[#RequestApplicationFunctionAuthorization|RequestApplicationFunctionAuthorization]].
== RequestApplicationFunctionAuthorizationByApplicationId ==
Takes an u8 [[#ApplicationFunctionAuthorizationId|ApplicationFunctionAuthorizationId]], an u32, an [[NCM_services#ApplicationId|ApplicationId]], no output.
== RefreshApplicationFunctionBlackListDebugRecord ==
No input/output.
== RequestApplicationFunctionAuthorizationByProgramId ==
Takes an u8 [[#ApplicationFunctionAuthorizationId|ApplicationFunctionAuthorizationId]], an [[NCM_services#ProgramId|ProgramId]], no output.
== GetFunctionBlackListSystemVersionToAuthorize ==
Takes an u8 [[#ApplicationFunctionAuthorizationId|ApplicationFunctionAuthorizationId]], an [[NCM_services#ApplicationId|ApplicationId]], returns an [[#FunctionBlackListSystemVersion|FunctionBlackListSystemVersion]].
== GetFunctionBlackListVersion ==
No input, returns an output u32.
== RequestApplicationFunctionAuthorizationByApplicationIdAndProgramId ==
Takes an u8 [[#ApplicationFunctionAuthorizationId|ApplicationFunctionAuthorizationId]], an u32, an [[NCM_services#ApplicationId|ApplicationId]], an [[NCM_services#ProgramId|ProgramId]], no output.
== GetRequiredApplicationVersion ==
Takes an u8 [[#ApplicationFunctionAuthorizationId|ApplicationFunctionAuthorizationId]], an [[NCM_services#ApplicationId|ApplicationId]], returns an u32.


= mii:u, mii:e =
= mii:u, mii:e =
Line 583: Line 614:
| 5 || Launch
| 5 || Launch
|}
|}
= FunctionBlackListSystemVersion =
This is "nn::pl::FunctionBlackListSystemVersion". This is a 0x4-byte struct.


= VersionListEntry =
= VersionListEntry =
Line 1,019: Line 1,053:


The func which initializes pl:* services calls a func, which then uses [[Process_Manager_services|pm:bm]] GetBootMode. This checks for BootMode Normal - the functionality here has no affect on whether pl:* services are available however.
The func which initializes pl:* services calls a func, which then uses [[Process_Manager_services|pm:bm]] GetBootMode. This checks for BootMode Normal - the functionality here has no affect on whether pl:* services are available however.
= FunctionBlackList =
The FunctionBlackList SystemData contains "blacklist.json", which has the following structure (used by [[#pl:s|pl:s]]):
* "compatibility_version": <number> (must be within 32bits)
* "version": <number> (must be within 32bits)
* "records": Array, each object entry can then contain:
** "program_id" or "application_id": "0x<hex id>" (lowercase)
** "function_id": "<function>", where <function> is the same as [[#ApplicationFunctionAuthorizationId|ApplicationFunctionAuthorizationId]] ("LocalNetworkMode", etc).
** "function_id_raw": <number>, directly sets the [[#ApplicationFunctionAuthorizationId|ApplicationFunctionAuthorizationId]] value.
** "type": "ApplicationUpdateRequired", "Prohibited", or "SystemUpdateRequired"
** "type_raw": <number>, directly sets the value for the above "type".
** "application": This object can contain:
*** "version": <number> (must be within 32bits)
** "system": This object can contain:
*** "major": <number> (must be <=0xFF)
*** "minor": <number> (must be <=0xFF)
*** "micro": <number> (must be <=0xFF)
The "blacklist.json" "compatibility_version" field is value 1, "version" is value 1, and the "records" array is empty.
[S2] [20.1.0+] The "blacklist.json" "version" field is now value 4, and the "records" array is now filled in with entries for Applications ([19.0.0] same as NX). All records currently only have "function_id" = "Launch". There's currently no records with fields "program_id", or "*_raw". The "application" object in not present in records with "type" = "Prohibited". There's currently no records with "type" = "SystemUpdateRequired", and the "system" object is not present.
The "application" "version" is the Patch [[CNMT|Version]].
There's records for both S1 and S2 Applications. The S2 Applications all have "function_id" = "Launch", "type" = "ApplicationUpdateRequired", "application" "version" = 0 (likewise with some S1 Applications).
Note that in some cases there's records with ApplicationIds where the S2 Application is not (yet?) available on eShop.


[[Category:Services]]
[[Category:Services]]