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 |
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 | |
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 InitializeApplicationCopyrightFrameBuffer.
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 |
[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.