Difference between revisions of "OMM services"
(Yellows8 moved page OMM services to AM services) |
|||
(11 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]] | ||
+ | |- | ||
+ | | 29 || [19.0.0+] GetCradleStatusChangeEvent | ||
+ | |- | ||
+ | | 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 || [[#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+] | ||
+ | |} | ||
+ | |||
+ | == InitializeApplicationCopyrightSharedBuffer == | ||
+ | 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 = | ||
+ | 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+] 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_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 23:12, 22 October 2024
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 |
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.