aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Horizon/Arp/Ipc/Registrar.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Horizon/Arp/Ipc/Registrar.cs')
-rw-r--r--src/Ryujinx.Horizon/Arp/Ipc/Registrar.cs52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/Ryujinx.Horizon/Arp/Ipc/Registrar.cs b/src/Ryujinx.Horizon/Arp/Ipc/Registrar.cs
new file mode 100644
index 00000000..841ab760
--- /dev/null
+++ b/src/Ryujinx.Horizon/Arp/Ipc/Registrar.cs
@@ -0,0 +1,52 @@
+using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Sdk.Arp;
+using Ryujinx.Horizon.Sdk.Arp.Detail;
+using Ryujinx.Horizon.Sdk.Ns;
+using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf.Hipc;
+using System;
+
+namespace Ryujinx.Horizon.Arp.Ipc
+{
+ partial class Registrar : IRegistrar, IServiceObject
+ {
+ private readonly ApplicationInstance _applicationInstance;
+
+ public Registrar(ApplicationInstance applicationInstance)
+ {
+ _applicationInstance = applicationInstance;
+ }
+
+ [CmifCommand(0)]
+ public Result Issue(out ulong applicationInstanceId)
+ {
+ throw new NotImplementedException();
+ }
+
+ [CmifCommand(1)]
+ public Result SetApplicationLaunchProperty(ApplicationLaunchProperty applicationLaunchProperty)
+ {
+ if (_applicationInstance.LaunchProperty != null)
+ {
+ return ArpResult.DataAlreadyBound;
+ }
+
+ _applicationInstance.LaunchProperty = applicationLaunchProperty;
+
+ return Result.Success;
+ }
+
+ [CmifCommand(2)]
+ public Result SetApplicationControlProperty([Buffer(HipcBufferFlags.In | HipcBufferFlags.MapAlias | HipcBufferFlags.FixedSize, 0x4000)] in ApplicationControlProperty applicationControlProperty)
+ {
+ if (_applicationInstance.ControlProperty != null)
+ {
+ return ArpResult.DataAlreadyBound;
+ }
+
+ _applicationInstance.ControlProperty = applicationControlProperty;
+
+ return Result.Success;
+ }
+ }
+}