aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/OsHle/Services/Nfp/IUser.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.HLE/OsHle/Services/Nfp/IUser.cs')
-rw-r--r--Ryujinx.HLE/OsHle/Services/Nfp/IUser.cs114
1 files changed, 114 insertions, 0 deletions
diff --git a/Ryujinx.HLE/OsHle/Services/Nfp/IUser.cs b/Ryujinx.HLE/OsHle/Services/Nfp/IUser.cs
new file mode 100644
index 00000000..4b423ba7
--- /dev/null
+++ b/Ryujinx.HLE/OsHle/Services/Nfp/IUser.cs
@@ -0,0 +1,114 @@
+using Ryujinx.HLE.Input;
+using Ryujinx.HLE.Logging;
+using Ryujinx.HLE.OsHle.Handles;
+using Ryujinx.HLE.OsHle.Ipc;
+using System.Collections.Generic;
+
+namespace Ryujinx.HLE.OsHle.Services.Nfp
+{
+ class IUser : IpcService
+ {
+ private Dictionary<int, ServiceProcessRequest> m_Commands;
+
+ public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
+
+ private const HidControllerId NpadId = HidControllerId.CONTROLLER_PLAYER_1;
+
+ private State State = State.NonInitialized;
+
+ private DeviceState DeviceState = DeviceState.Initialized;
+
+ private KEvent ActivateEvent;
+
+ private KEvent DeactivateEvent;
+
+ private KEvent AvailabilityChangeEvent;
+
+ public IUser()
+ {
+ m_Commands = new Dictionary<int, ServiceProcessRequest>()
+ {
+ { 0, Initialize },
+ { 17, AttachActivateEvent },
+ { 18, AttachDeactivateEvent },
+ { 19, GetState },
+ { 20, GetDeviceState },
+ { 21, GetNpadId },
+ { 23, AttachAvailabilityChangeEvent }
+ };
+
+ ActivateEvent = new KEvent();
+ DeactivateEvent = new KEvent();
+ AvailabilityChangeEvent = new KEvent();
+ }
+
+ public long Initialize(ServiceCtx Context)
+ {
+ Context.Ns.Log.PrintStub(LogClass.ServiceNfp, "Stubbed.");
+
+ State = State.Initialized;
+
+ return 0;
+ }
+
+ public long AttachActivateEvent(ServiceCtx Context)
+ {
+ Context.Ns.Log.PrintStub(LogClass.ServiceNfp, "Stubbed.");
+
+ int Handle = Context.Process.HandleTable.OpenHandle(ActivateEvent);
+
+ Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);;
+
+ return 0;
+ }
+
+ public long AttachDeactivateEvent(ServiceCtx Context)
+ {
+ Context.Ns.Log.PrintStub(LogClass.ServiceNfp, "Stubbed.");
+
+ int Handle = Context.Process.HandleTable.OpenHandle(DeactivateEvent);
+
+ Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
+
+ return 0;
+ }
+
+ public long GetState(ServiceCtx Context)
+ {
+ Context.ResponseData.Write((int)State);
+
+ Context.Ns.Log.PrintStub(LogClass.ServiceNfp, "Stubbed.");
+
+ return 0;
+ }
+
+ public long GetDeviceState(ServiceCtx Context)
+ {
+ Context.ResponseData.Write((int)DeviceState);
+
+ Context.Ns.Log.PrintStub(LogClass.ServiceNfp, "Stubbed.");
+
+ return 0;
+ }
+
+ public long GetNpadId(ServiceCtx Context)
+ {
+ Context.ResponseData.Write((int)NpadId);
+
+ Context.Ns.Log.PrintStub(LogClass.ServiceNfp, "Stubbed.");
+
+ return 0;
+ }
+
+ public long AttachAvailabilityChangeEvent(ServiceCtx Context)
+ {
+ Context.Ns.Log.PrintStub(LogClass.ServiceNfp, "Stubbed.");
+
+ int Handle = Context.Process.HandleTable.OpenHandle(AvailabilityChangeEvent);
+
+ Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
+
+ return 0;
+ }
+ }
+} \ No newline at end of file