Display services: Difference between revisions
No edit summary |
|||
(26 intermediate revisions by 3 users not shown) | |||
Line 2: | Line 2: | ||
= caps:sc = | = caps:sc = | ||
This is "nn::capsrv::sf::IScreenShotControlService". This | This is "nn::capsrv::sf::IScreenShotControlService". | ||
This was added with [2.0.0+]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name || | ! Cmd || Name | ||
|- | |||
| 1 || [[#CaptureRawImageRgba32IntoArray]] | |||
|- | |||
| 2 || [[#CaptureRawImageRgba32IntoArrayWithTimeout]] | |||
|- | |||
| 3 || [5.0.0+] [[#AttachSharedBufferToCaptureModule]] | |||
|- | |||
| 5 || [5.0.0+] [[#CaptureRawImageToAttachedSharedBuffer]] | |||
|- | |||
| 210 || [6.0.0+] [[#SaveScreenShotEx2ViaAm]] | |||
|- | |||
| 1001 || [2.0.0-4.1.0] [[#RequestTakingScreenShot]] | |||
|- | |||
| 1002 || [2.0.0-4.1.0] [[#RequestTakingScreenShotWithTimeout]] | |||
|- | |||
| 1003 || [3.0.0-4.1.0] [[#RequestTakingScreenShotEx]] | |||
|- | |- | ||
| | | 1004 || [5.0.0+] [[#RequestTakingScreenShotEx1]] | ||
|- | |- | ||
| | | 1009 || [5.0.0+] [[#CancelTakingScreenShot]] | ||
|- | |- | ||
| | | 1010 || [5.0.0+] [[#SetTakingScreenShotCancelState]] | ||
|- | |- | ||
| | | 1011 || [[#NotifyTakingScreenShotRefused]] | ||
|- | |- | ||
| | | 1012 || [[#NotifyTakingScreenShotFailed]] | ||
|- | |- | ||
| [ | | 1100 || [18.0.0+] | ||
|- | |- | ||
| [ | | 1101 || [4.0.0+] [[#SetupOverlayMovieThumbnail]] | ||
|- | |- | ||
| [ | | 1106 || [4.0.0+] [[#CreateProtoMovieMetaDataNv12Ex2]] | ||
|- | |- | ||
| | | 1107 || [4.0.0+] [[#CreateProtoMovieMetaDataRgbaEx2]] | ||
|- | |- | ||
| | | 1108 || [18.0.0+] | ||
|- | |- | ||
| | | 1109 || [19.0.0+] | ||
|- | |- | ||
| | | 1110 || [19.0.0+] | ||
|- | |- | ||
| | | 1111 || [19.0.0+] | ||
|- | |- | ||
| | | 1112 || [19.0.0+] | ||
|- | |- | ||
| | | 1113 || [19.0.0+] | ||
|- | |- | ||
| | | 1114 || [19.0.0+] | ||
|- | |- | ||
| 1201 || [3.0.0+] OpenRawScreenShotReadStream | | 1201 || [3.0.0+] [[#OpenRawScreenShotReadStream]] | ||
|- | |- | ||
| 1202 || [3.0.0+] CloseRawScreenShotReadStream | | 1202 || [3.0.0+] [[#CloseRawScreenShotReadStream]] | ||
|- | |- | ||
| 1203 || [3.0.0+] ReadRawScreenShotReadStream | | 1203 || [3.0.0+] [[#ReadRawScreenShotReadStream]] | ||
|- | |- | ||
| 1204 || [9.0.0+] || | | 1204 || [9.0.0+] [[#CaptureCrashScreenShot]] | ||
|- | |||
| 9000 || [20.0.0+] | |||
|} | |} | ||
The only caps:sc commands used by [[GRC_services|GRC]] are: 1101, 1106, and 1107. | The only caps:sc commands used by [[GRC_services|GRC]] are: 1101, 1106, and 1107. | ||
== CaptureRawImageRgba32IntoArray == | |||
== | |||
Takes a type-0x46 output buffer, an input u32 '''layer_stack''', two input u64s '''width'''/'''height''', an input s64 '''buffer_count''', and an input s64 '''buffer_index'''. | Takes a type-0x46 output buffer, an input u32 '''layer_stack''', two input u64s '''width'''/'''height''', an input s64 '''buffer_count''', and an input s64 '''buffer_index'''. | ||
Line 70: | Line 84: | ||
Stubbed with [5.0.0+], where it now returns error 0x7FECE. | Stubbed with [5.0.0+], where it now returns error 0x7FECE. | ||
== | == CaptureRawImageRgba32IntoArrayWithTimeout == | ||
Calls the same internal func as [[# | Calls the same internal func as [[#CaptureRawImageRgba32IntoArray]], where the last param is an additional cmd input u64 instead of hard-coded value 0x5f5e100. | ||
Stubbed with [5.0.0+], where it now returns error 0x7FECE. | Stubbed with [5.0.0+], where it now returns error 0x7FECE. | ||
== AttachSharedBufferToCaptureModule == | |||
Takes a total of 8-bytes of input. No output. | |||
== CaptureRawImageToAttachedSharedBuffer == | |||
Takes a total of 0x10-bytes of input. No output. | |||
== SaveScreenShotEx2ViaAm == | |||
Takes a total of 0x50-bytes of input, a type-0x15 input buffer, and a type-0x45 input buffer, returns a total of 0x20-bytes of output. | |||
User-processes use hard-coded size 0x88 for the type-0x15 buffer. | |||
[8.0.0+] Now takes an additional type-0x15 input buffer. | |||
== RequestTakingScreenShot == | |||
Takes a total of 0x10-bytes of input. No output. | |||
== RequestTakingScreenShotWithTimeout == | |||
Takes a total of 0x18-bytes of input. No output. | |||
== RequestTakingScreenShotEx == | |||
Takes a total of 0x58-bytes of input. No output. | |||
== RequestTakingScreenShotEx1 == | |||
Takes a total of 0x60-bytes of input. No output. | |||
[6.0.0+] In addition, this also takes a type-0x15 input buffer. | |||
[8.0.0+] Now takes an additional type-0x15 input buffer. | |||
[11.0.0+] Now takes an additional 8-bytes of input. | |||
[19.0.0+] Now takes another additional 8-bytes of input. This takes an input 0x40-byte struct, an u32, an u64, a 0x10-byte struct, two u64s, and two type-0x15 input buffers. | |||
[20.1.0+] Takes an input u32, a 0x40-byte struct, an u32, an u64, a 0x10-byte struct, two u64s, and two type-0x15 input buffers. | |||
== CancelTakingScreenShot == | |||
Takes a total of 0x10-bytes of input. No output. | |||
== SetTakingScreenShotCancelState == | |||
Takes a total of 0x10-bytes of input. No output. | |||
== NotifyTakingScreenShotRefused == | |||
Takes a total of 8-bytes of input. No output. | |||
== NotifyTakingScreenShotFailed == | |||
Takes a total of 8-bytes of input. No output. | |||
== SetupOverlayMovieThumbnail == | == SetupOverlayMovieThumbnail == | ||
Line 84: | Line 145: | ||
The requirements for the second buffer address/size are the same as the first buffer, except the minimum size is ('''width'''*'''height''')/2. | The requirements for the second buffer address/size are the same as the first buffer, except the minimum size is ('''width'''*'''height''')/2. | ||
== | == CreateProtoMovieMetaDataNv12Ex2 == | ||
Takes a 0x40-byte input struct, two input u64s '''width'''/'''height''', a 0x18-byte input struct, two type-0x15 input buffers, a type-0x6 output buffer, and two type-0x46 output buffers, returns 3 output u64s. | Takes a 0x40-byte input struct, two input u64s '''width'''/'''height''', a 0x18-byte input struct, two type-0x15 input buffers, a type-0x6 output buffer, and two type-0x46 output buffers, returns 3 output u64s. | ||
'''width'''/'''height''' have same requirements as [[#SetupOverlayMovieThumbnail]]. The size of the type-0x6 buffer must be at least 0x7D000. The requirements for the type-0x46 buffers are the same as [[#SetupOverlayMovieThumbnail]]. | '''width'''/'''height''' have same requirements as [[#SetupOverlayMovieThumbnail]]. The size of the type-0x6 buffer must be at least 0x7D000. The requirements for the type-0x46 buffers are the same as [[#SetupOverlayMovieThumbnail]]. | ||
User-processes use hard-coded sizes 0x400 and 0x404 for the first/second type-0x15 buffers. | |||
[5.0.0+] Now takes a total of 0x68-bytes of input instead of 0x30. | [5.0.0+] Now takes a total of 0x68-bytes of input instead of 0x30. | ||
== | [19.0.0+] Now takes an additional 0x10-bytes of input. | ||
== CreateProtoMovieMetaDataRgbaEx2 == | |||
Takes a 0x40-byte input struct, two input u64s '''width'''/'''height''', a 0x18-byte input struct, two type-0x15 input buffers, a type-0x6 output buffer, and a type-0x45 input buffer, returns 3 output u64s. | Takes a 0x40-byte input struct, two input u64s '''width'''/'''height''', a 0x18-byte input struct, two type-0x15 input buffers, a type-0x6 output buffer, and a type-0x45 input buffer, returns 3 output u64s. | ||
'''width'''/'''height''' have same requirements as [[#SetupOverlayMovieThumbnail]]. The size of the type-0x6 buffer must be at least 0x7D000. The size of the type-0x45 buffer must be at least 0x384000. | '''width'''/'''height''' have same requirements as [[#SetupOverlayMovieThumbnail]]. The size of the type-0x6 buffer must be at least 0x7D000. The size of the type-0x45 buffer must be at least 0x384000. | ||
User-processes use hard-coded sizes 0x400 and 0x404 for the first/second type-0x15 buffers. | |||
[5.0.0+] Now takes a total of 0x68-bytes of input instead of 0x30. | [5.0.0+] Now takes a total of 0x68-bytes of input instead of 0x30. | ||
[19.0.0+] Now takes an additional 0x10-bytes of input. | |||
== Cmd1108 == | |||
Takes a total of 0x70-bytes of input, three type-0x15 input buffers, a type-0x6 output buffer. Returns a total of 0x18-bytes of output. | |||
[19.0.0+] Now takes an additional 0x10-bytes of input. | |||
== OpenRawScreenShotReadStream == | |||
Takes a total of 0x10-bytes of input. Returns a total of 0x18-bytes of output. | |||
Only usable when the previously loaded value from [[Settings_services|set:sys GetDebugModeFlag]] is set. | |||
== CloseRawScreenShotReadStream == | |||
No input/output. | |||
Only usable when the previously loaded value from [[Settings_services|set:sys GetDebugModeFlag]] is set. | |||
== ReadRawScreenShotReadStream == | |||
Takes a total of 8-bytes of input and a type-0x6 output buffer. Returns a total of 8-bytes of output. | |||
Only usable when the previously loaded value from [[Settings_services|set:sys GetDebugModeFlag]] is set. | |||
== CaptureCrashScreenShot == | |||
Takes a total of 0x10-bytes of input and a type-0x46 output buffer. Returns a total of 8-bytes of output. | |||
Also required the mentioned debug flag but does no longer as of [10.0.0]. | |||
= caps:ss = | = caps:ss = | ||
This is "nn::capsrv::sf::IScreenShotService". This | This is "nn::capsrv::sf::IScreenShotService". | ||
This was added with [2.0.0+]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 113: | Line 209: | ||
| 204 || [3.0.0+] SaveEditedScreenShotEx0 | | 204 || [3.0.0+] SaveEditedScreenShotEx0 | ||
|- | |- | ||
| 206 || [ | | 206 || [4.0.0+] SaveEditedScreenShotEx1 | ||
|- | |- | ||
| 208 || [5.0.0+] SaveScreenShotOfMovieEx1 | | 208 || [5.0.0+] SaveScreenShotOfMovieEx1 | ||
|- | |||
| 1000 || [13.0.0+] [[#RequestTakingScreenShotForApplet]] | |||
|- | |||
| 2000 || [20.0.0+] | |||
|} | |} | ||
== RequestTakingScreenShotForApplet == | |||
Takes a total of 0x68-bytes of input, two type-0x15 input buffers. Returns a total of 0x20-bytes of output. | |||
[19.0.0+] Now takes an additional 8-bytes of input. | |||
= caps:su = | = caps:su = | ||
This is "nn::capsrv::sf::IScreenShotApplicationService". | This is "nn::capsrv::sf::IScreenShotApplicationService". | ||
This was added with [3.0.0+]. This was moved to [[Applet_Manager_services|AM] | This was added with [3.0.0+]. | ||
[6.0.0+] This was moved to [[Applet_Manager_services|AM]]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 153: | Line 260: | ||
| 6 || [2.0.0+] CancelCurrentCall | | 6 || [2.0.0+] CancelCurrentCall | ||
|- | |- | ||
| 100 || [4.0.0+] GetHdcpServiceObject | | 100 || [4.0.0+] [[#GetHdcpServiceObject]] | ||
|} | |} | ||
GetHdcpServiceObject | == GetHdcpServiceObject == | ||
No input. Returns a [[#IHdcpController]]. | |||
= IHdcpController = | = IHdcpController = | ||
This is "nn::hdcp::IHdcpController". | This is "nn::hdcp::detail::IHdcpController". | ||
This was added with [4.0.0+]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 178: | Line 286: | ||
= mm:u = | = mm:u = | ||
This is "nn::mmnv::IRequest". | This is "nn::mmnv::IRequest". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 185: | Line 291: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || InitializeOld | | 0 || [[#InitializeOld]] | ||
|- | |- | ||
| 1 || FinalizeOld | | 1 || [[#FinalizeOld]] | ||
|- | |- | ||
| 2 || SetAndWaitOld | | 2 || [[#SetAndWaitOld]] | ||
|- | |- | ||
| 3 || GetOld | | 3 || [[#GetOld]] | ||
|- | |- | ||
| 4 || Initialize | | 4 || [[#Initialize]] | ||
|- | |- | ||
| 5 || Finalize | | 5 || [[#Finalize]] | ||
|- | |- | ||
| 6 || SetAndWait | | 6 || [[#SetAndWait]] | ||
|- | |- | ||
| 7 || Get | | 7 || [[#Get]] | ||
|} | |} | ||
== InitializeOld == | |||
Takes an input [[#Module]], an input [[#Priority]] and an input u32 '''EventClearMode'''. No output. | |||
== FinalizeOld == | |||
Takes an input [[#Module]]. No output. | |||
== SetAndWaitOld == | |||
Takes an input [[#Module]] and two input [[#Setting]] '''Min''' and '''Max'''. No output. | |||
== GetOld == | |||
Takes an input [[#Module]]. Returns an output [[#Setting]] '''Current'''. | |||
== Initialize == | |||
Same as [[#InitializeOld]], but returns an output u32 '''RequestId'''. | |||
== Finalize == | |||
Same as [[#FinalizeOld]], but takes an input u32 '''RequestId''' instead of an input [[#Module]]. | |||
== SetAndWait == | |||
Same as [[#SetAndWaitOld]], but takes an input u32 '''RequestId''' instead of an input [[#Module]]. | |||
== Get == | |||
Same as [[#GetOld]], but takes an input u32 '''RequestId''' instead of an input [[#Module]]. | |||
= vi:u = | = vi:u = | ||
Line 230: | Line 360: | ||
|- | |- | ||
| 3 || [[#vi:s|GetDisplayServiceWithProxyNameExchange]] | | 3 || [[#vi:s|GetDisplayServiceWithProxyNameExchange]] | ||
|} | |} | ||
Line 250: | Line 379: | ||
| 3 || [[#vi:m|GetDisplayServiceWithProxyNameExchange]] | | 3 || [[#vi:m|GetDisplayServiceWithProxyNameExchange]] | ||
|- | |- | ||
| 100 || [16.0.0+] PrepareFatal | |||
|- | |||
| 101 || [16.0.0+] ShowFatal | |||
|- | |||
| 102 || [16.0.0+] DrawFatalRectangle | |||
|- | |||
| 103 || [16.0.0+] DrawFatalText32 | |||
|} | |} | ||
Line 422: | Line 558: | ||
|- | |- | ||
| 2209 || SetLayerAlpha | | 2209 || SetLayerAlpha | ||
|- | |||
| 2210 || [11.0.0-11.0.1] SetLayerPositionAndSize | |||
|- | |- | ||
| 2312 || [1.0.0-6.2.0] CreateStrayLayer | | 2312 || [1.0.0-6.2.0] CreateStrayLayer | ||
Line 468: | Line 606: | ||
|- | |- | ||
| 3217 || SetDisplayCmuLuma | | 3217 || SetDisplayCmuLuma | ||
|- | |||
| 3218 || [11.0.0+] SetDisplayCrcMode | |||
|- | |||
| 6013 || [10.0.0+] GetLayerPresentationSubmissionTimestamps | |||
|- | |- | ||
| 8225 || [4.0.0+] GetSharedBufferMemoryHandleId | | 8225 || [4.0.0+] GetSharedBufferMemoryHandleId | ||
Line 488: | Line 630: | ||
|- | |- | ||
| 8258 || [5.0.0+] CancelSharedFrameBuffer | | 8258 || [5.0.0+] CancelSharedFrameBuffer | ||
|- | |||
| 9000 || [11.0.0+] [[#GetDp2hdmiController]] | |||
|} | |||
=== GetDp2hdmiController === | |||
No input, returns an [[#IDp2hdmiController]]. | |||
=== IDp2hdmiController === | |||
This is "nn::dp2hdmi::detail::IDp2hdmiController". | |||
This was added with [11.0.0+]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || GetFirmwareVersion | |||
|- | |||
| 1 || GetAvailableFirmwareVersion | |||
|- | |||
| 2 || CheckFirmwareUpdateRequired | |||
|- | |||
| 3 || StartFirmwareUpdate | |||
|- | |||
| 4 || StartFirmwareUpdateWithSpecifiedImage | |||
|- | |||
| 5 || GetFirmwareUpdateState ([11.0.0-11.0.1] OverwriteFirmware) | |||
|- | |||
| 6 || ResetDevice ([11.0.0-11.0.1] OverwriteFirmwareWithSpecifiedImage) | |||
|- | |||
| 7 || [16.0.0-18.1.0] StartBootFirmwareUpdate ([11.0.0-11.0.1] GetFirmwareUpdateState) | |||
|- | |||
| 8 || [16.0.0+] StartBootFirmwareUpdateWithSpecifiedImage ([11.0.0-11.0.1] ResetDevice) | |||
|- | |||
| 9 || [17.0.0+] GetBootFirmwareVersion | |||
|} | |} | ||
Line 520: | Line 697: | ||
|- | |- | ||
| 2055 || DestroyIndirectConsumerEndPoint | | 2055 || DestroyIndirectConsumerEndPoint | ||
|- | |||
| 2060 || [16.0.0+] CreateWatermarkCompositor | |||
|- | |||
| 2062 || [16.0.0+] SetWatermarkText | |||
|- | |||
| 2063 || [16.0.0+] SetWatermarkLayerStacks | |||
|- | |- | ||
| 2300 || AcquireLayerTexturePresentingEvent | | 2300 || AcquireLayerTexturePresentingEvent | ||
Line 534: | Line 717: | ||
|- | |- | ||
| 2601 || [4.0.0+] GetDisplayErrorEvent | | 2601 || [4.0.0+] GetDisplayErrorEvent | ||
|- | |||
| 2701 || [11.0.0+] GetDisplayFatalErrorEvent | |||
|- | |- | ||
| 4201 || SetDisplayAlpha | | 4201 || SetDisplayAlpha | ||
Line 542: | Line 727: | ||
|- | |- | ||
| 4206 || [4.0.0+] SetDefaultDisplay | | 4206 || [4.0.0+] SetDefaultDisplay | ||
|- | |||
| 4207 || [11.0.0+] ResetDisplayPanel | |||
|- | |||
| 4208 || [11.0.0+] [[#SetDisplayFatalErrorEnabled]] ([11.0.0-11.0.1] EnableDisplayFatalError) | |||
|- | |||
| 4209 || [12.0.0+] IsDisplayPanelOn | |||
|- | |||
| 4300 || [11.0.0+] GetInternalPanelId | |||
|- | |- | ||
| 6000 || AddToLayerStack | | 6000 || AddToLayerStack | ||
Line 568: | Line 761: | ||
|- | |- | ||
| 6012 || [7.0.0+] DisableLayerAutoClearTransitionBuffer | | 6012 || [7.0.0+] DisableLayerAutoClearTransitionBuffer | ||
|- | |||
| 6013 || [13.0.0+] SetLayerOpacity | |||
|- | |||
| 6014 || [16.0.0+] AttachLayerWatermarkCompositor | |||
|- | |||
| 6015 || [16.0.0+] DetachLayerWatermarkCompositor | |||
|- | |- | ||
| 7000 || SetContentVisibility | | 7000 || SetContentVisibility | ||
Line 625: | Line 824: | ||
| 8292 || [4.0.0+] FillDetachedSharedFrameBufferColor | | 8292 || [4.0.0+] FillDetachedSharedFrameBufferColor | ||
|- | |- | ||
| 8293 || [4.0.0+] GetDetachedSharedFrameBufferImage | | 8293 || [4.0.0+] [[#GetDetachedSharedFrameBufferImage]] | ||
|- | |- | ||
| 8294 || [4.0.0+] SetDetachedSharedFrameBufferImage | | 8294 || [4.0.0+] SetDetachedSharedFrameBufferImage | ||
Line 637: | Line 836: | ||
| 8298 || [5.0.0+] ExpandStartupLogoOnSharedFrameBuffer | | 8298 || [5.0.0+] ExpandStartupLogoOnSharedFrameBuffer | ||
|} | |} | ||
[10.0.0+] AttachLayerPresentationTracer now takes an additional 8-bytes of input. | |||
[5.0.0+] SetDetachedSharedFrameBufferImage now takes an additional 0x10-bytes of input. CopyDetachedSharedFrameBufferImage now takes an additional 0x18-bytes of input. SetDetachedSharedFrameBufferSubImage now takes an additional 0x10-bytes of input, and the buffer type was changed from 0x5 to 0x45. | [5.0.0+] SetDetachedSharedFrameBufferImage now takes an additional 0x10-bytes of input. CopyDetachedSharedFrameBufferImage now takes an additional 0x18-bytes of input. SetDetachedSharedFrameBufferSubImage now takes an additional 0x10-bytes of input, and the buffer type was changed from 0x5 to 0x45. | ||
=== GetDetachedSharedFrameBufferImage === | |||
Takes a total of 0x10-bytes of input and a type-0x6 output buffer, returns a total of 8-bytes of output. | |||
[15.0.0+] Now takes a total of 0x28-bytes of input and a type-0x6 output buffer, returns a total of 8-bytes of output. | |||
== SetDisplayFatalErrorEnabled == | |||
Takes an input u64, no output. | |||
[12.0.0+] Takes an input bool and u64, no output. | |||
= lbl = | |||
This is "nn::lbl::detail::ILblController". | |||
[11.0.0+] this was moved from [[PTM_services|ptm]]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || SaveCurrentSetting | |||
|- | |||
| 1 || LoadCurrentSetting | |||
|- | |||
| 2 || SetCurrentBrightnessSetting | |||
|- | |||
| 3 || GetCurrentBrightnessSetting | |||
|- | |||
| 4 || ApplyCurrentBrightnessSettingToBacklight | |||
|- | |||
| 5 || GetBrightnessSettingAppliedToBacklight | |||
|- | |||
| 6 || SwitchBacklightOn | |||
|- | |||
| 7 || SwitchBacklightOff | |||
|- | |||
| 8 || GetBacklightSwitchStatus | |||
|- | |||
| 9 || EnableDimming | |||
|- | |||
| 10 || DisableDimming | |||
|- | |||
| 11 || IsDimmingEnabled | |||
|- | |||
| 12 || EnableAutoBrightnessControl | |||
|- | |||
| 13 || DisableAutoBrightnessControl | |||
|- | |||
| 14 || IsAutoBrightnessControlEnabled | |||
|- | |||
| 15 || SetAmbientLightSensorValue | |||
|- | |||
| 16 || [[#GetAmbientLightSensorValue]] | |||
|- | |||
| 17 || SetBrightnessReflectionDelayLevel | |||
|- | |||
| 18 || GetBrightnessReflectionDelayLevel | |||
|- | |||
| 19 || SetCurrentBrightnessMapping | |||
|- | |||
| 20 || GetCurrentBrightnessMapping | |||
|- | |||
| 21 || SetCurrentAmbientLightSensorMapping | |||
|- | |||
| 22 || GetCurrentAmbientLightSensorMapping | |||
|- | |||
| 23 || [3.0.0+] IsAmbientLightSensorAvailable | |||
|- | |||
| 24 || [3.0.0+] SetCurrentBrightnessSettingForVrMode | |||
|- | |||
| 25 || [3.0.0+] GetCurrentBrightnessSettingForVrMode | |||
|- | |||
| 26 || [3.0.0+] [[#EnableVrMode]] | |||
|- | |||
| 27 || [3.0.0+] [[#DisableVrMode]] | |||
|- | |||
| 28 || [3.0.0+] [[#IsVrModeEnabled]] | |||
|- | |||
| 29 || [7.0.0+] IsAutoBrightnessControlSupported | |||
|} | |||
== GetAmbientLightSensorValue == | |||
No input. Outputs lux in float. | |||
[5.0.0+] Now returns an output [[#AmbientLightSensorValue]]. | |||
== GetCurrentBrightnessSetting == | |||
No input. Returns an output u32 int of the current backlight level. | |||
== GetBrightnessSettingAppliedToBacklight == | |||
No input. Returns an output u32 int of the backlight level computed from the ambient light sensor. | |||
== IsAutoBrightnessControlEnabled == | |||
No input. Returns an output u8 bool indicating whether auto brightness is enabled. | |||
== EnableVrMode == | |||
No input/output. Used by [[AM_services#SetVrModeEnabled]]. | |||
Sets a global state field to 0x1. | |||
== DisableVrMode == | |||
No input/output. Used by [[AM_services#SetVrModeEnabled]]. | |||
Sets the global state field used by [[#EnableVrMode]] to 0x0. | |||
== IsVrModeEnabled == | |||
No input. Returns an output u8 bool set by the above commands. | |||
= Module = | |||
This is "nn::mmnv::Module". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 0 || Cpu | |||
|- | |||
| 1 || Gpu | |||
|- | |||
| 2 || Emc | |||
|- | |||
| 3 || SysBus | |||
|- | |||
| 4 || Mselect | |||
|- | |||
| 5 || Nvdec | |||
|- | |||
| 6 || Nvenc | |||
|- | |||
| 7 || Nvjpg | |||
|- | |||
| 8 || Test | |||
|} | |||
= Priority = | |||
This is "nn::mmnv::Priority". This is an u32. | |||
= Setting = | |||
This is "nn::mmnv::Setting". This is an u32. | |||
= DisplayInfo = | = DisplayInfo = | ||
This is "nn::vi::DisplayInfo". This is a 0x60-byte structure. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Offset || Size || Description | ! Offset || Size || Description | ||
|- | |- | ||
| 0x0 || 0x40 || [[#DisplayName]] | | 0x0 || 0x40 || [[#DisplayName|Name]] | ||
|- | |- | ||
| 0x40 || 0x1 || | | 0x40 || 0x1 || HasLayerLimit | ||
|- | |- | ||
| 0x41 || 0x7 || | | 0x41 || 0x7 || Reserved | ||
|- | |- | ||
| 0x48 || 0x8 || | | 0x48 || 0x8 || LayerCountMax | ||
|- | |- | ||
| 0x50 || 0x8 || | | 0x50 || 0x8 || LayerWidthPixelCountMax | ||
|- | |- | ||
| 0x58 || 0x8 || | | 0x58 || 0x8 || LayerHeightPixelCountMax | ||
|} | |} | ||
The width/height for the "Default" Display is the resolution for 1080p even when in handheld-mode. | The width/height for the "Default" Display is the resolution for 1080p even when in handheld-mode. | ||
= DisplayName = | = DisplayName = | ||
This is a 0x40-byte block: a NUL-terminated string. | This is "nn::vi::DisplayName". This is a 0x40-byte block: a NUL-terminated string. | ||
Can be "Default", "External", "[https://en.wikipedia.org/wiki/Extended_Display_Identification_Data Edid]", "Internal" or "Null". | Can be "Default", "External", "[https://en.wikipedia.org/wiki/Extended_Display_Identification_Data Edid]", "Internal" or "Null". | ||
= NativeWindow = | |||
Max size of this buffer is 0x100-bytes(outbuf size used by official user-processes). Parsed("...DeserializeNativeWindow()") by a function called by the code described under [[#OpenLayer]], which executes code with Android symbols. | |||
This is a [[#Parcel]]. | |||
= Parcel = | = Parcel = | ||
Line 682: | Line 1,027: | ||
| 0x10 || ? || FlattenedBinder | | 0x10 || ? || FlattenedBinder | ||
|} | |} | ||
== ParcelData == | == ParcelData == | ||
Line 713: | Line 1,053: | ||
This normally contains an u32 with value 0? | This normally contains an u32 with value 0? | ||
= Resolution | = AmbientLightSensorValue = | ||
{| class="wikitable" border="1" | |||
|- | |||
! Offset || Size || Description | |||
|- | |||
| 0x0 || 0x4 || bOverLimit. (u32) Equals to 1 if visible or IR light data is over 65534. | |||
|- | |||
| 0x4 || 0x4 || fLux. (float) Value in lux from the ambient light sensor. | |||
|} | |||
Note: if bOverLimit=1 and the default ALS configuration is used, the measurement of fLux should not be considered and the actual max value depends on the type of light. Ranges from 12.5K - 17.5K. | |||
= Notes = | |||
== Resolution Handling == | |||
There doesn't seem to be a way to get the actual TV resolution while using the "Default" Display. Official apps just hard-code what resolution to use depending on the current [[AM_services|OperationMode]]. | There doesn't seem to be a way to get the actual TV resolution while using the "Default" Display. Official apps just hard-code what resolution to use depending on the current [[AM_services|OperationMode]]. | ||
== Ambient Light Sensor == | |||
The BH1730 outputs 2 values. Visible light and IR light. This is then calculated through an algorithm that checks for Gain, Measurement time, filter qualities and ouputs lux (max correct measurement of 100K lux). | |||
The default values are Gain 64x and ITIME of 38 (256 - 218). This allows for a max lux value of 17972 lux when visible light value is maximum and IR light is 0. When both of them are on their limit, the output is 1192 lux. | |||
The sensor is fully configurable. | |||
[[Category:Services]] | [[Category:Services]] |