| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- using Ryujinx.Common.Logging;
- using Ryujinx.HLE.HOS.Services.Hid.HidServer;
- using Ryujinx.HLE.HOS.Services.Hid.Types;
- namespace Ryujinx.HLE.HOS.Services.Hid
- {
- [Service("hid:sys")]
- class IHidSystemServer : IpcService
- {
- public IHidSystemServer(ServiceCtx context) { }
- [CommandHipc(303)]
- // ApplyNpadSystemCommonPolicy(u64)
- public ResultCode ApplyNpadSystemCommonPolicy(ServiceCtx context)
- {
- ulong commonPolicy = context.RequestData.ReadUInt64();
- Logger.Stub?.PrintStub(LogClass.ServiceHid, new { commonPolicy });
- return ResultCode.Success;
- }
- [CommandHipc(306)]
- // GetLastActiveNpad(u32) -> u8, u8
- public ResultCode GetLastActiveNpad(ServiceCtx context)
- {
- // TODO: RequestData seems to have garbage data, reading an extra uint seems to fix the issue.
- context.RequestData.ReadUInt32();
- ResultCode resultCode = GetAppletFooterUiTypeImpl(context, out AppletFooterUiType appletFooterUiType);
- context.ResponseData.Write((byte)appletFooterUiType);
- context.ResponseData.Write((byte)0);
- return resultCode;
- }
- [CommandHipc(307)]
- // GetNpadSystemExtStyle() -> u64
- public ResultCode GetNpadSystemExtStyle(ServiceCtx context)
- {
- foreach (PlayerIndex playerIndex in context.Device.Hid.Npads.GetSupportedPlayers())
- {
- if (HidUtils.GetNpadIdTypeFromIndex(playerIndex) > NpadIdType.Handheld)
- {
- return ResultCode.InvalidNpadIdType;
- }
- }
- context.ResponseData.Write((ulong)context.Device.Hid.Npads.SupportedStyleSets);
- return ResultCode.Success;
- }
- [CommandHipc(314)] // 9.0.0+
- // GetAppletFooterUiType(u32) -> u8
- public ResultCode GetAppletFooterUiType(ServiceCtx context)
- {
- ResultCode resultCode = GetAppletFooterUiTypeImpl(context, out AppletFooterUiType appletFooterUiType);
- context.ResponseData.Write((byte)appletFooterUiType);
- return resultCode;
- }
- private ResultCode GetAppletFooterUiTypeImpl(ServiceCtx context, out AppletFooterUiType appletFooterUiType)
- {
- NpadIdType npadIdType = (NpadIdType)context.RequestData.ReadUInt32();
- PlayerIndex playerIndex = HidUtils.GetIndexFromNpadIdType(npadIdType);
- appletFooterUiType = context.Device.Hid.SharedMemory.Npads[(int)playerIndex].InternalState.AppletFooterUiType;
- return ResultCode.Success;
- }
- }
- }
|