OMM services: Difference between revisions
Yellows8 moved page OMM services to AM services |
No edit summary |
||
(6 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
# | 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_services|PTM]], this is the only service that interacts with the [[Dock]] through [[USB_services|usb:pd*]]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! 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]] | |||
|- | |||
| 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 [[#GetOperationModeSystemInfo|ICommonStateGetter GetOperationModeSystemInfo]]. | |||
== CreateCradleFirmwareUpdater == | |||
No input. Returns an [[#ICradleFirmwareUpdater]]. | |||
== ICradleFirmwareUpdater == | |||
This is "nn::omm::detail::ICradleFirmwareUpdater". | |||
This was added with [12.0.0+]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! 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+]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! 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 || | |||
|- | |||
| 501 || | |||
|- | |||
| 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 || | |||
|- | |||
| 721 || | |||
|- | |||
| 722 || | |||
|- | |||
| 800 || | |||
|- | |||
| 810 || | |||
|- | |||
| 900 || [17.0.0+] | |||
|} | |||
== Cmd500 == | |||
Takes a total of 0x10-bytes of input and a handle, no output. | |||
This is used by [[Applet_Manager_services#InitializeApplicationCopyrightFrameBuffer|InitializeApplicationCopyrightFrameBuffer]]. | |||
= idle:sys = | |||
This is "nn::idle::detail::IPolicyManagerSystem" | |||
{| class="wikitable" border="1" | |||
|- | |||
! 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". | |||
{| class="wikitable" border="1" | |||
|- | |||
! 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+] | |||
|- | |||
| 13 || [17.0.0+] | |||
|- | |||
| 14 || [17.0.0+] | |||
|- | |||
| 15 || [18.0.0+] | |||
|- | |||
| 16 || [18.0.0+] | |||
|} | |||
[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. |