diff options
| author | emmauss <emmausssss@gmail.com> | 2018-11-20 02:01:36 +0200 |
|---|---|---|
| committer | Ac_K <Acoustik666@gmail.com> | 2018-11-20 01:01:36 +0100 |
| commit | dc02ac08caa84456e8b280a3347ac8907b5249ff (patch) | |
| tree | ef71cf05cba18da65c930328f955352f4859e67f /Ryujinx.HLE/HOS | |
| parent | 0c36835f6de563cd6b4a4c82cac25fbcfb0a6231 (diff) | |
Support other switch controller types (#487)
* Make controllers modular, support changing controller type
* return readable events
* signal hid events
* fix style
Diffstat (limited to 'Ryujinx.HLE/HOS')
| -rw-r--r-- | Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs | 37 |
1 files changed, 28 insertions, 9 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs b/Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs index e54ca812..1af734ff 100644 --- a/Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs +++ b/Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs @@ -23,7 +23,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid private bool UsbFullKeyControllerEnabled; private HidNpadJoyHoldType NpadJoyHoldType; - private HidNpadStyle NpadStyleTag; + private HidNpadStyle NpadStyleSet; private HidNpadJoyAssignmentMode NpadJoyAssignmentMode; private HidNpadHandheldActivationMode NpadHandheldActivationMode; private HidGyroscopeZeroDriftMode GyroscopeZeroDriftMode; @@ -153,7 +153,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid PalmaOperationCompleteEvent = new KEvent(System); NpadJoyHoldType = HidNpadJoyHoldType.Vertical; - NpadStyleTag = HidNpadStyle.FullKey | HidNpadStyle.Dual | HidNpadStyle.Left | HidNpadStyle.Right; + NpadStyleSet = HidNpadStyle.FullKey | HidNpadStyle.Dual | HidNpadStyle.Left | HidNpadStyle.Right | HidNpadStyle.Handheld; NpadJoyAssignmentMode = HidNpadJoyAssignmentMode.Dual; NpadHandheldActivationMode = HidNpadHandheldActivationMode.Dual; GyroscopeZeroDriftMode = HidGyroscopeZeroDriftMode.Standard; @@ -161,6 +161,9 @@ namespace Ryujinx.HLE.HOS.Services.Hid SensorFusionParams = new HidSensorFusionParameters(); AccelerometerParams = new HidAccelerometerParameters(); VibrationValue = new HidVibrationValue(); + + // TODO: signal event at right place + XpadIdEvent.ReadableEvent.Signal(); } // CreateAppletResource(nn::applet::AppletResourceUserId) -> object<nn::hid::IAppletResource> @@ -218,7 +221,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { long XpadId = Context.RequestData.ReadInt64(); - if (Context.Process.HandleTable.GenerateHandle(XpadIdEvent, out XpadIdEventHandle) != KernelResult.Success) + if (Context.Process.HandleTable.GenerateHandle(XpadIdEvent.ReadableEvent, out XpadIdEventHandle) != KernelResult.Success) { throw new InvalidOperationException("Out of handles!"); } @@ -652,12 +655,14 @@ namespace Ryujinx.HLE.HOS.Services.Hid // SetSupportedNpadStyleSet(nn::applet::AppletResourceUserId, nn::hid::NpadStyleTag) public long SetSupportedNpadStyleSet(ServiceCtx Context) { - NpadStyleTag = (HidNpadStyle)Context.RequestData.ReadInt32(); + NpadStyleSet = (HidNpadStyle)Context.RequestData.ReadInt32(); long AppletResourceUserId = Context.RequestData.ReadInt64(); Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {AppletResourceUserId} - " + - $"NpadStyleTag: {NpadStyleTag}"); + $"NpadStyleSet: {NpadStyleSet}"); + + NpadStyleSetUpdateEvent.ReadableEvent.Signal(); return 0; } @@ -667,10 +672,10 @@ namespace Ryujinx.HLE.HOS.Services.Hid { long AppletResourceUserId = Context.RequestData.ReadInt64(); - Context.ResponseData.Write((int)NpadStyleTag); + Context.ResponseData.Write((int)NpadStyleSet); Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {AppletResourceUserId} - " + - $"NpadStyleTag: {NpadStyleTag}"); + $"NpadStyleSet: {NpadStyleSet}"); return 0; } @@ -714,7 +719,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid int NpadId = Context.RequestData.ReadInt32(); long NpadStyleSet = Context.RequestData.ReadInt64(); - if (Context.Process.HandleTable.GenerateHandle(NpadStyleSetUpdateEvent, out int Handle) != KernelResult.Success) + if (Context.Process.HandleTable.GenerateHandle(NpadStyleSetUpdateEvent.ReadableEvent, out int Handle) != KernelResult.Success) { throw new InvalidOperationException("Out of handles!"); } @@ -1348,6 +1353,8 @@ namespace Ryujinx.HLE.HOS.Services.Hid Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {PalmaConnectionHandle}"); + PalmaOperationCompleteEvent.ReadableEvent.Signal(); + return 0; } @@ -1356,7 +1363,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { int PalmaConnectionHandle = Context.RequestData.ReadInt32(); - if (Context.Process.HandleTable.GenerateHandle(PalmaOperationCompleteEvent, out int Handle) != KernelResult.Success) + if (Context.Process.HandleTable.GenerateHandle(PalmaOperationCompleteEvent.ReadableEvent, out int Handle) != KernelResult.Success) { throw new InvalidOperationException("Out of handles!"); } @@ -1392,6 +1399,8 @@ namespace Ryujinx.HLE.HOS.Services.Hid Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {PalmaConnectionHandle} - " + $"Unknown0: {Unknown0}"); + PalmaOperationCompleteEvent.ReadableEvent.Signal(); + return 0; } @@ -1404,6 +1413,8 @@ namespace Ryujinx.HLE.HOS.Services.Hid Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {PalmaConnectionHandle} - " + $"FrModeType: {FrModeType}"); + PalmaOperationCompleteEvent.ReadableEvent.Signal(); + return 0; } @@ -1426,6 +1437,8 @@ namespace Ryujinx.HLE.HOS.Services.Hid Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {PalmaConnectionHandle} - " + $"EnabledPalmaStep: {EnabledPalmaStep}"); + PalmaOperationCompleteEvent.ReadableEvent.Signal(); + return 0; } @@ -1436,6 +1449,8 @@ namespace Ryujinx.HLE.HOS.Services.Hid Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {PalmaConnectionHandle}"); + PalmaOperationCompleteEvent.ReadableEvent.Signal(); + return 0; } @@ -1446,6 +1461,8 @@ namespace Ryujinx.HLE.HOS.Services.Hid Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {PalmaConnectionHandle}"); + PalmaOperationCompleteEvent.ReadableEvent.Signal(); + return 0; } @@ -1475,6 +1492,8 @@ namespace Ryujinx.HLE.HOS.Services.Hid $"Unknown0: {Unknown0} - " + $"Unknown1: {Unknown1}"); + PalmaOperationCompleteEvent.ReadableEvent.Signal(); + return 0; } |
