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:
#REDIRECT [[AM services]]
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.