Applet Manager services: Difference between revisions

(40 intermediate revisions by 5 users not shown)
Line 12: Line 12:
| 100 || OpenSystemAppletProxy || Returns an [[#ISystemAppletProxy]].
| 100 || OpenSystemAppletProxy || Returns an [[#ISystemAppletProxy]].
|-
|-
| 200 || OpenLibraryAppletProxy ( [3.0.0+] OpenLibraryAppletProxyOld) || Returns an [[#ILibraryAppletProxy]].
| 200 || OpenLibraryAppletProxyOld ([1.0.0-2.3.0] OpenLibraryAppletProxy) || Returns an [[#ILibraryAppletProxy]].
|-
|-
| 201 || [3.0.0+] [[#OpenLibraryAppletProxy]] || Returns an [[#ILibraryAppletProxy]].
| 201 || [3.0.0+] [[#OpenLibraryAppletProxy]] || Returns an [[#ILibraryAppletProxy]].
Line 21: Line 21:
|-
|-
| 400 || CreateSelfLibraryAppletCreatorForDevelop || Returns an [[#ILibraryAppletCreator]].
| 400 || CreateSelfLibraryAppletCreatorForDevelop || Returns an [[#ILibraryAppletCreator]].
|-
|}
|}


All of these commands except [[#OpenLibraryAppletProxy]] take the same input as [[#OpenApplicationProxy]], with the same user-process retry-loop as [[#OpenApplicationProxy]].
All of these commands except [[#OpenLibraryAppletProxy]] take the same input as [[#OpenApplicationProxy]], with the same user-process retry-loop as [[#OpenApplicationProxy]]. These Open*Proxy commands (including appletOE) doesn't seem to usable from processes which aren't actual applets (such as sysmodules), at least for applet-types which aren't already in use.


This service seems to be used by all system non-regular-applications.
This service is used by all system non-regular-applications.
 
The 01000000000010XX system [[Title_list|titles]] use the following applet types(above Open{type}Proxy commands):
* "qlaunch": SystemApplet
* "overlay": OverlayApplet
* "starter": SystemApplication
* "maintenance": SystemApplet
* All others: LibraryApplet


== OpenLibraryAppletProxy ==
== OpenLibraryAppletProxy ==
Returns an [[#IApplicationProxy]].
Returns an [[#ILibraryAppletProxy]].


Takes a [[IPC_Marshalling|reserved]] input u64(official user-processes use hard-coded value 0), a PID,a process copy-handle(cur-proc handle alias), and an 0x80-byte type-0x15 input buffer '''AppletAttribute'''.
Takes a [[IPC_Marshalling|reserved]] input u64(official user-processes use hard-coded value 0), a PID,a process copy-handle(cur-proc handle alias), and an 0x80-byte type-0x15 input buffer '''AppletAttribute'''.
Line 75: Line 81:
| 12 || UnlockForeground ||  
| 12 || UnlockForeground ||  
|-
|-
| 20 || PopFromGeneralChannel || Returns an [[Filesystem_services#IStorage|IStorage]].
| 20 || PopFromGeneralChannel || Returns an [[#IStorage]].
|-
|-
| 21 || GetPopFromGeneralChannelEvent ||
| 21 || GetPopFromGeneralChannelEvent ||
Line 122: Line 128:
| 14 || [2.0.0+] ShouldSleepOnBoot
| 14 || [2.0.0+] ShouldSleepOnBoot
|-
|-
| 15 || [4.0.0+] GetHdcpAuthenticationFailedEvent
|}
|}


Line 165: Line 172:
| 120 || GetApplicationId ||  
| 120 || GetApplicationId ||  
|-
|-
| 121 || PushLaunchParameter || Returns an [[Filesystem_services#IStorage|IStorage]].
| 121 || PushLaunchParameter || Takes an [[#IStorage]].
|-
|-
| 122 || GetApplicationControlProperty ||  
| 122 || GetApplicationControlProperty ||  
Line 220: Line 227:
! Cmd || Name || Notes
! Cmd || Name || Notes
|-
|-
| 0 || PopInData || Returns an [[Filesystem_services#IStorage|IStorage]].
| 0 || PopInData || Returns an [[#IStorage]].
|-
|-
| 1 || PushOutData || Returns an [[Filesystem_services#IStorage|IStorage]].
| 1 || PushOutData || Takes an [[#IStorage]].
|-
|-
| 2 || PopInteractiveInData || Returns an [[Filesystem_services#IStorage|IStorage]].
| 2 || PopInteractiveInData || Returns an [[#IStorage]].
|-
|-
| 3 || PushInteractiveOutData || Returns an [[Filesystem_services#IStorage|IStorage]].
| 3 || PushInteractiveOutData || Takes an [[#IStorage]].
|-
|-
| 5 || GetPopInDataEvent ||
| 5 || GetPopInDataEvent ||
Line 232: Line 239:
| 6 || GetPopInteractiveInDataEvent ||
| 6 || GetPopInteractiveInDataEvent ||
|-
|-
| 10 || ExitProcessAndReturn ||
| 10 || [[#ExitProcessAndReturn]] ||
|-
|-
| 11 || GetLibraryAppletInfo ||
| 11 || [[#GetLibraryAppletInfo]] ||
|-
|-
| 12 || GetMainAppletIdentityInfo ||
| 12 || GetMainAppletIdentityInfo ||
Line 248: Line 255:
| 17 || [2.0.0+] GetCallerAppletIdentityInfoStack ||
| 17 || [2.0.0+] GetCallerAppletIdentityInfoStack ||
|-
|-
| 20 || PopExtraStorage || Returns an [[Filesystem_services#IStorage|IStorage]].
| 18 || [4.0.0+] GetNextReturnDestinationAppletIdentityInfo ||
|-
| 19 || [4.0.0+] GetDesirableKeyboardLayout ||
|-
| 20 || PopExtraStorage || Returns an [[#IStorage]].
|-
|-
| 25 || GetPopExtraStorageEvent ||
| 25 || GetPopExtraStorageEvent ||
|-
|-
| 30 || UnpopInData || Returns an [[Filesystem_services#IStorage|IStorage]].
| 30 || UnpopInData || Takes an [[#IStorage]].
|-
|-
| 31 || UnpopExtraStorage || Returns an [[Filesystem_services#IStorage|IStorage]].
| 31 || UnpopExtraStorage || Takes an [[#IStorage]].
|-
|-
| 40 || [2.0.0+] GetIndirectLayerProducerHandle ||
| 40 || [2.0.0+] GetIndirectLayerProducerHandle ||
|-
|-
| 50 || [2.0.0+] ReportVisibleError ||
| 50 || [2.0.0+] ReportVisibleError ||
|-
| 51 || [4.0.0+] ReportVisibleErrorWithErrorContext ||
|-
| 60 || [4.0.0+] [[#GetMainAppletApplicationDesiredLanguage]] ||
|-
| 90 || [5.0.0+] CreateApplicationAndPushAndRequestToLaunch ||
|-
| 100 || [4.0.0+] CreateGameMovieTrimmer ||
|}
|}
==== ExitProcessAndReturn ====
No input/output.
Exits the LibraryApplet and returns to running the title which launched this LibraryApplet ([[qlaunch]] for example).
==== GetLibraryAppletInfo ====
No input. Returns an u64 LibraryAppletInfo: +0 u32 is [[#AppletId]], +4 u32 is [[#LibraryAppletMode]].
==== GetMainAppletApplicationDesiredLanguage ====
No input, returns an output [[Settings_services#LanguageCode|LanguageCode]].


== IOverlayAppletProxy ==
== IOverlayAppletProxy ==
Line 283: Line 313:
|-
|-
| 1000 || GetDebugFunctions || Returns an [[#IDebugFunctions]].
| 1000 || GetDebugFunctions || Returns an [[#IDebugFunctions]].
|-
|}
|}


Line 328: Line 357:
|-
|-
| 1000 || GetDebugFunctions || Returns an [[#IDebugFunctions]].
| 1000 || GetDebugFunctions || Returns an [[#IDebugFunctions]].
|-
|}
|}


Line 336: Line 364:
! Cmd || Name || Notes
! Cmd || Name || Notes
|-
|-
| 1 || PopLaunchParameter || Returns an [[Filesystem_services#IStorage|IStorage]].
| 1 || PopLaunchParameter || Returns an [[#IStorage]].
|-
|-
| 10 || CreateApplicationAndPushAndRequestToStart || Returns an [[Filesystem_services#IStorage|IStorage]].
| 10 || CreateApplicationAndPushAndRequestToStart || Takes an [[#IStorage]].
|-
|-
| 11 || [2.0.0+] CreateApplicationAndPushAndRequestToStartForQuest || Returns an [[Filesystem_services#IStorage|IStorage]].
| 11 || [2.0.0+] CreateApplicationAndPushAndRequestToStartForQuest || Takes an [[#IStorage]].
|-
| 12 || [4.0.0+] CreateApplicationAndRequestToStart ||
|-
| 13 || [4.0.0+] CreateApplicationAndRequestToStartForQuest ||
|-
|-
| 20 || EnsureSaveData ||
| 20 || EnsureSaveData ||
|-
|-
| 21 || GetDesiredLanguage ||
| 21 || [[#GetDesiredLanguage]] ||
|-
|-
| 22 || SetTerminateResult ||
| 22 || [[#SetTerminateResult]] ||
|-
|-
| 23 || GetDisplayVersion ||
| 23 || GetDisplayVersion ||
Line 355: Line 387:
|-
|-
| 26 || [2.0.0+] GetSaveDataSize ||
| 26 || [2.0.0+] GetSaveDataSize ||
|-
| 27 || [5.0.0+] CreateCacheStorage ||
|-
|-
| 30 || BeginBlockingHomeButtonShortAndLongPressed ||
| 30 || BeginBlockingHomeButtonShortAndLongPressed ||
Line 360: Line 394:
| 31 || EndBlockingHomeButtonShortAndLongPressed ||
| 31 || EndBlockingHomeButtonShortAndLongPressed ||
|-
|-
| 32 || BeginBlockingHomeButton ||
| 32 || [[#BeginBlockingHomeButton]] ||
|-
|-
| 33 || EndBlockingHomeButton ||
| 33 || EndBlockingHomeButton ||
Line 375: Line 409:
|-
|-
| 67 || [3.0.0+] [[#SetGamePlayRecordingState]] ||
| 67 || [3.0.0+] [[#SetGamePlayRecordingState]] ||
|-
| 68 || [4.0.0+] RequestFlushGamePlayingMovieForDebug ||
|-
|-
| 70 || [3.0.0+] RequestToShutdown ||
| 70 || [3.0.0+] RequestToShutdown ||
|-
|-
| 71 || [3.0.0+] RequestToReboot ||
| 71 || [3.0.0+] RequestToReboot ||
|-
| 80 || [4.0.0+] ExitAndRequestToShowThanksMessage ||
|-
| 90 || [4.0.0+] EnableApplicationCrashReport ||
|-
| 100 || [5.0.0+] InitializeApplicationCopyrightFrameBuffer ||
|-
| 101 || [5.0.0+] SetApplicationCopyrightImage ||
|-
| 102 || [5.0.0+] SetApplicationCopyrightVisibility ||
|-
| 110 || [5.0.0+] QueryApplicationPlayStatistics ||
|-
| 120 || [5.0.0+] ExecuteProgram ||
|-
| 121 || [5.0.0+] ClearUserChannel ||
|-
| 122 || [5.0.0+] UnpopToUserChannel ||
|-
| 500 || [5.0.0+] StartContinuousRecordingFlushForDebug ||
|-
| 1000 || [5.0.0+] CreateMovieMaker ||
|-
| 1001 || [5.0.0+] [[#PrepareForJit]] ||
|}
|}


Line 387: Line 447:
* Uses [[#SetGamePlayRecordingState]] with value 0x1.
* Uses [[#SetGamePlayRecordingState]] with value 0x1.
This GamePlayRecording functionality presumably enables the video-recording usable starting with [[4.0.0]].
This GamePlayRecording functionality presumably enables the video-recording usable starting with [[4.0.0]].
==== GetDesiredLanguage ====
No input, returns an output [[Settings_services#LanguageCode|LanguageCode]].
==== SetTerminateResult ====
Takes an input u32 '''Result''', no output.
For example, in some cases official apps use this with [[Error_codes|error]] 0x2A2 then uses svcBreak.
==== BeginBlockingHomeButton ====
Takes an input s64 nanoseconds, no output. The input nanoseconds can be zero.


==== NotifyRunning ====
==== NotifyRunning ====
Line 396: Line 467:
==== SetGamePlayRecordingState ====
==== SetGamePlayRecordingState ====
Takes an input u32.
Takes an input u32.
==== PrepareForJit ====
Takes no input. Launches title 010000000000003B (currently not present on retail systems) if some context variable is set.


== ILibraryAppletCreator ==
== ILibraryAppletCreator ==
Line 408: Line 482:
| 2 || AreAnyLibraryAppletsLeft ||
| 2 || AreAnyLibraryAppletsLeft ||
|-
|-
| 10 || CreateStorage || Returns an [[Filesystem_services#IStorage|IStorage]].
| 10 || CreateStorage || Returns an [[#IStorage]].
|-
|-
| 11 || CreateTransferMemoryStorage || Returns an [[Filesystem_services#IStorage|IStorage]].
| 11 || CreateTransferMemoryStorage || Returns an [[#IStorage]].
|-
| 12 || CreateHandleStorage || Returns an [[Filesystem_services#IStorage|IStorage]].
|-
|-
| 12 || [2.0.0+] CreateHandleStorage || Returns an [[#IStorage]].
|}
|}


Line 435: Line 508:
| 50 || SetOutOfFocusApplicationSuspendingEnabled ||
| 50 || SetOutOfFocusApplicationSuspendingEnabled ||
|-
|-
| 100 || PushInData || Returns an [[Filesystem_services#IStorage|IStorage]].
| 100 || PushInData || Takes an [[#IStorage]].
|-
|-
| 101 || PopOutData || Returns an [[Filesystem_services#IStorage|IStorage]].
| 101 || PopOutData || Returns an [[#IStorage]].
|-
|-
| 102 || PushExtraStorage || Returns an [[Filesystem_services#IStorage|IStorage]].
| 102 || PushExtraStorage || Takes an [[#IStorage]].
|-
|-
| 103 || PushInteractiveInData || Returns an [[Filesystem_services#IStorage|IStorage]].
| 103 || PushInteractiveInData || Takes an [[#IStorage]].
|-
|-
| 104 || PopInteractiveOutData || Returns an [[Filesystem_services#IStorage|IStorage]].
| 104 || PopInteractiveOutData || Returns an [[#IStorage]].
|-
|-
| 105 || GetPopOutDataEvent ||
| 105 || GetPopOutDataEvent ||
Line 455: Line 528:
| 150 || RequestForAppletToGetForeground ||
| 150 || RequestForAppletToGetForeground ||
|-
|-
| 160 || GetIndirectLayerConsumerHandle ||
| 160 || [2.0.0+] GetIndirectLayerConsumerHandle ||
|}
|}


Line 473: Line 546:
| 4 || DisallowToEnterSleep ||
| 4 || DisallowToEnterSleep ||
|-
|-
| 5 || GetOperationMode ||
| 5 || [[#GetOperationMode]] ||
|-
|-
| 6 || GetPerformanceMode ||
| 6 || [[#GetPerformanceMode]] ||
|-
|-
| 7 || GetCradleStatus ||
| 7 || GetCradleStatus ||
Line 491: Line 564:
| 13 || GetAcquiredSleepLockEvent ||
| 13 || GetAcquiredSleepLockEvent ||
|-
|-
| 20 || PushToGeneralChannel || Returns an [[Filesystem_services#IStorage|IStorage]].
| 20 || PushToGeneralChannel || Takes an [[#IStorage]].
|-
|-
| 30 || GetHomeButtonReaderLockAccessor || Returns an [[#ILockAccessor]].
| 30 || GetHomeButtonReaderLockAccessor || Returns an [[#ILockAccessor]].
Line 502: Line 575:
|-
|-
| 51 || [3.0.0+] [[#SetVrModeEnabled]] ||
| 51 || [3.0.0+] [[#SetVrModeEnabled]] ||
|-
| 52 || [4.0.0+] SetLcdBacklighOffEnabled ||
|-
|-
| 55 || [3.0.0+] IsInControllerFirmwareUpdateSection ||
| 55 || [3.0.0+] IsInControllerFirmwareUpdateSection ||
Line 508: Line 583:
|-
|-
| 61 || [3.0.0+] GetDefaultDisplayResolutionChangeEvent ||
| 61 || [3.0.0+] GetDefaultDisplayResolutionChangeEvent ||
|-
| 62 || [4.0.0+] GetHdcpAuthenticationState ||
|-
| 63 || [4.0.0+] GetHdcpAuthenticationStateChangeEvent ||
|-
| 64 || [5.0.0+] SetTvPowerStateMatchingMode ||
|}
|}
Officially notification messages are handled by the application itself, not sdk-nso in ExeFS. Official apps call code in sdk-nso which basically uses svcWaitSynchronization with the event from [[#GetEventHandle]] to check whether a message is available, then if so it uses [[#ReceiveMessage]]. The actual handling for message IDs is done in the app itself(see [[#NotificationMessage]]).


=== GetEventHandle ===
=== GetEventHandle ===
Line 514: Line 597:


=== ReceiveMessage ===
=== ReceiveMessage ===
No input. Returns an output u32. Error 0x680 indicates no message is available?
No input. Returns an output u32. Error 0x680 indicates no message is available.
 
=== GetOperationMode ===
No input. Returns an output u8 for the current [[#OperationMode]].
 
=== GetPerformanceMode ===
No input. Returns an output u32 for the current PerformanceMode.


=== GetCurrentFocusState ===
=== GetCurrentFocusState ===
No input. Returns an output u8.
No input. Returns an output u8:
 
* 1: In focus.
* 2/3: Out of focus(running in "background").


=== SetVrModeEnabled ===
=== SetVrModeEnabled ===
Line 523: Line 615:


Updates internal AM state fields. If the new state doesn't match the previous state, this uses the [[Backlight_services]] {Disable/Enable}VrMode command depending on whether flag={disable/enable}.
Updates internal AM state fields. If the new state doesn't match the previous state, this uses the [[Backlight_services]] {Disable/Enable}VrMode command depending on whether flag={disable/enable}.
When the VrMode is set to true, the console shows a screen rendered like vr asking the user to move his face away and hit the 'close' button. When this button is pressed, the console resets the vrMode to false.


== ISelfController ==
== ISelfController ==
Line 529: Line 623:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || Exit
| 0 || [[#Exit]]
|-
|-
| 1 || LockExit
| 1 || [[#LockExit]]
|-
|-
| 2 || UnlockExit
| 2 || [[#UnlockExit]]
|-
|-
| 3 || [2.0.0+] EnterFatalSection
| 3 || [2.0.0+] [[#EnterFatalSection]]
|-
|-
| 4 || [2.0.0+] LeaveFatalSection
| 4 || [2.0.0+] [[#LeaveFatalSection]]
|-
|-
| 9 || GetLibraryAppletLaunchableEvent
| 9 || GetLibraryAppletLaunchableEvent
|-
|-
| 10 || SetScreenShotPermission
| 10 || [[#SetScreenShotPermission]]
|-
|-
| 11 || SetOperationModeChangedNotification
| 11 || [[#SetOperationModeChangedNotification]]
|-
|-
| 12 || SetPerformanceModeChangedNotification
| 12 || [[#SetPerformanceModeChangedNotification]]
|-
|-
| 13 || [[#SetFocusHandlingMode]]
| 13 || [[#SetFocusHandlingMode]]
Line 551: Line 645:
| 14 || SetRestartMessageEnabled
| 14 || SetRestartMessageEnabled
|-
|-
| 15 || [2.0.0+] SetScreenShotAppletIdentityInfo
| 15 || [2.0.0+] [[#SetScreenShotAppletIdentityInfo]]
|-
|-
| 16 || [2.0.0+] [[#SetOutOfFocusSuspendingEnabled]]
| 16 || [2.0.0+] [[#SetOutOfFocusSuspendingEnabled]]
|-
|-
| 17 || [2.0.0+] SetControllerFirmwareUpdateSection
| 17 || [3.0.0+] SetControllerFirmwareUpdateSection
|-
| 18 || [3.0.0+] SetRequiresCaptureButtonShortPressedMessage
|-
|-
| 18 || [2.0.0+] SetRequiresCaptureButtonShortPressedMessage
| 19 || [3.0.0+] [[#SetScreenShotImageOrientation]]
|-
|-
| 19 || [2.0.0+] SetScreenShotImageOrientation
| 20 || [4.0.0+] SetDesirableKeyboardLayout
|-
|-
| 40 || [[#CreateManagedDisplayLayer]]
| 40 || [[#CreateManagedDisplayLayer]]
|-
| 41 || [4.0.0+] IsSystemBufferSharingEnabled
|-
| 42 || [4.0.0+] GetSystemSharedLayerHandle
|-
|-
| 50 || SetHandlesRequestToDisplay
| 50 || SetHandlesRequestToDisplay
Line 579: Line 679:
| 65 || [2.0.0+] ReportUserIsActive
| 65 || [2.0.0+] ReportUserIsActive
|-
|-
| 66 || [2.0.0+] GetCurrentIlluminance
| 66 || [3.0.0+] GetCurrentIlluminance
|-
|-
| 67 || [2.0.0+] IsIlluminanceAvailable
| 67 || [3.0.0+] IsIlluminanceAvailable
|-
| 68 || [4.0.0+] SetAutoSleepDisabled
|-
| 69 || [4.0.0+] IsAutoSleepDisabled
|-
| 70 || [5.0.0+] ReportMultimediaError
|-
| 80 || [5.0.0+] SetWirelessPriorityMode
|}
|}


===SetFocusHandlingMode===
=== Exit ===
No input/output.
 
=== LockExit ===
No input/output.
 
=== UnlockExit ===
No input/output.
 
=== EnterFatalSection ===
No input/output.
 
=== LeaveFatalSection ===
No input/output.
 
=== SetScreenShotPermission ===
Takes an input s32. No output.
 
Controls whether screenshot-capture is allowed. 0 = disable, 1 = enable, 2 = unknown.
 
=== SetOperationModeChangedNotification ===
Takes an input u8 bool flag. No output.
 
=== SetPerformanceModeChangedNotification ===
Takes an input u8 bool flag. No output.
 
=== SetFocusHandlingMode ===
Takes 3 input u8s with each field located immediately after the previous u8, these are bool flags. No output.
Takes 3 input u8s with each field located immediately after the previous u8, these are bool flags. No output.


===SetOutOfFocusSuspendingEnabled===
=== SetScreenShotAppletIdentityInfo ===
Takes an input 0x10-byte struct AppletIdentityInfo. No output.
 
=== SetOutOfFocusSuspendingEnabled ===
Takes an input u8(bool flag). No output.
Takes an input u8(bool flag). No output.


===CreateManagedDisplayLayer===
=== SetScreenShotImageOrientation ===
Takes an input s32. No output.
 
=== CreateManagedDisplayLayer ===
Returns an output u64 LayerId which is then used by the user-process with [[Display_services#OpenLayer]].
Returns an output u64 LayerId which is then used by the user-process with [[Display_services#OpenLayer]].


Line 652: Line 792:
| 7 || GetCallerAppletCaptureImageEx
| 7 || GetCallerAppletCaptureImageEx
|-
|-
| 8 || TakeScreenShotOfOwnLayer
| 8 || [2.0.0+] TakeScreenShotOfOwnLayer
|-
| 9 || [5.0.0+] CopyBetweenCaptureBuffers
|-
|-
| 10 || AcquireLastApplicationCaptureBuffer
| 10 || AcquireLastApplicationCaptureBuffer
Line 672: Line 814:
| 18 || AcquireCallerAppletCaptureBufferEx
| 18 || AcquireCallerAppletCaptureBufferEx
|-
|-
| 20 || ClearCaptureBuffer
| 20 || [2.0.0+] ClearCaptureBuffer
|-
|-
| 21 || ClearAppletTransitionBuffer
| 21 || [2.0.0+] ClearAppletTransitionBuffer
|-
| 22 || [4.0.0+] AcquireLastApplicationCaptureSharedBuffer
|-
| 23 || [4.0.0+] ReleaseLastApplicationCaptureSharedBuffer
|-
| 24 || [4.0.0+] AcquireLastForegroundCaptureSharedBuffer
|-
| 25 || [4.0.0+] ReleaseLastForegroundCaptureSharedBuffer
|-
| 26 || [4.0.0+] AcquireCallerAppletCaptureSharedBuffer
|-
| 27 || [4.0.0+] ReleaseCallerAppletCaptureSharedBuffer
|}
|}


Line 688: Line 842:
| 2 || AreAnyLibraryAppletsLeft ||
| 2 || AreAnyLibraryAppletsLeft ||
|-
|-
| 10 || CreateStorage || Returns an [[Filesystem_services#IStorage|IStorage]].
| 10 || CreateStorage || Returns an [[#IStorage]].
|-
|-
| 11 || CreateTransferMemoryStorage || Returns an [[Filesystem_services#IStorage|IStorage]].
| 11 || CreateTransferMemoryStorage || Returns an [[#|IStorage]].
|-
|-
| 12 || CreateHandleStorage || Returns an [[Filesystem_services#IStorage|IStorage]].
| 12 || [2.0.0+] CreateHandleStorage || Returns an [[#IStorage]].
|}
|}


Line 700: Line 854:
! Cmd || Name || Notes
! Cmd || Name || Notes
|-
|-
| 0 || GetLaunchReason ||
| 0 || [[#GetLaunchReason]] ||
|-
|-
| 11 || OpenCallingLibraryApplet || Returns an [[#ILibraryAppletAccessor]].
| 11 || OpenCallingLibraryApplet || Returns an [[#ILibraryAppletAccessor]].
|-
|-
| 21 || PushContext || Returns an [[Filesystem_services#IStorage|IStorage]].
| 21 || PushContext || Takes an [[#IStorage]].
|-
|-
| 22 || PopContext || Returns an [[Filesystem_services#IStorage|IStorage]].
| 22 || PopContext || Returns an [[#IStorage]].
|-
|-
| 23 || CancelWindingReservation ||
| 23 || CancelWindingReservation ||
Line 713: Line 867:
|-
|-
| 40 || ReserveToStartAndWaitAndUnwindThis || Returns an [[#ILibraryAppletAccessor]].
| 40 || ReserveToStartAndWaitAndUnwindThis || Returns an [[#ILibraryAppletAccessor]].
|-
| 41 || [4.0.0+] ReserveToStartAndWait ||
|}
|}
=== GetLaunchReason ===
No input. Returns an u32 AppletProcessLaunchReason.
Used by LibraryApplets.


== IDebugFunctions ==
== IDebugFunctions ==
Line 727: Line 888:
|-
|-
| 20 || InvalidateTransitionLayer ||
| 20 || InvalidateTransitionLayer ||
|}
== IStorage ==
{| class="wikitable" border="1"
|-
! Cmd || Name || Notes
|-
| 0 || Open || No input. Returns an [[#IStorageAccessor]].
|-
| 1 || OpenTransferStorage || No input. Returns an [[#ITransferStorageAccessor]].
|}
Commands which take an IStorage as input use an unknown input u32 for that.
== IStorageAccessor ==
{| class="wikitable" border="1"
|-
! Cmd || Name || Notes
|-
| 0 || GetSize || No input. Returns an s64.
|-
| 10 || Write || Takes an input s64 and a type-0x21 input buffer.
|-
| 11 || Read || Takes an input s64 and a type-0x22 output buffer.
|}
== ITransferStorageAccessor ==
{| class="wikitable" border="1"
|-
! Cmd || Name || Notes
|-
| 0 || GetSize || No input. Returns an output s64.
|-
| 1 || GetHandle || No input. Returns an output u64 and handle.
|}
|}


Line 737: Line 932:
|-
|-
| 0 || [[#OpenApplicationProxy]] ||  
| 0 || [[#OpenApplicationProxy]] ||  
|-
|}
|}


This seems to be used by all(?) regular-applications, even [[flog]].
This is used by all regular-applications, including [[flog]] and "Retail Interactive Display Menu". Only one session can be open for this service at a time.


== OpenApplicationProxy ==
== OpenApplicationProxy ==
Line 750: Line 944:


= idle:sys =
= idle:sys =
This is "nn::idle::detail::IPolicyManagerSystem"
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 0 || GetAutoPowerDownEvent
|-
| 1 || [1.0.0-3.0.2]
|-
| 2 || [1.0.0-3.0.2]
|-
| 3 ||
|-
| 4 ||
|-
| 5 ||
|}


= omm =
= omm =
This is "nn::omm::detail::IOperationModeManager"
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]], this is the only service that interacts with the [[Dock]] through [[USB_services|usb:pd*]].
Besides [[PTM_services]], this is the only service that interacts with the [[Dock]] through [[USB_services|usb:pd*]].
Line 761: Line 975:
| 0 || GetOperationMode
| 0 || GetOperationMode
|-
|-
| 1 || GetOmmWaitEvent
| 1 || GetOperationModeChangeEvent
|-
| 2 || EnableAudioVisual
|-
| 3 || DisableAudioVisual
|-
| 4 || EnterSleepAndWait
|-
| 5 || GetCradleStatus
|-
| 6 || FadeInDisplay
|-
| 7 || FadeOutDisplay
|-
| 8 || [2.0.0+]
|-
| 9 || [2.0.0+]
|-
| 10 || [3.0.0+]
|-
| 11 || [3.0.0+]
|-
| 12 || [3.0.0+]
|-
| 13 || [3.0.0+]
|-
| 14 || [3.0.0+]
|-
|-
| 2 ||
| 15 || [4.0.0+]
|-
|-
| 3 ||
| 16 || [4.0.0+]
|-
|-
| 4 ||
| 17 || [4.0.0+]
|-
|-
| 5 ||
| 18 || [4.0.0+]
|-
|-
| 6 ||
| 19 || [4.0.0+]
|-
|-
| 7 ||
| 20 || [4.0.0+]
|-
|-
| 8 ||
| 21 || [4.0.0+]
|-
|-
| 9 ||
| 22 || [4.0.0+]
|-
| 23 || [4.0.0+]
|}
|}


= spsm =
= spsm =
This is "nn::spsm::detail::IPowerStateInterface".


{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 0 || GetState
|-
| 1 || SleepSystemAndWaitAwake
|-
| 2 ||
|-
| 3 ||
|-
| 4 || GetNotificationMessageEventHandle
|-
| 5 ||
|-
| 6 ||
|-
| 7 ||
|-
| 8 || AnalyzePerformanceLogForLastSleepWakeSequence
|-
| 9 || ChangeHomeButtonLongPressingTime
|-
| 10 ||
|-
| 11 || [1.0.0-3.0.2]
|}


= Enums =
= Enums =
Line 870: Line 1,141:
| 0100000000001013
| 0100000000001013
| "myPage"
| "myPage"
|-
|}
=== LibraryAppletMode ===
{| class="wikitable" border="1"
|-
!  ID
!  Description
|-
| 0x0
| AllForeground
|-
|-
|}
|}
Line 899: Line 1,181:
|}
|}


=AppletResourceUserId=
=== NotificationMessage ===
{| class="wikitable" border="1"
|-
!  ID
!  Description
|-
| 0xF || [[#GetCurrentFocusState|FocusState]] changed
|-
| 0x10 || ?
|-
| 0x1E || OperationMode changed
|-
| 0x1F || PerformanceMode changed
|}
 
=== OperationMode ===
{| class="wikitable" border="1"
|-
!  Value
!  Description
|-
| 0 || Handheld
|-
| 1 || Docked
|}
 
= AppletResourceUserId =
This u64 is officially called "nn::applet::AppletResourceUserId". Used by a number of non-AM services.
This u64 is officially called "nn::applet::AppletResourceUserId". Used by a number of non-AM services.


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