nfp:user: Implement IUser (#714)

* nfp:user: Implement IUser

- Based on RE of sysmod FW 1.0 and 3.0 with help of https://github.com/switchbrew/libnx/ and https://reswitched.github.io/SwIPC/ifaces.html#nn::nfp::detail::IUser
- Accurate implementation of Initialize, AttachActivateEvent, AttachDeactivateEvent, GetState, GetDeviceState, GetNpadId and GetDeviceState.
- Implementation of Finalize and ListDevices (close #638).

* reorder private var

* fix nits
This commit is contained in:
Ac_K 2019-06-28 13:08:23 +02:00 committed by jduncanator
parent a8965aad97
commit ba86a5d7f3
10 changed files with 410 additions and 136 deletions

View file

@ -23,5 +23,24 @@ namespace Ryujinx.HLE.HOS.Services.Hid
default: throw new ArgumentOutOfRangeException(nameof(npadIdType));
}
}
public static NpadIdType GetNpadIdTypeFromIndex(HidControllerId index)
{
switch (index)
{
case HidControllerId.ControllerPlayer1: return NpadIdType.Player1;
case HidControllerId.ControllerPlayer2: return NpadIdType.Player2;
case HidControllerId.ControllerPlayer3: return NpadIdType.Player3;
case HidControllerId.ControllerPlayer4: return NpadIdType.Player4;
case HidControllerId.ControllerPlayer5: return NpadIdType.Player5;
case HidControllerId.ControllerPlayer6: return NpadIdType.Player6;
case HidControllerId.ControllerPlayer7: return NpadIdType.Player7;
case HidControllerId.ControllerPlayer8: return NpadIdType.Player8;
case HidControllerId.ControllerHandheld: return NpadIdType.Handheld;
case HidControllerId.ControllerUnknown: return NpadIdType.Unknown;
default: throw new ArgumentOutOfRangeException(nameof(index));
}
}
}
}