aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Horizon/Sdk/Lbl
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Horizon/Sdk/Lbl')
-rw-r--r--src/Ryujinx.Horizon/Sdk/Lbl/ILblController.cs20
-rw-r--r--src/Ryujinx.Horizon/Sdk/Lbl/LblApi.cs43
2 files changed, 63 insertions, 0 deletions
diff --git a/src/Ryujinx.Horizon/Sdk/Lbl/ILblController.cs b/src/Ryujinx.Horizon/Sdk/Lbl/ILblController.cs
new file mode 100644
index 00000000..594722e9
--- /dev/null
+++ b/src/Ryujinx.Horizon/Sdk/Lbl/ILblController.cs
@@ -0,0 +1,20 @@
+using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Sdk.Sf;
+
+namespace Ryujinx.Horizon.Sdk.Lbl
+{
+ interface ILblController : IServiceObject
+ {
+ Result SetBrightnessReflectionDelayLevel(float unknown0, float unknown1);
+ Result GetBrightnessReflectionDelayLevel(out float unknown1, float unknown0);
+ Result SetCurrentBrightnessMapping(float unknown0, float unknown1, float unknown2);
+ Result GetCurrentBrightnessMapping(out float unknown0, out float unknown1, out float unknown2);
+ Result SetCurrentAmbientLightSensorMapping(float unknown0, float unknown1, float unknown2);
+ Result GetCurrentAmbientLightSensorMapping(out float unknown0, out float unknown1, out float unknown2);
+ Result SetCurrentBrightnessSettingForVrMode(float currentBrightnessSettingForVrMode);
+ Result GetCurrentBrightnessSettingForVrMode(out float currentBrightnessSettingForVrMode);
+ Result EnableVrMode();
+ Result DisableVrMode();
+ Result IsVrModeEnabled(out bool vrModeEnabled);
+ }
+}
diff --git a/src/Ryujinx.Horizon/Sdk/Lbl/LblApi.cs b/src/Ryujinx.Horizon/Sdk/Lbl/LblApi.cs
new file mode 100644
index 00000000..843a9acd
--- /dev/null
+++ b/src/Ryujinx.Horizon/Sdk/Lbl/LblApi.cs
@@ -0,0 +1,43 @@
+using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Sdk.Sm;
+using System;
+
+namespace Ryujinx.Horizon.Sdk.Lbl
+{
+ public class LblApi : IDisposable
+ {
+ private const string LblName = "lbl";
+
+ private int _sessionHandle;
+
+ public LblApi()
+ {
+ using var smApi = new SmApi();
+
+ smApi.Initialize();
+ smApi.GetServiceHandle(out _sessionHandle, ServiceName.Encode(LblName)).AbortOnFailure();
+ }
+
+ public Result EnableVrMode()
+ {
+ return ServiceUtil.SendRequest(out _, _sessionHandle, 26, sendPid: false, ReadOnlySpan<byte>.Empty);
+ }
+
+ public Result DisableVrMode()
+ {
+ return ServiceUtil.SendRequest(out _, _sessionHandle, 27, sendPid: false, ReadOnlySpan<byte>.Empty);
+ }
+
+ public void Dispose()
+ {
+ if (_sessionHandle != 0)
+ {
+ HorizonStatic.Syscall.CloseHandle(_sessionHandle);
+
+ _sessionHandle = 0;
+ }
+
+ GC.SuppressFinalize(this);
+ }
+ }
+}