OMM services: Difference between revisions
No edit summary |
|||
| (11 intermediate revisions by 2 users not shown) | |||
| Line 2: | Line 2: | ||
= omm = | = omm = | ||
This is "nn::omm::detail::IOperationModeManager" | This is "nn::omm::detail::IOperationModeManager". | ||
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*]]. | ||
| Line 67: | Line 67: | ||
|- | |- | ||
| 28 || [12.0.0+] [[#CreateCradleFirmwareUpdater]] | | 28 || [12.0.0+] [[#CreateCradleFirmwareUpdater]] | ||
|- | |||
| 29 || [19.0.0+] GetCradleStatusChangeEvent | |||
|- | |||
| 40 || [20.0.0+] | |||
|- | |||
| 41 || [20.0.0+] | |||
|- | |||
| 50 || [20.1.0+] | |||
|- | |- | ||
| 500 || [14.0.0+] LblSwitchBacklightOnForAm | | 500 || [14.0.0+] LblSwitchBacklightOnForAm | ||
| Line 109: | Line 117: | ||
= ommdisp = | = ommdisp = | ||
This is "nn::omm::srv::IDisplayLayerControl". | |||
This was added with [14.0.0+]. | This was added with [14.0.0+]. | ||
| Line 193: | Line 203: | ||
| 410 || | | 410 || | ||
|- | |- | ||
| 500 || | | 500 || [[#InitializeApplicationCopyrightSharedBuffer]] | ||
|- | |- | ||
| 501 || | | 501 || FinalizeApplicationCopyrightSharedBuffer | ||
|- | |- | ||
| 510 || | | 510 || | ||
| Line 203: | Line 213: | ||
| 540 || | | 540 || | ||
|- | |- | ||
| 600 || | | 600 || [14.0.0-16.1.0] | ||
|- | |||
| 610 || [17.0.0+] | |||
|- | |||
| 611 || [17.0.0+] | |||
|- | |||
| 612 || [17.0.0+] | |||
|- | |- | ||
| 700 || | | 700 || | ||
| Line 213: | Line 229: | ||
| 711 || | | 711 || | ||
|- | |- | ||
| 720 || | | 720 || CopyImageFromCaptureBuffer | ||
|- | |- | ||
| 721 || | | 721 || | ||
| Line 222: | Line 238: | ||
|- | |- | ||
| 810 || | | 810 || | ||
|- | |||
| 900 || [17.0.0+] | |||
|} | |} | ||
== | == InitializeApplicationCopyrightSharedBuffer == | ||
Takes a total of 0x10-bytes of input and a handle, no output. | Takes a total of 0x10-bytes of input and a handle, no output. | ||
This is used by [[Applet_Manager_services#InitializeApplicationCopyrightFrameBuffer|InitializeApplicationCopyrightFrameBuffer]]. | |||
== Cmd610 == | |||
Takes a type-0x15 input buffer containing a 0x4C8-byte struct. No output. | |||
[19.0.0+] The struct size is now 0x4D0-bytes. | |||
== Cmd611 == | |||
Takes a type-0x15 input buffer containing a 0x4C8-byte struct. No output. | |||
[19.0.0+] The struct size is now 0x4D0-bytes. | |||
== Cmd612 == | |||
Takes a type-0x15 input buffer containing a 0x4C8-byte struct. No output. | |||
[19.0.0+] The struct size is now 0x4D0-bytes. | |||
= idle:sys = | = idle:sys = | ||
| Line 236: | Line 271: | ||
| 0 || GetAutoPowerDownEvent | | 0 || GetAutoPowerDownEvent | ||
|- | |- | ||
| 1 || [7.0.0+] IsAutoPowerDownRequested ([1.0.0-3.0.2] ) | | 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 282: | Line 317: | ||
|- | |- | ||
| 11 || [1.0.0-3.0.2] InvalidateCurrentHomeButtonPressing | | 11 || [1.0.0-3.0.2] InvalidateCurrentHomeButtonPressing | ||
|- | |||
| 12 || [17.0.0+] EmulatePowerButtonPressedBriefly | |||
|- | |||
| 13 || [17.0.0+] EmulatePowerButtonPressedFor7Sec | |||
|- | |||
| 14 || [17.0.0+] SetAlwaysRebootFlag | |||
|- | |||
| 15 || [18.0.0+] | |||
|- | |||
| 16 || [18.0.0+] | |||
|} | |} | ||
[3.0.0+] Cmd11 now takes a total of 8-bytes of input. | [3.0.0+] Cmd11 now takes a total of 8-bytes of input. | ||
= Notes = | |||
A [[System_Settings|system-setting]] (<code>"systemstartup!skip_psc_wait"</code>) and the output from [[Process_Manager_services|pm:bm]] GetBootMode is used to determine a value passed to a func. When the setting is set to non-zero, the passed value is 2, otherwise the passed value is <code>BootMode == Maintenance</code>. This value is eventually written into global state. | |||
The funcs which create threads "nn.notification.PresenterStateManagement" and "nn.notification.PresenterMain" will only create the threads when [[Process_Manager_services|pm:bm]] GetBootMode output is Normal, otherwise these funcs just return. | |||
[[BCAT_services|prepro]] SetOperationMode is only used when [[Process_Manager_services|pm:bm]] GetBootMode output is not Maintenance. | |||
Latest revision as of 05:01, 28 May 2025
Operation Mode Manager (OMM) is a sysmodule responsible for arbitrating the operation changes between docked and handheld modes.
omm
This is "nn::omm::detail::IOperationModeManager".
Besides PTM, this is the only service that interacts with the Dock through usb:pd*.
| Cmd | Name |
|---|---|
| 0 | GetOperationMode |
| 1 | GetOperationModeChangeEvent |
| 2 | EnableAudioVisual |
| 3 | DisableAudioVisual |
| 4 | #EnterSleepAndWait |
| 5 | GetCradleStatus |
| 6 | FadeInDisplay |
| 7 | FadeOutDisplay |
| 8 | [2.0.0+] GetCradleFwVersion |
| 9 | [2.0.0+] NotifyCecSettingsChanged |
| 10 | [3.0.0+] SetOperationModePolicy |
| 11 | [3.0.0+] GetDefaultDisplayResolution |
| 12 | [3.0.0+] GetDefaultDisplayResolutionChangeEvent |
| 13 | [3.0.0+] UpdateDefaultDisplayResolution |
| 14 | [3.0.0+] ShouldSleepOnBoot |
| 15 | [4.0.0+] NotifyHdcpApplicationExecutionStarted |
| 16 | [4.0.0+] NotifyHdcpApplicationExecutionFinished |
| 17 | [4.0.0+] NotifyHdcpApplicationDrawingStarted |
| 18 | [4.0.0+] NotifyHdcpApplicationDrawingFinished |
| 19 | [4.0.0+] GetHdcpAuthenticationFailedEvent |
| 20 | [4.0.0+] GetHdcpAuthenticationFailedEmulationEnabled |
| 21 | [4.0.0+] SetHdcpAuthenticationFailedEmulation |
| 22 | [4.0.0+] GetHdcpStateChangeEvent |
| 23 | [4.0.0+] GetHdcpState |
| 24 | [5.0.0+] ShowCardUpdateProcessing |
| 25 | [5.0.0+] SetApplicationCecSettingsAndNotifyChanged |
| 26 | [7.0.0+] #GetOperationModeSystemInfo |
| 27 | [9.0.0+] GetAppletFullAwakingSystemEvent |
| 28 | [12.0.0+] #CreateCradleFirmwareUpdater |
| 29 | [19.0.0+] GetCradleStatusChangeEvent |
| 40 | [20.0.0+] |
| 41 | [20.0.0+] |
| 50 | [20.1.0+] |
| 500 | [14.0.0+] LblSwitchBacklightOnForAm |
| 501 | [14.0.0+] LblSwitchBacklightOffForAm |
| 900 | [14.0.0+] HideStartupLogo |
EnterSleepAndWait
Takes an input Event handle, no output.
GetOperationModeSystemInfo
No input, returns an output u32.
This is used by ICommonStateGetter GetOperationModeSystemInfo.
CreateCradleFirmwareUpdater
No input. Returns an #ICradleFirmwareUpdater.
ICradleFirmwareUpdater
This is "nn::omm::detail::ICradleFirmwareUpdater".
This was added with [12.0.0+].
| Cmd | Name |
|---|---|
| 0 | Start |
| 1 | Finish |
| 2 | GetUpdateDeviceStatus |
| 3 | GetUpdateProgress |
| 4 | GetUpdateDeviceStatusChangeEvent |
| 5 | GetUpdateProgress2 |
ommdisp
This is "nn::omm::srv::IDisplayLayerControl".
This was added with [14.0.0+].
| Cmd | Name |
|---|---|
| 100 | |
| 101 | |
| 110 | |
| 111 | |
| 200 | |
| 210 | |
| 300 | |
| 301 | |
| 302 | |
| 303 | |
| 304 | |
| 305 | |
| 306 | |
| 307 | |
| 308 | |
| 309 | |
| 310 | |
| 311 | |
| 312 | |
| 313 | |
| 314 | |
| 315 | |
| 316 | |
| 330 | |
| 340 | |
| 341 | |
| 342 | |
| 343 | |
| 344 | |
| 345 | |
| 346 | |
| 350 | |
| 351 | |
| 360 | |
| 361 | |
| 370 | |
| 371 | |
| 400 | |
| 410 | |
| 500 | #InitializeApplicationCopyrightSharedBuffer |
| 501 | FinalizeApplicationCopyrightSharedBuffer |
| 510 | |
| 520 | |
| 540 | |
| 600 | [14.0.0-16.1.0] |
| 610 | [17.0.0+] |
| 611 | [17.0.0+] |
| 612 | [17.0.0+] |
| 700 | |
| 701 | |
| 710 | |
| 711 | |
| 720 | CopyImageFromCaptureBuffer |
| 721 | |
| 722 | |
| 800 | |
| 810 | |
| 900 | [17.0.0+] |
Takes a total of 0x10-bytes of input and a handle, no output.
This is used by InitializeApplicationCopyrightFrameBuffer.
Cmd610
Takes a type-0x15 input buffer containing a 0x4C8-byte struct. No output.
[19.0.0+] The struct size is now 0x4D0-bytes.
Cmd611
Takes a type-0x15 input buffer containing a 0x4C8-byte struct. No output.
[19.0.0+] The struct size is now 0x4D0-bytes.
Cmd612
Takes a type-0x15 input buffer containing a 0x4C8-byte struct. No output.
[19.0.0+] The struct size is now 0x4D0-bytes.
idle:sys
This is "nn::idle::detail::IPolicyManagerSystem"
| Cmd | Name |
|---|---|
| 0 | GetAutoPowerDownEvent |
| 1 | [7.0.0+] IsAutoPowerDownRequested ([1.0.0-3.0.2]) |
| 2 | [1.0.0-3.0.2] |
| 3 | #SetHandlingContext |
| 4 | LoadAndApplySettings |
| 5 | ReportUserIsActive |
SetHandlingContext
[3.0.0+] Now takes an additional 0x10-bytes of input.
[13.0.0+] Total input size is now 0x30 instead of 0x38.
spsm
This is "nn::spsm::detail::IPowerStateInterface".
| Cmd | Name |
|---|---|
| 0 | GetCurrentState |
| 1 | EnterSleep |
| 2 | GetLastWakeReason |
| 3 | Shutdown |
| 4 | GetNotificationMessageEventHandle |
| 5 | ReceiveNotificationMessage |
| 6 | AnalyzeLogForLastSleepWakeSequence |
| 7 | ResetEventLog |
| 8 | AnalyzePerformanceLogForLastSleepWakeSequence |
| 9 | ChangeHomeButtonLongPressingTime |
| 10 | PutErrorState |
| 11 | [1.0.0-3.0.2] InvalidateCurrentHomeButtonPressing |
| 12 | [17.0.0+] EmulatePowerButtonPressedBriefly |
| 13 | [17.0.0+] EmulatePowerButtonPressedFor7Sec |
| 14 | [17.0.0+] SetAlwaysRebootFlag |
| 15 | [18.0.0+] |
| 16 | [18.0.0+] |
[3.0.0+] Cmd11 now takes a total of 8-bytes of input.
Notes
A system-setting ("systemstartup!skip_psc_wait") and the output from pm:bm GetBootMode is used to determine a value passed to a func. When the setting is set to non-zero, the passed value is 2, otherwise the passed value is BootMode == Maintenance. This value is eventually written into global state.
The funcs which create threads "nn.notification.PresenterStateManagement" and "nn.notification.PresenterMain" will only create the threads when pm:bm GetBootMode output is Normal, otherwise these funcs just return.
prepro SetOperationMode is only used when pm:bm GetBootMode output is not Maintenance.