Difference between revisions of "OMM services"

From Nintendo Switch Brew
Jump to navigation Jump to search
(Removed redirect to AM services)
Tag: Removed redirect
 
(10 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 18: Line 18:
 
| 3 || DisableAudioVisual
 
| 3 || DisableAudioVisual
 
|-
 
|-
| 4 || EnterSleepAndWait
+
| 4 || [[#EnterSleepAndWait]]
 
|-
 
|-
 
| 5 || GetCradleStatus
 
| 5 || GetCradleStatus
Line 67: Line 67:
 
|-
 
|-
 
| 28 || [12.0.0+] [[#CreateCradleFirmwareUpdater]]
 
| 28 || [12.0.0+] [[#CreateCradleFirmwareUpdater]]
 +
|-
 +
| 29 || [19.0.0+] GetCradleStatusChangeEvent
 
|-
 
|-
 
| 500 || [14.0.0+] LblSwitchBacklightOnForAm
 
| 500 || [14.0.0+] LblSwitchBacklightOnForAm
Line 74: Line 76:
 
| 900 || [14.0.0+] HideStartupLogo
 
| 900 || [14.0.0+] HideStartupLogo
 
|}
 
|}
 +
 +
== EnterSleepAndWait ==
 +
Takes an input Event handle, no output.
  
 
== GetOperationModeSystemInfo ==
 
== GetOperationModeSystemInfo ==
Line 106: Line 111:
  
 
= ommdisp =
 
= ommdisp =
 +
This is "nn::omm::srv::IDisplayLayerControl".
 +
 
This was added with [14.0.0+].
 
This was added with [14.0.0+].
  
Line 190: Line 197:
 
| 410 ||
 
| 410 ||
 
|-
 
|-
| 500 ||
+
| 500 || [[#InitializeApplicationCopyrightSharedBuffer]]
 
|-
 
|-
| 501 ||
+
| 501 || FinalizeApplicationCopyrightSharedBuffer
 
|-
 
|-
 
| 510 ||
 
| 510 ||
Line 200: Line 207:
 
| 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 210: Line 223:
 
| 711 ||
 
| 711 ||
 
|-
 
|-
| 720 ||
+
| 720 || CopyImageFromCaptureBuffer
 
|-
 
|-
 
| 721 ||
 
| 721 ||
Line 219: Line 232:
 
|-
 
|-
 
| 810 ||
 
| 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 =
 
= idle:sys =
Line 230: Line 265:
 
| 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 276: Line 311:
 
|-
 
|-
 
| 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 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+]

InitializeApplicationCopyrightSharedBuffer

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.