aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.HLE/HOS/Services/Lbl
diff options
context:
space:
mode:
authorTSR Berry <20988865+TSRBerry@users.noreply.github.com>2023-04-08 01:22:00 +0200
committerMary <thog@protonmail.com>2023-04-27 23:51:14 +0200
commitcee712105850ac3385cd0091a923438167433f9f (patch)
tree4a5274b21d8b7f938c0d0ce18736d3f2993b11b1 /src/Ryujinx.HLE/HOS/Services/Lbl
parentcd124bda587ef09668a971fa1cac1c3f0cfc9f21 (diff)
Move solution and projects to src
Diffstat (limited to 'src/Ryujinx.HLE/HOS/Services/Lbl')
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Lbl/ILblController.cs92
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Lbl/LblControllerServer.cs54
2 files changed, 146 insertions, 0 deletions
diff --git a/src/Ryujinx.HLE/HOS/Services/Lbl/ILblController.cs b/src/Ryujinx.HLE/HOS/Services/Lbl/ILblController.cs
new file mode 100644
index 00000000..65074d5f
--- /dev/null
+++ b/src/Ryujinx.HLE/HOS/Services/Lbl/ILblController.cs
@@ -0,0 +1,92 @@
+namespace Ryujinx.HLE.HOS.Services.Lbl
+{
+ abstract class ILblController : IpcService
+ {
+ public ILblController(ServiceCtx context) { }
+
+ protected abstract void SetCurrentBrightnessSettingForVrMode(float currentBrightnessSettingForVrMode);
+ protected abstract float GetCurrentBrightnessSettingForVrMode();
+ internal abstract void EnableVrMode();
+ internal abstract void DisableVrMode();
+ protected abstract bool IsVrModeEnabled();
+
+ [CommandCmif(17)]
+ // SetBrightnessReflectionDelayLevel(float, float)
+ public ResultCode SetBrightnessReflectionDelayLevel(ServiceCtx context)
+ {
+ return ResultCode.Success;
+ }
+
+ [CommandCmif(18)]
+ // GetBrightnessReflectionDelayLevel(float) -> float
+ public ResultCode GetBrightnessReflectionDelayLevel(ServiceCtx context)
+ {
+ context.ResponseData.Write(0.0f);
+
+ return ResultCode.Success;
+ }
+
+ [CommandCmif(21)]
+ // SetCurrentAmbientLightSensorMapping(unknown<0xC>)
+ public ResultCode SetCurrentAmbientLightSensorMapping(ServiceCtx context)
+ {
+ return ResultCode.Success;
+ }
+
+ [CommandCmif(22)]
+ // GetCurrentAmbientLightSensorMapping() -> unknown<0xC>
+ public ResultCode GetCurrentAmbientLightSensorMapping(ServiceCtx context)
+ {
+ return ResultCode.Success;
+ }
+
+ [CommandCmif(24)] // 3.0.0+
+ // SetCurrentBrightnessSettingForVrMode(float)
+ public ResultCode SetCurrentBrightnessSettingForVrMode(ServiceCtx context)
+ {
+ float currentBrightnessSettingForVrMode = context.RequestData.ReadSingle();
+
+ SetCurrentBrightnessSettingForVrMode(currentBrightnessSettingForVrMode);
+
+ return ResultCode.Success;
+ }
+
+ [CommandCmif(25)] // 3.0.0+
+ // GetCurrentBrightnessSettingForVrMode() -> float
+ public ResultCode GetCurrentBrightnessSettingForVrMode(ServiceCtx context)
+ {
+ float currentBrightnessSettingForVrMode = GetCurrentBrightnessSettingForVrMode();
+
+ context.ResponseData.Write(currentBrightnessSettingForVrMode);
+
+ return ResultCode.Success;
+ }
+
+ [CommandCmif(26)] // 3.0.0+
+ // EnableVrMode()
+ public ResultCode EnableVrMode(ServiceCtx context)
+ {
+ EnableVrMode();
+
+ return ResultCode.Success;
+ }
+
+ [CommandCmif(27)] // 3.0.0+
+ // DisableVrMode()
+ public ResultCode DisableVrMode(ServiceCtx context)
+ {
+ DisableVrMode();
+
+ return ResultCode.Success;
+ }
+
+ [CommandCmif(28)] // 3.0.0+
+ // IsVrModeEnabled() -> bool
+ public ResultCode IsVrModeEnabled(ServiceCtx context)
+ {
+ context.ResponseData.Write(IsVrModeEnabled());
+
+ return ResultCode.Success;
+ }
+ }
+} \ No newline at end of file
diff --git a/src/Ryujinx.HLE/HOS/Services/Lbl/LblControllerServer.cs b/src/Ryujinx.HLE/HOS/Services/Lbl/LblControllerServer.cs
new file mode 100644
index 00000000..b68be1f2
--- /dev/null
+++ b/src/Ryujinx.HLE/HOS/Services/Lbl/LblControllerServer.cs
@@ -0,0 +1,54 @@
+namespace Ryujinx.HLE.HOS.Services.Lbl
+{
+ [Service("lbl")]
+ class LblControllerServer : ILblController
+ {
+ private bool _vrModeEnabled;
+ private float _currentBrightnessSettingForVrMode;
+
+ public LblControllerServer(ServiceCtx context) : base(context) { }
+
+ protected override void SetCurrentBrightnessSettingForVrMode(float currentBrightnessSettingForVrMode)
+ {
+ if (float.IsNaN(currentBrightnessSettingForVrMode) || float.IsInfinity(currentBrightnessSettingForVrMode))
+ {
+ _currentBrightnessSettingForVrMode = 0.0f;
+
+ return;
+ }
+
+ _currentBrightnessSettingForVrMode = currentBrightnessSettingForVrMode;
+ }
+
+ protected override float GetCurrentBrightnessSettingForVrMode()
+ {
+ if (float.IsNaN(_currentBrightnessSettingForVrMode) || float.IsInfinity(_currentBrightnessSettingForVrMode))
+ {
+ return 0.0f;
+ }
+
+ return _currentBrightnessSettingForVrMode;
+ }
+
+ internal override void EnableVrMode()
+ {
+ _vrModeEnabled = true;
+
+ // NOTE: Service check _vrModeEnabled field value in a thread and then change the screen brightness.
+ // Since we don't support that. It's fine to do nothing.
+ }
+
+ internal override void DisableVrMode()
+ {
+ _vrModeEnabled = false;
+
+ // NOTE: Service check _vrModeEnabled field value in a thread and then change the screen brightness.
+ // Since we don't support that. It's fine to do nothing.
+ }
+
+ protected override bool IsVrModeEnabled()
+ {
+ return _vrModeEnabled;
+ }
+ }
+}