Applet Manager services: Difference between revisions
(37 intermediate revisions by 3 users not shown) | |||
Line 65: | Line 65: | ||
== ISystemAppletProxy == | == ISystemAppletProxy == | ||
This is "nn::am::service::ISystemAppletProxy". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 95: | Line 97: | ||
=== IHomeMenuFunctions === | === IHomeMenuFunctions === | ||
This is "nn::am::service::IHomeMenuFunctions". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 116: | Line 120: | ||
|- | |- | ||
| 41 || [12.0.0+] [[#IsRebootEnabled]] | | 41 || [12.0.0+] [[#IsRebootEnabled]] | ||
|- | |||
| 50 || [16.0.0+] [[#LaunchSystemApplet]] | |||
|- | |||
| 51 || [16.0.0+] [[#LaunchStarter]] | |||
|- | |- | ||
| 100 || [6.0.0+] [[#PopRequestLaunchApplicationForDebug]] | | 100 || [6.0.0+] [[#PopRequestLaunchApplicationForDebug]] | ||
Line 156: | Line 164: | ||
==== IsRebootEnabled ==== | ==== IsRebootEnabled ==== | ||
No input, returns an output bool. | No input, returns an output bool. | ||
==== LaunchSystemApplet ==== | |||
No input/output. | |||
This wraps [[NS_Services|ns]] LaunchSystemApplet, ignoring the u64 returned by that cmd (and other functionality). | |||
==== LaunchStarter ==== | |||
No input/output. | |||
This is similar to [[#LaunchSystemApplet]], except this uses [[NS_Services|ns]] LaunchLibraryApplet with a ProgramId from global state. | |||
The global state field is initialized elsewhere with the value of [[System_Settings|system-setting]] <code>am.debug!starter_id</code>, defaulting to ProgramId 0100000000001012 ([[Title_list|starter]]) if not available. | |||
==== PopRequestLaunchApplicationForDebug ==== | ==== PopRequestLaunchApplicationForDebug ==== | ||
Line 172: | Line 192: | ||
The cached value loaded from [[Settings_services#GetDebugModeFlag]] must be 1, otherwise an error is returned. | The cached value loaded from [[Settings_services#GetDebugModeFlag]] must be 1, otherwise an error is returned. | ||
Uses [[NS_Services | Uses [[NS_Services|ns]] LaunchDevMenu. | ||
This is used by [[qlaunch]]. On success, official sw will enter an infinite loop with sleep-thread value 86400000000000. | This is used by [[qlaunch]]. On success, official sw will enter an infinite loop with sleep-thread value 86400000000000. | ||
Line 180: | Line 200: | ||
==== ILockAccessor ==== | ==== ILockAccessor ==== | ||
This is "nn::am::service::ILockAccessor". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 210: | Line 232: | ||
=== IGlobalStateController === | === IGlobalStateController === | ||
This is "nn::am::service::IGlobalStateController". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 307: | Line 331: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || StartUpdate | ||
|- | |- | ||
| 1 || | | 1 || FinishUpdate | ||
|- | |- | ||
| 2 || | | 2 || [[#GetCradleDeviceInfo]] | ||
|- | |- | ||
| 3 || | | 3 || GetCradleDeviceInfoChangeEvent | ||
|- | |- | ||
| 4 || | | 4 || GetUpdateProgressInfo | ||
|- | |- | ||
| 5 || | | 5 || GetLastInternalResult | ||
|} | |} | ||
==== GetCradleDeviceInfo ==== | |||
No input, returns a 8-byte CradleDeviceInfo. | |||
[13.0.0+] Now returns a total of 0xC-bytes. | |||
=== IApplicationCreator === | === IApplicationCreator === | ||
This is "nn::am::service::IApplicationCreator". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || [[#CreateApplication]] | | 0 || [[#CreateApplication]] | ||
|- | |- | ||
| 1 || [[#PopLaunchRequestedApplication]] | | 1 || [[#PopLaunchRequestedApplication]] | ||
|- | |- | ||
| 10 || [[#CreateSystemApplication]] | | 10 || [[#CreateSystemApplication]] | ||
|- | |- | ||
| 100 || [[#PopFloatingApplicationForDevelopment]] | | 100 || [[#PopFloatingApplicationForDevelopment]] | ||
|} | |} | ||
Line 353: | Line 384: | ||
==== IApplicationAccessor ==== | ==== IApplicationAccessor ==== | ||
This is "nn::am::service::IApplicationAccessor". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 495: | Line 528: | ||
===== IAppletAccessor ===== | ===== IAppletAccessor ===== | ||
This is "nn::am::service::IAppletAccessor". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 531: | Line 566: | ||
== IAppletCommonFunctions == | == IAppletCommonFunctions == | ||
This is "nn::am::service::IAppletCommonFunctions". | |||
This was added with [7.0.0+]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 564: | Line 601: | ||
|- | |- | ||
| 70 || [11.0.0+] [[#SetCpuBoostRequestPriority]] | | 70 || [11.0.0+] [[#SetCpuBoostRequestPriority]] | ||
|- | |||
| 80 || [14.0.0+] SetHandlingCaptureButtonShortPressedMessageEnabledForApplet | |||
|- | |||
| 81 || [14.0.0+] SetHandlingCaptureButtonLongPressedMessageEnabledForApplet | |||
|- | |||
| 82 || [18.0.0+] | |||
|- | |||
| 90 || [15.0.0+] OpenNamedChannelAsParent | |||
|- | |||
| 91 || [15.0.0+] OpenNamedChannelAsChild | |||
|- | |||
| 100 || [15.0.0+] SetApplicationCoreUsageMode | |||
|- | |||
| 160 || [18.0.0+] | |||
|- | |||
| 161 || [18.0.0+] | |||
|- | |||
| 300 || [17.0.0+] | |||
|} | |} | ||
Line 610: | Line 665: | ||
== ILibraryAppletProxy == | == ILibraryAppletProxy == | ||
This is "nn::am::service::ILibraryAppletProxy". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 631: | Line 688: | ||
|- | |- | ||
| 21 || [7.0.0+] GetAppletCommonFunctions || No input, returns an [[#IAppletCommonFunctions]]. | | 21 || [7.0.0+] GetAppletCommonFunctions || No input, returns an [[#IAppletCommonFunctions]]. | ||
|- | |||
| 22 || [15.0.0+] GetHomeMenuFunctions || No input, returns an [[#IHomeMenuFunctions]]. | |||
|- | |||
| 23 || [15.0.0+] GetGlobalStateController || No input, returns an [[#IGlobalStateController]]. | |||
|- | |- | ||
| 1000 || GetDebugFunctions || Returns an [[#IDebugFunctions]]. | | 1000 || GetDebugFunctions || Returns an [[#IDebugFunctions]]. | ||
Line 636: | Line 697: | ||
=== ILibraryAppletSelfAccessor === | === ILibraryAppletSelfAccessor === | ||
This is "nn::am::service::ILibraryAppletSelfAccessor". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 709: | Line 772: | ||
|- | |- | ||
| 150 || [10.0.0+] [[#ShouldSetGpuTimeSliceManually]] || | | 150 || [10.0.0+] [[#ShouldSetGpuTimeSliceManually]] || | ||
|- | |||
| 160 || [17.0.0+] [[#Cmd160]] || | |||
|} | |} | ||
Line 841: | Line 906: | ||
==== ShouldSetGpuTimeSliceManually ==== | ==== ShouldSetGpuTimeSliceManually ==== | ||
No input, returns an output u8 bool. | No input, returns an output u8 bool. | ||
==== Cmd160 ==== | |||
No input, returns an output u64. Currently always returns 0. | |||
== IOverlayAppletProxy == | == IOverlayAppletProxy == | ||
This is "nn::am::service::IOverlayAppletProxy". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 864: | Line 934: | ||
|- | |- | ||
| 21 || [7.0.0+] GetAppletCommonFunctions || No input, returns an [[#IAppletCommonFunctions]]. | | 21 || [7.0.0+] GetAppletCommonFunctions || No input, returns an [[#IAppletCommonFunctions]]. | ||
|- | |||
| 23 || [15.0.0+] GetGlobalStateController || No input, returns an [[#IGlobalStateController]]. | |||
|- | |- | ||
| 1000 || GetDebugFunctions || Returns an [[#IDebugFunctions]]. | | 1000 || GetDebugFunctions || Returns an [[#IDebugFunctions]]. | ||
Line 869: | Line 941: | ||
=== IOverlayFunctions === | === IOverlayFunctions === | ||
This is "nn::am::service::IOverlayFunctions". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 892: | Line 966: | ||
|- | |- | ||
| 20 || [8.0.0+] [[#SetHandlingHomeButtonShortPressedEnabled]] | | 20 || [8.0.0+] [[#SetHandlingHomeButtonShortPressedEnabled]] | ||
|- | |||
| 21 || [14.0.0+] SetHandlingTouchScreenInputEnabled | |||
|- | |- | ||
| 30 || [9.0.0+] [[#SetHealthWarningShowingState]] | | 30 || [9.0.0+] [[#SetHealthWarningShowingState]] | ||
|- | |- | ||
| 31 || [10.0.0+] [[#IsHealthWarningRequired]] | | 31 || [10.0.0+] [[#IsHealthWarningRequired]] | ||
|- | |||
| 40 || [18.0.0+] | |||
|- | |||
| 41 || [18.0.0+] | |||
|- | |- | ||
| 90 || [7.0.0+] [[#SetRequiresGpuResourceUse]] | | 90 || [7.0.0+] [[#SetRequiresGpuResourceUse]] | ||
Line 961: | Line 1,041: | ||
== IApplicationProxy == | == IApplicationProxy == | ||
This is "nn::am::service::IApplicationProxy". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 985: | Line 1,067: | ||
=== IApplicationFunctions === | === IApplicationFunctions === | ||
This is "nn::am::service::IApplicationFunctions". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 1,031: | Line 1,115: | ||
| 33 || [[#EndBlockingHomeButton]] | | 33 || [[#EndBlockingHomeButton]] | ||
|- | |- | ||
| 34 || [10.0.0 | | 34 || [10.0.0-15.0.1] [[#SelectApplicationLicense]] | ||
|- | |- | ||
| 35 || [11.0.0+] [[#GetDeviceSaveDataSizeMax]] | | 35 || [11.0.0+] [[#GetDeviceSaveDataSizeMax]] | ||
|- | |||
| 36 || [14.0.0+] GetLimitedApplicationLicense | |||
|- | |||
| 37 || [14.0.0+] GetLimitedApplicationLicenseUpgradableEvent | |||
|- | |- | ||
| 40 || [[#NotifyRunning]] | | 40 || [[#NotifyRunning]] | ||
Line 1,261: | Line 1,349: | ||
User-processes create the tmem with an user-specified buffer with permissions=0. '''width''' = 1280 and '''height''' = 720. | User-processes create the tmem with an user-specified buffer with permissions=0. '''width''' = 1280 and '''height''' = 720. | ||
After the validation checks pass the input is passed to [[OMM_services|ommdisp]] cmd500. | |||
This is used as an overlay for screenshots. | This is used as an overlay for screenshots. | ||
Line 1,382: | Line 1,472: | ||
==== PrepareForJit ==== | ==== PrepareForJit ==== | ||
Takes no input. Launches the [[JIT_services|jit-sysmodule]] if it has not already been launched for the current application, storing a std::shared_ptr<> for jit-sysmodule process tracking object as an IApplicationFunctions member. | Takes no input. Launches the [[JIT_services|jit-sysmodule]] via [[NS_Services|ns]] LaunchLibraryApplet if it has not already been launched for the current application, storing a std::shared_ptr<> for jit-sysmodule process tracking object as an IApplicationFunctions member. | ||
~IApplicationFunctions() includes: | ~IApplicationFunctions() includes: | ||
Line 1,392: | Line 1,482: | ||
Thus the lifetime of the jit sysmodule is tied to the application which uses it, and each application gets its own fresh copy of the jit sysmodule. | Thus the lifetime of the jit sysmodule is tied to the application which uses it, and each application gets its own fresh copy of the jit sysmodule. | ||
AM can also optionally launch jit-sysmodule automatically if the [[NACP]] enables it. | |||
=== IMovieMaker === | === IMovieMaker === | ||
This is "nn::am::service::IMovieMaker". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 1,410: | Line 1,504: | ||
== ILibraryAppletCreator == | == ILibraryAppletCreator == | ||
This is "nn::am::service::ILibraryAppletCreator". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 1,462: | Line 1,558: | ||
=== ILibraryAppletAccessor === | === ILibraryAppletAccessor === | ||
This is "nn::am::service::ILibraryAppletAccessor". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 1,554: | Line 1,652: | ||
== ICommonStateGetter == | == ICommonStateGetter == | ||
This is "nn::am::service::ICommonStateGetter". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 1,639: | Line 1,739: | ||
|- | |- | ||
| 110 || [11.0.0+] [[#OpenMyGpuErrorHandler]] | | 110 || [11.0.0+] [[#OpenMyGpuErrorHandler]] | ||
|- | |||
| 120 || [13.0.0+] GetAppletLaunchedHistory | |||
|- | |- | ||
| 200 || [7.0.0+] [[#GetOperationModeSystemInfo]] | | 200 || [7.0.0+] [[#GetOperationModeSystemInfo]] | ||
Line 1,655: | Line 1,757: | ||
|- | |- | ||
| 503 || [12.0.0+] IsDisablingSleepSuppressed | | 503 || [12.0.0+] IsDisablingSleepSuppressed | ||
|- | |||
| 600 || [17.0.0+] OpenNamedChannelAsChild | |||
|- | |- | ||
| 900 || [11.0.0+] [[#SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled]] | | 900 || [11.0.0+] [[#SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled]] | ||
|- | |||
| 910 || [17.0.0+] GetLaunchRequiredTick | |||
|} | |} | ||
Line 1,847: | Line 1,953: | ||
=== ActivateMigrationService === | === ActivateMigrationService === | ||
No input/output. | No input/output. | ||
Besides various other functionality, if required this eventually uses [[NS_Services|ns]] LaunchLibraryApplet to launch [[Migration_services|migration]]. | |||
=== DeactivateMigrationService === | === DeactivateMigrationService === | ||
Line 1,897: | Line 2,005: | ||
== ISelfController == | == ISelfController == | ||
This is "nn::am::service::ISelfController". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 1,934: | Line 2,044: | ||
|- | |- | ||
| 20 || [4.0.0+] [[#SetDesirableKeyboardLayout]] | | 20 || [4.0.0+] [[#SetDesirableKeyboardLayout]] | ||
|- | |||
| 21 || [13.0.0+] GetScreenShotProgramId | |||
|- | |- | ||
| 40 || [[#CreateManagedDisplayLayer]] | | 40 || [[#CreateManagedDisplayLayer]] | ||
Line 1,946: | Line 2,058: | ||
|- | |- | ||
| 45 || [10.0.0+] [[#SetManagedDisplayLayerSeparationMode]] | | 45 || [10.0.0+] [[#SetManagedDisplayLayerSeparationMode]] | ||
|- | |||
| 46 || [13.0.0+] [[#SetRecordingLayerCompositionEnabled]] | |||
|- | |- | ||
| 50 || [[#SetHandlesRequestToDisplay]] | | 50 || [[#SetHandlesRequestToDisplay]] | ||
Line 1,988: | Line 2,102: | ||
|- | |- | ||
| 120 || [11.0.0+] [[#SaveCurrentScreenshot]] | | 120 || [11.0.0+] [[#SaveCurrentScreenshot]] | ||
|- | |||
| 130 || [13.0.0+] [[#SetRecordVolumeMuted]] | |||
|- | |- | ||
| 1000 || [7.0.0+] [[#GetDebugStorageChannel]] | | 1000 || [7.0.0+] [[#GetDebugStorageChannel]] | ||
Line 2,110: | Line 2,226: | ||
The input u32 must be 0-1. | The input u32 must be 0-1. | ||
=== SetRecordingLayerCompositionEnabled === | |||
Takes an input bool, no output. | |||
=== SetHandlesRequestToDisplay === | === SetHandlesRequestToDisplay === | ||
Line 2,209: | Line 2,328: | ||
sdknso exposes this under "nn::album::". | sdknso exposes this under "nn::album::". | ||
=== SetRecordVolumeMuted === | |||
Takes an input bool, no output. | |||
=== GetDebugStorageChannel === | === GetDebugStorageChannel === | ||
Line 2,216: | Line 2,338: | ||
== IStorageChannel == | == IStorageChannel == | ||
This is "nn::am::service::IStorageChannel". | |||
This was added with [7.0.0+]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 2,234: | Line 2,358: | ||
== IWindowController == | == IWindowController == | ||
This is "nn::am::service::IWindowController". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 2,290: | Line 2,416: | ||
== IAudioController == | == IAudioController == | ||
This is "nn::am::service::IAudioController". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 2,325: | Line 2,453: | ||
== IDisplayController == | == IDisplayController == | ||
This is "nn::am::service::IDisplayController". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 2,527: | Line 2,657: | ||
== ISystemAppletControllerForDebug == | == ISystemAppletControllerForDebug == | ||
This is "nn::am::service::ISystemAppletControllerForDebug". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 1 || RequestLaunchApplicationForDebug | | 1 || RequestLaunchApplicationForDebug | ||
|- | |- | ||
| 2 || [7.0.0+] | | 2 || [7.0.0+] [[#GetDebugStorageChannel]] | ||
|- | |- | ||
| 3 || [7.0.0+] | | 3 || [7.0.0+] [[#CreateStorageForDebug]] | ||
|- | |- | ||
| 4 || [12.0.0+] | | 4 || [12.0.0+] [[#CreateCradleFirmwareUpdaterForDebug]] | ||
|} | |} | ||
=== GetDebugStorageChannel === | |||
No input. Returns an output [[#IStorageChannel]]. | |||
=== CreateStorageForDebug === | |||
Takes a total of 8-bytes of input. Returns an [[#IStorage]]. | |||
=== CreateCradleFirmwareUpdaterForDebug === | |||
No input. Returns an [[#ICradleFirmwareUpdater]]. | |||
== IProcessWindingController == | == IProcessWindingController == | ||
This is "nn::am::service::IProcessWindingController". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 2,591: | Line 2,734: | ||
== IDebugFunctions == | == IDebugFunctions == | ||
This is "nn::am::service::IDebugFunctions". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || [[#NotifyMessageToHomeMenuForDebug]] | | 0 || [[#NotifyMessageToHomeMenuForDebug]] | ||
|- | |- | ||
| 1 || [1.0.0-9.2.0] [[#OpenMainApplication]] | | 1 || [1.0.0-9.2.0] [[#OpenMainApplication]] | ||
|- | |- | ||
| 10 || [[#PerformSystemButtonPressing]] | | 10 || [[#PerformSystemButtonPressing]] | ||
|- | |- | ||
| 20 || [[#InvalidateTransitionLayer]] | | 20 || [[#InvalidateTransitionLayer]] | ||
|- | |- | ||
| 30 || [6.0.0+] [[#RequestLaunchApplicationWithUserAndArgumentForDebug]] | | 30 || [6.0.0+] [[#RequestLaunchApplicationWithUserAndArgumentForDebug]] | ||
|- | |- | ||
| 31 || [12.0.0+] RequestLaunchApplicationByApplicationLaunchInfoForDebug | | 31 || [12.0.0+] RequestLaunchApplicationByApplicationLaunchInfoForDebug | ||
|- | |- | ||
| 40 || [6.0.0+] [[#GetAppletResourceUsageInfo]] | | 40 || [6.0.0+] [[#GetAppletResourceUsageInfo]] | ||
|- | |- | ||
| | | 50 || [15.0.0+] AddSystemProgramIdAndAppletIdForDebug | ||
|- | |- | ||
| | | 51 || [16.0.0+] AddOperationConfirmedLibraryAppletIdForDebug | ||
|- | |- | ||
| | | 52 || [17.0.0+] GetProgramIdFromAppletIdForDebug | ||
|- | |- | ||
| | | 53 || [18.0.0+] | ||
|- | |- | ||
| | | 100 || [7.0.0+] [[#SetCpuBoostModeForApplet]] | ||
|- | |- | ||
| | | 101 || [10.0.0+] [[#CancelCpuBoostModeForApplet]] | ||
|- | |- | ||
| | | 110 || [9.0.0+] [[#PushToAppletBoundChannelForDebug]] | ||
|- | |- | ||
| | | 111 || [9.0.0+] [[#TryPopFromAppletBoundChannelForDebug]] | ||
|- | |- | ||
| | | 120 || [9.0.0+] [[#AlarmSettingNotificationEnableAppEventReserve]] | ||
|- | |- | ||
| 132 || [9.0.0+] [[#FriendInvitationPushApplicationParameter]] || | | 121 || [9.0.0+] [[#AlarmSettingNotificationDisableAppEventReserve]] | ||
|- | |||
| 122 || [9.0.0+] [[#AlarmSettingNotificationPushAppEventNotify]] | |||
|- | |||
| 130 || [9.0.0+] [[#FriendInvitationSetApplicationParameter]] | |||
|- | |||
| 131 || [9.0.0+] [[#FriendInvitationClearApplicationParameter]] | |||
|- | |||
| 132 || [9.0.0+] [[#FriendInvitationPushApplicationParameter]] | |||
|- | |||
| 140 || [14.0.0+] RestrictPowerOperationForSecureLaunchModeForDebug | |||
|- | |||
| 200 || [15.0.0+] CreateFloatingLibraryAppletAccepterForDebug | |||
|- | |||
| 300 || [16.0.0+] TerminateAllRunningApplicationsForDebug | |||
|- | |||
| 410 || [18.0.0+] | |||
|- | |||
| 411 || [18.0.0+] | |||
|- | |||
| 412 || [18.0.0+] | |||
|- | |- | ||
| 900 || [12.0.0+] GetGrcProcessLaunchedSystemEvent | | 900 || [12.0.0+] GetGrcProcessLaunchedSystemEvent | ||
Line 2,709: | Line 2,874: | ||
== IStorage == | == IStorage == | ||
This is "nn::am::service::IStorage". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 2,723: | Line 2,890: | ||
== IStorageAccessor == | == IStorageAccessor == | ||
This is "nn::am::service::IStorageAccessor". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 2,735: | Line 2,904: | ||
== ITransferStorageAccessor == | == ITransferStorageAccessor == | ||
This is "nn::am::service::ITransferStorageAccessor". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 2,767: | Line 2,938: | ||
= idle:sys = | = idle:sys = | ||
This is "nn::idle::detail::IPolicyManagerSystem" | This is "nn::idle::detail::IPolicyManagerSystem" | ||
This was moved to [[OMM_services|omm]] with [14.0.0+]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 2,774: | Line 2,947: | ||
| 0 || GetAutoPowerDownEvent | | 0 || GetAutoPowerDownEvent | ||
|- | |- | ||
| 1 || [7.0.0+] IsAutoPowerDownRequested ([1.0.0-3.0.2] ) | |||
|- | |- | ||
| 2 || [1.0.0-3.0.2] | | 2 || [1.0.0-3.0.2] | ||
Line 2,789: | Line 2,960: | ||
== SetHandlingContext == | == SetHandlingContext == | ||
[3.0.0+] Now takes an additional 0x10-bytes of input. | [3.0.0+] Now takes an additional 0x10-bytes of input. | ||
[13.0.0+] Total input size is now 0x30 instead of 0x38. | |||
= omm = | = omm = | ||
Line 2,795: | Line 2,968: | ||
Operation Mode Manager (OMM) is a service responsible for arbitrating the operation changes between docked and handheld modes. | Operation Mode Manager (OMM) is a service responsible for arbitrating the operation changes between docked and handheld modes. | ||
Besides [[PTM_services|PTM]], this is the only service that interacts with the [[Dock]] through [[USB_services|usb:pd*]]. | Besides [[PTM_services|PTM]], this is the only service that interacts with the [[Dock]] through [[USB_services|usb:pd*]]. | ||
This was moved to [[OMM_services|omm]] with [14.0.0+]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 2,856: | Line 3,031: | ||
| 27 || [9.0.0+] GetAppletFullAwakingSystemEvent | | 27 || [9.0.0+] GetAppletFullAwakingSystemEvent | ||
|- | |- | ||
| 28 || [12.0.0+] | | 28 || [12.0.0+] [[#CreateCradleFirmwareUpdater]] | ||
|} | |} | ||
Line 2,864: | Line 3,039: | ||
This is used by [[#GetOperationModeSystemInfo|ICommonStateGetter GetOperationModeSystemInfo]]. | This is used by [[#GetOperationModeSystemInfo|ICommonStateGetter GetOperationModeSystemInfo]]. | ||
== | == CreateCradleFirmwareUpdater == | ||
No input | No input. Returns an [[#ICradleFirmwareUpdater]]. | ||
== ICradleFirmwareUpdater == | |||
This is "nn::am::service::ICradleFirmwareUpdater". | |||
This was added with [12.0.0+]. | This was added with [12.0.0+]. | ||
Line 2,874: | Line 3,051: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || Start | ||
|- | |- | ||
| 1 || | | 1 || Finish | ||
|- | |- | ||
| 2 || | | 2 || GetUpdateDeviceStatus | ||
|- | |- | ||
| 3 || | | 3 || GetUpdateProgress | ||
|- | |- | ||
| 4 || | | 4 || GetUpdateDeviceStatusChangeEvent | ||
|- | |- | ||
| 5 || | | 5 || GetUpdateProgress2 | ||
|} | |} | ||
= spsm = | = spsm = | ||
This is "nn::spsm::detail::IPowerStateInterface". | This is "nn::spsm::detail::IPowerStateInterface". | ||
This was moved to [[OMM_services|omm]] with [14.0.0+]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 2,940: | Line 3,119: | ||
This is "nn::capsrv::sf::IScreenShotApplicationService". | This is "nn::capsrv::sf::IScreenShotApplicationService". | ||
This was added with | This was added with [6.0.0+]. | ||
This can be used by applications to save screenshots. | This can be used by applications to save screenshots. | ||
Line 2,977: | Line 3,156: | ||
Takes an input 0x40-byte struct '''ScreenShotAttributeEx0''', an input u32, an input u64 AppletResourceUserId, a type-0x15 input buffer containing an [[Capture_services|UserIdList]], and a type-0x45 input buffer containing image data. Returns an [[Capture_services|ApplicationAlbumEntry]]. | Takes an input 0x40-byte struct '''ScreenShotAttributeEx0''', an input u32, an input u64 AppletResourceUserId, a type-0x15 input buffer containing an [[Capture_services|UserIdList]], and a type-0x45 input buffer containing image data. Returns an [[Capture_services|ApplicationAlbumEntry]]. | ||
= | = apm = | ||
This | This is "nn::am::service::IApmManager". | ||
This was added with [8.0.0+]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || [[#OpenSession]] | |||
|- | |||
| 1 || GetPerformanceMode | |||
|- | |||
| 6 || [7.0.0+] [[#IsCpuOverclockEnabled]] | |||
|} | |||
== | == OpenSession == | ||
Returns an [[#ISession]]. | |||
== IsCpuOverclockEnabled == | |||
No input, returns an output u8 bool. | |||
== ISession == | |||
This is "nn::am::service::IApmSession". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Cmd || Name | ||
|- | |- | ||
| | | 0 || SetPerformanceConfiguration | ||
|- | |- | ||
| 0x4 || 4 || 0x20 || Common Arguments size | | 1 || GetPerformanceConfiguration | ||
|- | |||
| 2 || [8.0.0+] SetCpuOverclockEnabled | |||
|} | |||
= Library Applets = | |||
This section documents library applet launching. | |||
Before starting the applet, [[#IStorage]]s are [[#ILibraryAppletCreator|created]] and written, then passed to [[#ILibraryAppletAccessor]] PushInData. The [[#IStorage]] session is closed afterwards. The first [[#IStorage]] is [[#CommonArguments]], followed by any applet-specific [[#IStorage]]s. | |||
Once the applet finishes running successfully, [[#ILibraryAppletAccessor]] PopOutData can be used to get the applet-specific [[#IStorage]] containing the applet output data. | |||
== CommonArguments == | |||
The first [[#CreateStorage|IStorage]] passed to applets should contain the common library applet arguments. This is populated by <code>nn::la::CommonArgumentsWriter</code> and has the following format. | |||
This struct is 0x20-bytes. | |||
Official sw handles the first 8-bytes separately, which is a header. With CommonArguments version 0x0, the header is 4-bytes, while starting with version 0x1 it's 8-bytes. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset || Size || Typical Value || Notes | |||
|- | |||
| 0x0 || 4 || 1 || Common Arguments version | |||
|- | |||
| 0x4 || 4 || 0x20 || Common Arguments size | |||
|- | |- | ||
| 0x8 || 4 || || Library applet version (API version) | | 0x8 || 4 || || Library applet version (API version) | ||
Line 3,133: | Line 3,348: | ||
| 0100000000001038 | | 0100000000001038 | ||
| [10.0.0+] LibraryAppletSample (sample) | | [10.0.0+] LibraryAppletSample (sample) | ||
|- | |||
| 0x22 | |||
| 0100000000001007 | |||
| [13.0.0+] LibraryAppletPromoteQualification (playerSelect) | |||
|- | |||
| 0x32 | |||
| 010000000000100F | |||
| [17.0.0+] [[Internet_Browser#Offline_Applet|LibraryAppletOfflineWeb (offlineWeb)]] | |||
|- | |||
| 0x33 | |||
| 010000000000100F | |||
| [17.0.0+] [[Internet_Browser#Offline_Applet|LibraryAppletOfflineWeb (offlineWeb)]] | |||
|- | |||
| 0x35 | |||
| [17.0.0+] 0100000000001010 ([16.0.0-16.1.0] 0100000000001042) | |||
| [17.0.0+] [[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]] ([16.0.0-16.1.0] ) | |||
|- | |||
| 0x36 | |||
| [17.0.0+] 0100000000001010 ([16.0.0-16.1.0] 0100000000001042) | |||
| [17.0.0+] [[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]] ([16.0.0-16.1.0] ) | |||
|- | |||
| 0x37 | |||
| [17.0.0+] 0100000000001010 ([16.0.0-16.1.0] 0100000000001042) | |||
| [17.0.0+] [[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]] ([16.0.0-16.1.0] ) | |||
|- | |||
| 0x38 | |||
| 0100000000001043 | |||
| [16.0.0-16.1.0] | |||
|- | |||
| 0x50 | |||
| 0100000000001007 | |||
| [18.0.0+] | |||
|- | |||
| 0x51 | |||
| 0100000000001007 | |||
| [18.0.0+] | |||
|- | |- | ||
| 0x3E8 | | 0x3E8 | ||
| | | | ||
| [10.0.0 | | [10.0.0-16.1.0] DevlopmentTool | ||
|- | |- | ||
| 0x3F1 | | 0x3F1 | ||
| 010000000000D619 | | 010000000000D619 | ||
| [10.0.0 | | [10.0.0-16.1.0] CombinationLA | ||
|- | |- | ||
| 0x3F2 | | 0x3F2 | ||
| 010000000000D610 | | 010000000000D610 | ||
| [10.0.0 | | [10.0.0-16.1.0] AeSystemApplet | ||
|- | |- | ||
| 0x3F3 | | 0x3F3 | ||
| 010000000000D611 | | 010000000000D611 | ||
| [10.0.0 | | [10.0.0-16.1.0] AeOverlayApplet | ||
|- | |- | ||
| 0x3F4 | | 0x3F4 | ||
| 010000000000D612 | | 010000000000D612 | ||
| [10.0.0 | | [10.0.0-16.1.0] AeStarter | ||
|- | |- | ||
| 0x3F5 | | 0x3F5 | ||
| 010000000000D613 | | 010000000000D613 | ||
| [10.0.0 | | [10.0.0-16.1.0] AeLibraryAppletAlone | ||
|- | |- | ||
| 0x3F6 | | 0x3F6 | ||
| 010000000000D614 | | 010000000000D614 | ||
| [10.0.0 | | [10.0.0-16.1.0] AeLibraryApplet1 | ||
|- | |- | ||
| 0x3F7 | | 0x3F7 | ||
| 010000000000D615 | | 010000000000D615 | ||
| [10.0.0 | | [10.0.0-16.1.0] AeLibraryApplet2 | ||
|- | |- | ||
| 0x3F8 | | 0x3F8 | ||
| 010000000000D616 | | 010000000000D616 | ||
| [10.0.0 | | [10.0.0-16.1.0] AeLibraryApplet3 | ||
|- | |- | ||
| 0x3F9 | | 0x3F9 | ||
| 010000000000D617 | | 010000000000D617 | ||
| [10.0.0 | | [10.0.0-16.1.0] AeLibraryApplet4 | ||
|- | |- | ||
| 0x3FA | | 0x3FA | ||
| 010000000000D60A | | 010000000000D60A | ||
| [10.0.0 | | [10.0.0-16.1.0] AppletISA | ||
|- | |- | ||
| 0x3FB | | 0x3FB | ||
| 010000000000D60B | | 010000000000D60B | ||
| [10.0.0 | | [10.0.0-16.1.0] AppletIOA | ||
|- | |- | ||
| 0x3FC | | 0x3FC | ||
| 010000000000D60C | | 010000000000D60C | ||
| [10.0.0 | | [10.0.0-16.1.0] AppletISTA | ||
|- | |- | ||
| 0x3FD | | 0x3FD | ||
| 010000000000D60D | | 010000000000D60D | ||
| [10.0.0 | | [10.0.0-16.1.0] AppletILA1 | ||
|- | |- | ||
| 0x3FE | | 0x3FE | ||
| 010000000000D60E | | 010000000000D60E | ||
| [10.0.0+] AppletILA2 | | [10.0.0-16.1.0] AppletILA2 | ||
|- | |||
| 0x700000C8 | |||
| 010000000000D65B | |||
| [18.0.0+] | |||
|- | |||
| 0x700000C9 | |||
| 010000000000D65C | |||
| [18.0.0+] | |||
|- | |||
| 0x700000DC | |||
| 010000000000D619 | |||
| [17.0.0+] CombinationLA | |||
|- | |||
| 0x700000E6 | |||
| 010000000000D610 | |||
| [17.0.0+] AeSystemApplet | |||
|- | |||
| 0x700000E7 | |||
| 010000000000D611 | |||
| [17.0.0+] AeOverlayApplet | |||
|- | |||
| 0x700000E8 | |||
| 010000000000D612 | |||
| [17.0.0+] AeStarter | |||
|- | |||
| 0x700000E9 | |||
| 010000000000D613 | |||
| [17.0.0+] AeLibraryAppletAlone | |||
|- | |||
| 0x700000EA | |||
| 010000000000D614 | |||
| [17.0.0+] AeLibraryApplet1 | |||
|- | |||
| 0x700000EB | |||
| 010000000000D615 | |||
| [17.0.0+] AeLibraryApplet2 | |||
|- | |||
| 0x700000EC | |||
| 010000000000D616 | |||
| [17.0.0+] AeLibraryApplet3 | |||
|- | |||
| 0x700000ED | |||
| 010000000000D617 | |||
| [17.0.0+] AeLibraryApplet4 | |||
|- | |||
| 0x700000F0 | |||
| 010000000000D60A | |||
| [17.0.0+] AppletISA | |||
|- | |||
| 0x700000F1 | |||
| 010000000000D60B | |||
| [17.0.0+] AppletIOA | |||
|- | |||
| 0x700000F2 | |||
| 010000000000D60C | |||
| [17.0.0+] AppletISTA | |||
|- | |||
| 0x700000F3 | |||
| 010000000000D60D | |||
| [17.0.0+] AppletILA1 | |||
|- | |||
| 0x700000F4 | |||
| 010000000000D60E | |||
| [17.0.0+] AppletILA2 | |||
|} | |} | ||
= LibraryAppletMode = | = LibraryAppletMode = | ||
This is "nn::applet::LibraryAppletMode". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 3,205: | Line 3,522: | ||
|- | |- | ||
| 0x1 | | 0x1 | ||
| | | PartialForeground | ||
|- | |- | ||
| 0x2 | | 0x2 | ||
| | | NoUi | ||
|- | |- | ||
| 0x3 | | 0x3 | ||
| | | PartialForegroundWithIndirectDisplay (see also [[#GetIndirectLayerConsumerHandle]], only used by swkbd [[Software_Keyboard|InlineKeyboard]]) | ||
|- | |- | ||
| 0x4 | | 0x4 | ||
| AllForegroundInitiallyHidden | | AllForegroundInitiallyHidden (can be used by [7.0.0+] [[Internet_Browser|WebSession]]) | ||
|} | |} | ||
Line 3,225: | Line 3,542: | ||
! Description | ! Description | ||
|- | |- | ||
| | | 0 || None | ||
|- | |- | ||
| | | 1 || ChangeIntoForeground | ||
|- | |- | ||
| | | 2 || ChangeIntoBackground | ||
|- | |- | ||
| | | 4 || Exit | ||
|- | |- | ||
| | | 6 || ApplicationExited | ||
|- | |- | ||
| | | 7 || | ||
|- | |- | ||
| | | 15 || [[#FocusState|FocusStateChanged]] | ||
|- | |- | ||
| | | 16 || [[#SetRestartMessageEnabled|Resume]] | ||
|- | |- | ||
| | | 20 || DetectShortPressingHomeButton | ||
|- | |- | ||
| 21 || DetectLongPressingHomeButton | |||
|- | |- | ||
| 0 || Handheld | | 22 || DetectShortPressingPowerButton | ||
|- | |||
| 23 || DetectMiddlePressingPowerButton | |||
|- | |||
| 24 || DetectLongPressingPowerButton | |||
|- | |||
| 25 || RequestToPrepareSleep | |||
|- | |||
| 26 || FinishedSleepSequence | |||
|- | |||
| 27 || SleepRequiredByHighTemperature | |||
|- | |||
| 28 || SleepRequiredByLowBattery | |||
|- | |||
| 29 || AutoPowerDown | |||
|- | |||
| 30 || [[#OperationMode|OperationModeChanged]] | |||
|- | |||
| 31 || [[#PerformanceMode|PerformanceModeChanged]] | |||
|- | |||
| 32 || DetectReceivingCecSystemStandby | |||
|- | |||
| 33 || SdCardRemoved | |||
|- | |||
| 34 || | |||
|- | |||
| 50 || LaunchApplicationRequested | |||
|- | |||
| 51 || [[#SetHandlesRequestToDisplay|RequestToDisplay]] | |||
|- | |||
| 55 || ShowApplicationLogo | |||
|- | |||
| 56 || HideApplicationLogo | |||
|- | |||
| 57 || ForceHideApplicationLogo | |||
|- | |||
| 58 || | |||
|- | |||
| 59 || | |||
|- | |||
| 60 || FloatingApplicationDetected | |||
|- | |||
| 61 || [7.0.0+] PerformanceConfigurationChanged | |||
|- | |||
| 70 || | |||
|- | |||
| 71 || | |||
|- | |||
| 72 || | |||
|- | |||
| 73 || | |||
|- | |||
| 75 || | |||
|- | |||
| 80 || | |||
|- | |||
| 81 || | |||
|- | |||
| 82 || | |||
|- | |||
| 83 || | |||
|- | |||
| 85 || | |||
|- | |||
| 86 || | |||
|- | |||
| 90 || [[#SetRequiresCaptureButtonShortPressedMessage|DetectShortPressingCaptureButton]] | |||
|- | |||
| 92 || [[#SetAlbumImageTakenNotificationEnabled|AlbumScreenShotTaken]] | |||
|- | |||
| 93 || AlbumRecordingSaved | |||
|- | |||
| 94 || | |||
|- | |||
| 100 || | |||
|- | |||
| 101 || | |||
|- | |||
| 110 || [14.0.0+] DetectShortPressingCaptureButtonForApplet | |||
|- | |||
| 111 || [14.0.0+] DetectLongPressingCaptureButtonForApplet | |||
|- | |||
| 1000 || | |||
|} | |||
= OperationMode = | |||
This is "nn::oe::OperationMode". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value | |||
! Description | |||
|- | |||
| 0 || Handheld | |||
|- | |- | ||
| 1 || Console | | 1 || Console | ||
Line 3,424: | Line 3,827: | ||
= AppletAttribute = | = AppletAttribute = | ||
This is "nn::am::AppletAttribute". This struct is | This is "nn::am::AppletAttribute". This struct is 0x80 bytes. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 3,569: | Line 3,972: | ||
= LaunchRequiredVersion = | = LaunchRequiredVersion = | ||
This is "nn::oe::LaunchRequiredVersion". This is a 0x40-byte struct with 1-byte alignment. | This is "nn::oe::LaunchRequiredVersion". This is a 0x40-byte struct with 1-byte alignment. | ||
= ServerEnvironmentType = | |||
This is "nn::oe::ServerEnvironmentType". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value | |||
! Description | |||
|- | |||
| 0 || dd | |||
|- | |||
| 1 || lp | |||
|- | |||
| 2 || sd | |||
|- | |||
| 3 || sp | |||
|- | |||
| 4 || dp | |||
|} | |||
= Notes = | = Notes = | ||
AM-sysmodule will only initialize [[Shared_Database_services|pdm:ntfy]] / use pdm:ntfy service commands when the value from [[Process_Manager_services|pm:bm]] GetBootMode is not 0x1. | AM-sysmodule will only initialize [[Shared_Database_services|pdm:ntfy]] / use pdm:ntfy service commands when the value from [[Process_Manager_services|pm:bm]] GetBootMode is not 0x1 (Maintenance). | ||
An object constructor also writes the output from [[Process_Manager_services|pm:bm]] GetBootMode into the created object. A vfunc for this object checks whether this field is Maintenance: if so, it calls a vfunc then a func and returns. Otherwise after calling various (v)funcs, if required this eventually uses [[OMM_services|ommdisp]] cmd600. | |||
[[Category:Services]] | [[Category:Services]] |