mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2024-11-17 19:36:40 +00:00
Bunch of Palma stuff
This commit is contained in:
parent
9520575f8a
commit
fa87a224c6
3 changed files with 59 additions and 226 deletions
|
@ -76,37 +76,6 @@ namespace Ryujinx.HLE.HOS.Services.Hid
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
[CommandCmif(40)]
|
|
||||||
// AcquireXpadIdEventHandle(ulong XpadId) -> nn::sf::NativeHandle
|
|
||||||
public ResultCode AcquireXpadIdEventHandle(ServiceCtx context)
|
|
||||||
{
|
|
||||||
long xpadId = context.RequestData.ReadInt64();
|
|
||||||
|
|
||||||
if (context.Process.HandleTable.GenerateHandle(_xpadIdEvent.ReadableEvent, out _xpadIdEventHandle) != Result.Success)
|
|
||||||
{
|
|
||||||
throw new InvalidOperationException("Out of handles!");
|
|
||||||
}
|
|
||||||
|
|
||||||
context.Response.HandleDesc = IpcHandleDesc.MakeCopy(_xpadIdEventHandle);
|
|
||||||
|
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { xpadId });
|
|
||||||
|
|
||||||
return ResultCode.Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandCmif(41)]
|
|
||||||
// ReleaseXpadIdEventHandle(ulong XpadId)
|
|
||||||
public ResultCode ReleaseXpadIdEventHandle(ServiceCtx context)
|
|
||||||
{
|
|
||||||
long xpadId = context.RequestData.ReadInt64();
|
|
||||||
|
|
||||||
context.Process.HandleTable.CloseHandle(_xpadIdEventHandle);
|
|
||||||
|
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { xpadId });
|
|
||||||
|
|
||||||
return ResultCode.Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandCmif(58)]
|
[CommandCmif(58)]
|
||||||
// GetJoyXpadLifoHandle(nn::hid::JoyXpadId) -> nn::sf::NativeHandle
|
// GetJoyXpadLifoHandle(nn::hid::JoyXpadId) -> nn::sf::NativeHandle
|
||||||
public ResultCode GetJoyXpadLifoHandle(ServiceCtx context)
|
public ResultCode GetJoyXpadLifoHandle(ServiceCtx context)
|
||||||
|
@ -459,163 +428,6 @@ namespace Ryujinx.HLE.HOS.Services.Hid
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
[CommandCmif(500)] // 5.0.0+
|
|
||||||
// GetPalmaConnectionHandle(uint Unknown0, nn::applet::AppletResourceUserId) -> nn::hid::PalmaConnectionHandle
|
|
||||||
public ResultCode GetPalmaConnectionHandle(ServiceCtx context)
|
|
||||||
{
|
|
||||||
int unknown0 = context.RequestData.ReadInt32();
|
|
||||||
long appletResourceUserId = context.RequestData.ReadInt64();
|
|
||||||
|
|
||||||
int palmaConnectionHandle = 0;
|
|
||||||
|
|
||||||
context.ResponseData.Write(palmaConnectionHandle);
|
|
||||||
|
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, unknown0, palmaConnectionHandle });
|
|
||||||
|
|
||||||
return ResultCode.Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandCmif(501)] // 5.0.0+
|
|
||||||
// InitializePalma(nn::hid::PalmaConnectionHandle)
|
|
||||||
public ResultCode InitializePalma(ServiceCtx context)
|
|
||||||
{
|
|
||||||
int palmaConnectionHandle = context.RequestData.ReadInt32();
|
|
||||||
|
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle });
|
|
||||||
|
|
||||||
_palmaOperationCompleteEvent.ReadableEvent.Signal();
|
|
||||||
|
|
||||||
return ResultCode.Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandCmif(502)] // 5.0.0+
|
|
||||||
// AcquirePalmaOperationCompleteEvent(nn::hid::PalmaConnectionHandle) -> nn::sf::NativeHandle
|
|
||||||
public ResultCode AcquirePalmaOperationCompleteEvent(ServiceCtx context)
|
|
||||||
{
|
|
||||||
int palmaConnectionHandle = context.RequestData.ReadInt32();
|
|
||||||
|
|
||||||
if (context.Process.HandleTable.GenerateHandle(_palmaOperationCompleteEvent.ReadableEvent, out int handle) != Result.Success)
|
|
||||||
{
|
|
||||||
throw new InvalidOperationException("Out of handles!");
|
|
||||||
}
|
|
||||||
|
|
||||||
context.Response.HandleDesc = IpcHandleDesc.MakeCopy(handle);
|
|
||||||
|
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle });
|
|
||||||
|
|
||||||
return ResultCode.Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandCmif(503)] // 5.0.0+
|
|
||||||
// GetPalmaOperationInfo(nn::hid::PalmaConnectionHandle) -> long Unknown0, buffer<Unknown>
|
|
||||||
public ResultCode GetPalmaOperationInfo(ServiceCtx context)
|
|
||||||
{
|
|
||||||
int palmaConnectionHandle = context.RequestData.ReadInt32();
|
|
||||||
|
|
||||||
long unknown0 = 0; //Counter?
|
|
||||||
|
|
||||||
context.ResponseData.Write(unknown0);
|
|
||||||
|
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle, unknown0 });
|
|
||||||
|
|
||||||
return ResultCode.Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandCmif(504)] // 5.0.0+
|
|
||||||
// PlayPalmaActivity(nn::hid::PalmaConnectionHandle, ulong Unknown0)
|
|
||||||
public ResultCode PlayPalmaActivity(ServiceCtx context)
|
|
||||||
{
|
|
||||||
int palmaConnectionHandle = context.RequestData.ReadInt32();
|
|
||||||
long unknown0 = context.RequestData.ReadInt64();
|
|
||||||
|
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle, unknown0 });
|
|
||||||
|
|
||||||
_palmaOperationCompleteEvent.ReadableEvent.Signal();
|
|
||||||
|
|
||||||
return ResultCode.Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandCmif(505)] // 5.0.0+
|
|
||||||
// SetPalmaFrModeType(nn::hid::PalmaConnectionHandle, ulong FrModeType)
|
|
||||||
public ResultCode SetPalmaFrModeType(ServiceCtx context)
|
|
||||||
{
|
|
||||||
int palmaConnectionHandle = context.RequestData.ReadInt32();
|
|
||||||
long frModeType = context.RequestData.ReadInt64();
|
|
||||||
|
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle, frModeType });
|
|
||||||
|
|
||||||
_palmaOperationCompleteEvent.ReadableEvent.Signal();
|
|
||||||
|
|
||||||
return ResultCode.Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandCmif(506)] // 5.0.0+
|
|
||||||
// ReadPalmaStep(nn::hid::PalmaConnectionHandle)
|
|
||||||
public ResultCode ReadPalmaStep(ServiceCtx context)
|
|
||||||
{
|
|
||||||
int palmaConnectionHandle = context.RequestData.ReadInt32();
|
|
||||||
|
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle });
|
|
||||||
|
|
||||||
return ResultCode.Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandCmif(507)] // 5.0.0+
|
|
||||||
// EnablePalmaStep(nn::hid::PalmaConnectionHandle, bool Enable)
|
|
||||||
public ResultCode EnablePalmaStep(ServiceCtx context)
|
|
||||||
{
|
|
||||||
int palmaConnectionHandle = context.RequestData.ReadInt32();
|
|
||||||
bool enabledPalmaStep = context.RequestData.ReadBoolean();
|
|
||||||
|
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle, enabledPalmaStep });
|
|
||||||
|
|
||||||
_palmaOperationCompleteEvent.ReadableEvent.Signal();
|
|
||||||
|
|
||||||
return ResultCode.Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandCmif(508)] // 5.0.0+
|
|
||||||
// ResetPalmaStep(nn::hid::PalmaConnectionHandle)
|
|
||||||
public ResultCode ResetPalmaStep(ServiceCtx context)
|
|
||||||
{
|
|
||||||
int palmaConnectionHandle = context.RequestData.ReadInt32();
|
|
||||||
|
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle });
|
|
||||||
|
|
||||||
_palmaOperationCompleteEvent.ReadableEvent.Signal();
|
|
||||||
|
|
||||||
return ResultCode.Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandCmif(509)] // 5.0.0+
|
|
||||||
// ReadPalmaApplicationSection(nn::hid::PalmaConnectionHandle, ulong Unknown0, ulong Unknown1)
|
|
||||||
public ResultCode ReadPalmaApplicationSection(ServiceCtx context)
|
|
||||||
{
|
|
||||||
int palmaConnectionHandle = context.RequestData.ReadInt32();
|
|
||||||
long unknown0 = context.RequestData.ReadInt64();
|
|
||||||
long unknown1 = context.RequestData.ReadInt64();
|
|
||||||
|
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle, unknown0, unknown1 });
|
|
||||||
|
|
||||||
return ResultCode.Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandCmif(510)] // 5.0.0+
|
|
||||||
// WritePalmaApplicationSection(nn::hid::PalmaConnectionHandle, ulong Unknown0, ulong Unknown1, nn::hid::PalmaApplicationSectionAccessBuffer)
|
|
||||||
public ResultCode WritePalmaApplicationSection(ServiceCtx context)
|
|
||||||
{
|
|
||||||
int palmaConnectionHandle = context.RequestData.ReadInt32();
|
|
||||||
long unknown0 = context.RequestData.ReadInt64();
|
|
||||||
long unknown1 = context.RequestData.ReadInt64();
|
|
||||||
// nn::hid::PalmaApplicationSectionAccessBuffer cast is unknown
|
|
||||||
|
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle, unknown0, unknown1 });
|
|
||||||
|
|
||||||
_palmaOperationCompleteEvent.ReadableEvent.Signal();
|
|
||||||
|
|
||||||
return ResultCode.Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandCmif(1004)] // 17.0.0+
|
[CommandCmif(1004)] // 17.0.0+
|
||||||
// SetTouchScreenResolution(int width, int height, nn::applet::AppletResourceUserId)
|
// SetTouchScreenResolution(int width, int height, nn::applet::AppletResourceUserId)
|
||||||
public ResultCode SetTouchScreenResolution(ServiceCtx context)
|
public ResultCode SetTouchScreenResolution(ServiceCtx context)
|
||||||
|
|
|
@ -6,6 +6,7 @@ using Ryujinx.Horizon.Sdk.Hid.HidDevices;
|
||||||
using Ryujinx.Horizon.Sdk.Hid.Npad;
|
using Ryujinx.Horizon.Sdk.Hid.Npad;
|
||||||
using Ryujinx.Horizon.Sdk.Hid.SixAxis;
|
using Ryujinx.Horizon.Sdk.Hid.SixAxis;
|
||||||
using Ryujinx.Horizon.Sdk.Hid.Vibration;
|
using Ryujinx.Horizon.Sdk.Hid.Vibration;
|
||||||
|
using Ryujinx.Horizon.Sdk.OsTypes;
|
||||||
using Ryujinx.Horizon.Sdk.Sf;
|
using Ryujinx.Horizon.Sdk.Sf;
|
||||||
using Ryujinx.Horizon.Sdk.Sf.Hipc;
|
using Ryujinx.Horizon.Sdk.Sf.Hipc;
|
||||||
using System;
|
using System;
|
||||||
|
@ -23,6 +24,9 @@ namespace Ryujinx.Horizon.Hid
|
||||||
public KeyboardDevice Keyboard;
|
public KeyboardDevice Keyboard;
|
||||||
public NpadDevices Npads;
|
public NpadDevices Npads;
|
||||||
|
|
||||||
|
private SystemEventType _xpadIdEvent;
|
||||||
|
private SystemEventType _palmaOperationCompleteEvent;
|
||||||
|
|
||||||
private bool _sixAxisSensorFusionEnabled;
|
private bool _sixAxisSensorFusionEnabled;
|
||||||
private bool _unintendedHomeButtonInputProtectionEnabled;
|
private bool _unintendedHomeButtonInputProtectionEnabled;
|
||||||
private bool _npadAnalogStickCenterClampEnabled;
|
private bool _npadAnalogStickCenterClampEnabled;
|
||||||
|
@ -50,6 +54,11 @@ namespace Ryujinx.Horizon.Hid
|
||||||
Keyboard = new KeyboardDevice(false);
|
Keyboard = new KeyboardDevice(false);
|
||||||
Npads = new NpadDevices(true);
|
Npads = new NpadDevices(true);
|
||||||
|
|
||||||
|
Os.CreateSystemEvent(out _xpadIdEvent, EventClearMode.ManualClear, interProcess: true);
|
||||||
|
Os.SignalSystemEvent(ref _xpadIdEvent); // TODO: signal event at right place
|
||||||
|
|
||||||
|
Os.CreateSystemEvent(out _palmaOperationCompleteEvent, EventClearMode.ManualClear, interProcess: true);
|
||||||
|
|
||||||
_npadHandheldActivationMode = NpadHandheldActivationMode.Dual;
|
_npadHandheldActivationMode = NpadHandheldActivationMode.Dual;
|
||||||
_gyroscopeZeroDriftMode = GyroscopeZeroDriftMode.Standard;
|
_gyroscopeZeroDriftMode = GyroscopeZeroDriftMode.Standard;
|
||||||
|
|
||||||
|
@ -151,8 +160,10 @@ namespace Ryujinx.Horizon.Hid
|
||||||
}
|
}
|
||||||
|
|
||||||
[CmifCommand(40)]
|
[CmifCommand(40)]
|
||||||
public Result AcquireXpadIdEventHandle([CopyHandle] out int arg0, ulong xpadId)
|
public Result AcquireXpadIdEventHandle([CopyHandle] out int handle, ulong xpadId)
|
||||||
{
|
{
|
||||||
|
handle = Os.GetReadableHandleOfSystemEvent(ref _xpadIdEvent);
|
||||||
|
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { xpadId });
|
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { xpadId });
|
||||||
|
|
||||||
return Result.Success;
|
return Result.Success;
|
||||||
|
@ -161,6 +172,8 @@ namespace Ryujinx.Horizon.Hid
|
||||||
[CmifCommand(41)]
|
[CmifCommand(41)]
|
||||||
public Result ReleaseXpadIdEventHandle(ulong xpadId)
|
public Result ReleaseXpadIdEventHandle(ulong xpadId)
|
||||||
{
|
{
|
||||||
|
Os.DetachReadableHandleOfSystemEvent(ref _xpadIdEvent);
|
||||||
|
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { xpadId });
|
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { xpadId });
|
||||||
|
|
||||||
return Result.Success;
|
return Result.Success;
|
||||||
|
@ -1092,18 +1105,10 @@ namespace Ryujinx.Horizon.Hid
|
||||||
return Result.Success;
|
return Result.Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
[CmifCommand(407)]
|
|
||||||
public Result GetNpadOfHighestBatteryLevel(out uint npadId, [Buffer(HipcBufferFlags.In | HipcBufferFlags.Pointer)] ReadOnlySpan<uint> arg1, AppletResourceUserId appletResourceUserId, [ClientProcessId] ulong pid)
|
|
||||||
{
|
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid);
|
|
||||||
|
|
||||||
return Result.Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CmifCommand(500)]
|
[CmifCommand(500)]
|
||||||
public Result GetPalmaConnectionHandle(out PalmaConnectionHandle palmaConnectionHandle, uint arg1, AppletResourceUserId appletResourceUserId, [ClientProcessId] ulong pid)
|
public Result GetPalmaConnectionHandle(out PalmaConnectionHandle palmaConnectionHandle, uint unknown, AppletResourceUserId appletResourceUserId, [ClientProcessId] ulong pid)
|
||||||
{
|
{
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid);
|
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, unknown, palmaConnectionHandle });
|
||||||
|
|
||||||
return Result.Success;
|
return Result.Success;
|
||||||
}
|
}
|
||||||
|
@ -1111,39 +1116,49 @@ namespace Ryujinx.Horizon.Hid
|
||||||
[CmifCommand(501)]
|
[CmifCommand(501)]
|
||||||
public Result InitializePalma(PalmaConnectionHandle palmaConnectionHandle)
|
public Result InitializePalma(PalmaConnectionHandle palmaConnectionHandle)
|
||||||
{
|
{
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid);
|
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle });
|
||||||
|
|
||||||
|
Os.SignalSystemEvent(ref _palmaOperationCompleteEvent);
|
||||||
|
|
||||||
return Result.Success;
|
return Result.Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
[CmifCommand(502)]
|
[CmifCommand(502)]
|
||||||
public Result AcquirePalmaOperationCompleteEvent([CopyHandle] out int arg0, PalmaConnectionHandle palmaConnectionHandle)
|
public Result AcquirePalmaOperationCompleteEvent([CopyHandle] out int handle, PalmaConnectionHandle palmaConnectionHandle)
|
||||||
{
|
{
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid);
|
handle = Os.GetReadableHandleOfSystemEvent(ref _palmaOperationCompleteEvent);
|
||||||
|
|
||||||
|
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle });
|
||||||
|
|
||||||
return Result.Success;
|
return Result.Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
[CmifCommand(503)]
|
[CmifCommand(503)]
|
||||||
public Result GetPalmaOperationInfo(out ulong arg0, [Buffer(HipcBufferFlags.Out | HipcBufferFlags.MapAlias)] Span<byte> arg1, PalmaConnectionHandle palmaConnectionHandle)
|
public Result GetPalmaOperationInfo(out ulong unknown, [Buffer(HipcBufferFlags.Out | HipcBufferFlags.MapAlias)] Span<byte> arg1, PalmaConnectionHandle palmaConnectionHandle)
|
||||||
{
|
{
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid);
|
unknown = 0; // Counter?
|
||||||
|
|
||||||
|
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle, unknown });
|
||||||
|
|
||||||
return Result.Success;
|
return Result.Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
[CmifCommand(504)]
|
[CmifCommand(504)]
|
||||||
public Result PlayPalmaActivity(PalmaConnectionHandle palmaConnectionHandle, ulong arg1)
|
public Result PlayPalmaActivity(PalmaConnectionHandle palmaConnectionHandle, ulong unknown)
|
||||||
{
|
{
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid);
|
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle, unknown });
|
||||||
|
|
||||||
|
Os.SignalSystemEvent(ref _palmaOperationCompleteEvent);
|
||||||
|
|
||||||
return Result.Success;
|
return Result.Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
[CmifCommand(505)]
|
[CmifCommand(505)]
|
||||||
public Result SetPalmaFrModeType(PalmaConnectionHandle palmaConnectionHandle, ulong arg1)
|
public Result SetPalmaFrModeType(PalmaConnectionHandle palmaConnectionHandle, ulong frModeType)
|
||||||
{
|
{
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid);
|
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle, frModeType });
|
||||||
|
|
||||||
|
Os.SignalSystemEvent(ref _palmaOperationCompleteEvent);
|
||||||
|
|
||||||
return Result.Success;
|
return Result.Success;
|
||||||
}
|
}
|
||||||
|
@ -1151,15 +1166,17 @@ namespace Ryujinx.Horizon.Hid
|
||||||
[CmifCommand(506)]
|
[CmifCommand(506)]
|
||||||
public Result ReadPalmaStep(PalmaConnectionHandle palmaConnectionHandle)
|
public Result ReadPalmaStep(PalmaConnectionHandle palmaConnectionHandle)
|
||||||
{
|
{
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid);
|
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle });
|
||||||
|
|
||||||
return Result.Success;
|
return Result.Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
[CmifCommand(507)]
|
[CmifCommand(507)]
|
||||||
public Result EnablePalmaStep(PalmaConnectionHandle palmaConnectionHandle, bool arg1)
|
public Result EnablePalmaStep(PalmaConnectionHandle palmaConnectionHandle, bool enabledPalmaStep)
|
||||||
{
|
{
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid);
|
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle, enabledPalmaStep });
|
||||||
|
|
||||||
|
Os.SignalSystemEvent(ref _palmaOperationCompleteEvent);
|
||||||
|
|
||||||
return Result.Success;
|
return Result.Success;
|
||||||
}
|
}
|
||||||
|
@ -1167,23 +1184,28 @@ namespace Ryujinx.Horizon.Hid
|
||||||
[CmifCommand(508)]
|
[CmifCommand(508)]
|
||||||
public Result ResetPalmaStep(PalmaConnectionHandle palmaConnectionHandle)
|
public Result ResetPalmaStep(PalmaConnectionHandle palmaConnectionHandle)
|
||||||
{
|
{
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid);
|
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle });
|
||||||
|
|
||||||
|
Os.SignalSystemEvent(ref _palmaOperationCompleteEvent);
|
||||||
|
|
||||||
return Result.Success;
|
return Result.Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
[CmifCommand(509)]
|
[CmifCommand(509)]
|
||||||
public Result ReadPalmaApplicationSection(PalmaConnectionHandle palmaConnectionHandle, ulong arg1, ulong arg2)
|
public Result ReadPalmaApplicationSection(PalmaConnectionHandle palmaConnectionHandle, ulong unknown0, ulong unknown1)
|
||||||
{
|
{
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid);
|
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle, unknown0, unknown1 });
|
||||||
|
|
||||||
return Result.Success;
|
return Result.Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
[CmifCommand(510)]
|
[CmifCommand(510)]
|
||||||
public Result WritePalmaApplicationSection(PalmaConnectionHandle palmaConnectionHandle, ulong arg1, ulong arg2, [Buffer(HipcBufferFlags.In | HipcBufferFlags.Pointer, 0x100)] in PalmaApplicationSectionAccessBuffer palmaApplicationSectionAccessBuffer)
|
public Result WritePalmaApplicationSection(PalmaConnectionHandle palmaConnectionHandle, ulong unknown0, ulong unknown1, [Buffer(HipcBufferFlags.In | HipcBufferFlags.Pointer, 0x100)] in PalmaApplicationSectionAccessBuffer palmaApplicationSectionAccessBuffer)
|
||||||
{
|
{
|
||||||
Logger.Stub?.PrintStub(LogClass.ServiceHid);
|
// nn::hid::PalmaApplicationSectionAccessBuffer cast is unknown
|
||||||
|
Logger.Stub?.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle, unknown0, unknown1 });
|
||||||
|
|
||||||
|
Os.SignalSystemEvent(ref _palmaOperationCompleteEvent);
|
||||||
|
|
||||||
return Result.Success;
|
return Result.Success;
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace Ryujinx.Horizon.Sdk.Hid
|
||||||
Result ActivateMouse(AppletResourceUserId appletResourceUserId, ulong pid);
|
Result ActivateMouse(AppletResourceUserId appletResourceUserId, ulong pid);
|
||||||
Result ActivateKeyboard(AppletResourceUserId appletResourceUserId, ulong pid);
|
Result ActivateKeyboard(AppletResourceUserId appletResourceUserId, ulong pid);
|
||||||
Result SendKeyboardLockKeyEvent(AppletResourceUserId appletResourceUserId, KeyboardLockKeyEvent keyboardLockKeyEvent, ulong pid);
|
Result SendKeyboardLockKeyEvent(AppletResourceUserId appletResourceUserId, KeyboardLockKeyEvent keyboardLockKeyEvent, ulong pid);
|
||||||
Result AcquireXpadIdEventHandle(out int arg0, ulong xpadId);
|
Result AcquireXpadIdEventHandle(out int handle, ulong xpadId);
|
||||||
Result ReleaseXpadIdEventHandle(ulong xpadId);
|
Result ReleaseXpadIdEventHandle(ulong xpadId);
|
||||||
Result ActivateXpad(AppletResourceUserId appletResourceUserId, uint basicXpadId, ulong pid);
|
Result ActivateXpad(AppletResourceUserId appletResourceUserId, uint basicXpadId, ulong pid);
|
||||||
Result GetXpadIds(out long idCount, Span<uint> basicXpadIds);
|
Result GetXpadIds(out long idCount, Span<uint> basicXpadIds);
|
||||||
|
@ -111,18 +111,17 @@ namespace Ryujinx.Horizon.Sdk.Hid
|
||||||
Result HasLeftRightBattery(out bool hasLeftBattery, out bool hasRightBattery, uint npadId);
|
Result HasLeftRightBattery(out bool hasLeftBattery, out bool hasRightBattery, uint npadId);
|
||||||
Result GetNpadInterfaceType(out byte npadInterfaceType, uint npadId);
|
Result GetNpadInterfaceType(out byte npadInterfaceType, uint npadId);
|
||||||
Result GetNpadLeftRightInterfaceType(out byte leftInterfaceType, out byte rightInterfaceType, uint npadId);
|
Result GetNpadLeftRightInterfaceType(out byte leftInterfaceType, out byte rightInterfaceType, uint npadId);
|
||||||
Result GetNpadOfHighestBatteryLevel(out uint npadId, ReadOnlySpan<uint> arg1, AppletResourceUserId appletResourceUserId, ulong pid);
|
Result GetPalmaConnectionHandle(out PalmaConnectionHandle palmaConnectionHandle, uint unknown, AppletResourceUserId appletResourceUserId, ulong pid);
|
||||||
Result GetPalmaConnectionHandle(out PalmaConnectionHandle palmaConnectionHandle, uint arg1, AppletResourceUserId appletResourceUserId, ulong pid);
|
|
||||||
Result InitializePalma(PalmaConnectionHandle palmaConnectionHandle);
|
Result InitializePalma(PalmaConnectionHandle palmaConnectionHandle);
|
||||||
Result AcquirePalmaOperationCompleteEvent(out int arg0, PalmaConnectionHandle palmaConnectionHandle);
|
Result AcquirePalmaOperationCompleteEvent(out int handle, PalmaConnectionHandle palmaConnectionHandle);
|
||||||
Result GetPalmaOperationInfo(out ulong arg0, Span<byte> arg1, PalmaConnectionHandle palmaConnectionHandle);
|
Result GetPalmaOperationInfo(out ulong unknown, Span<byte> arg1, PalmaConnectionHandle palmaConnectionHandle);
|
||||||
Result PlayPalmaActivity(PalmaConnectionHandle palmaConnectionHandle, ulong arg1);
|
Result PlayPalmaActivity(PalmaConnectionHandle palmaConnectionHandle, ulong unknown);
|
||||||
Result SetPalmaFrModeType(PalmaConnectionHandle palmaConnectionHandle, ulong arg1);
|
Result SetPalmaFrModeType(PalmaConnectionHandle palmaConnectionHandle, ulong frModeType);
|
||||||
Result ReadPalmaStep(PalmaConnectionHandle palmaConnectionHandle);
|
Result ReadPalmaStep(PalmaConnectionHandle palmaConnectionHandle);
|
||||||
Result EnablePalmaStep(PalmaConnectionHandle palmaConnectionHandle, bool arg1);
|
Result EnablePalmaStep(PalmaConnectionHandle palmaConnectionHandle, bool enabledPalmaStep);
|
||||||
Result ResetPalmaStep(PalmaConnectionHandle palmaConnectionHandle);
|
Result ResetPalmaStep(PalmaConnectionHandle palmaConnectionHandle);
|
||||||
Result ReadPalmaApplicationSection(PalmaConnectionHandle palmaConnectionHandle, ulong arg1, ulong arg2);
|
Result ReadPalmaApplicationSection(PalmaConnectionHandle palmaConnectionHandle, ulong unknown0, ulong unknown1);
|
||||||
Result WritePalmaApplicationSection(PalmaConnectionHandle palmaConnectionHandle, ulong arg1, ulong arg2, in PalmaApplicationSectionAccessBuffer palmaApplicationSectionAccessBuffer);
|
Result WritePalmaApplicationSection(PalmaConnectionHandle palmaConnectionHandle, ulong unknown0, ulong unknown1, in PalmaApplicationSectionAccessBuffer palmaApplicationSectionAccessBuffer);
|
||||||
Result ReadPalmaUniqueCode(PalmaConnectionHandle palmaConnectionHandle);
|
Result ReadPalmaUniqueCode(PalmaConnectionHandle palmaConnectionHandle);
|
||||||
Result SetPalmaUniqueCodeInvalid(PalmaConnectionHandle palmaConnectionHandle);
|
Result SetPalmaUniqueCodeInvalid(PalmaConnectionHandle palmaConnectionHandle);
|
||||||
Result WritePalmaActivityEntry(PalmaConnectionHandle palmaConnectionHandle, ulong arg1, ulong arg2, ulong arg3, ulong arg4);
|
Result WritePalmaActivityEntry(PalmaConnectionHandle palmaConnectionHandle, ulong arg1, ulong arg2, ulong arg3, ulong arg4);
|
||||||
|
|
Loading…
Reference in a new issue