aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx/Motion/Protocol/ControllerData.cs
diff options
context:
space:
mode:
authoremmauss <emmausssss@gmail.com>2020-09-29 21:32:42 +0000
committerGitHub <noreply@github.com>2020-09-29 23:32:42 +0200
commit26319d5ab3a4d2f93fc7acb70760d9f96575ee07 (patch)
tree797d5d828785813d141949decacd6d55f0d4dc0e /Ryujinx/Motion/Protocol/ControllerData.cs
parenta6f8a0b01ed3c36d537825de4c27acdec4e7d638 (diff)
Add Motion controls (#1363)
* Add motion controls Apply suggestions from code review Co-authored-by: Ac_K <Acoustik666@gmail.com> * cleanup * add reference orientation and derive relative orientation from it * cleanup * remove unused variable and strange file * Review_2. * change GetInput to TryGetInput * Review_3. Co-authored-by: Ac_K <Acoustik666@gmail.com> Co-authored-by: LDj3SNuD <dvitiello@gmail.com>
Diffstat (limited to 'Ryujinx/Motion/Protocol/ControllerData.cs')
-rw-r--r--Ryujinx/Motion/Protocol/ControllerData.cs50
1 files changed, 50 insertions, 0 deletions
diff --git a/Ryujinx/Motion/Protocol/ControllerData.cs b/Ryujinx/Motion/Protocol/ControllerData.cs
new file mode 100644
index 00000000..4b4919a1
--- /dev/null
+++ b/Ryujinx/Motion/Protocol/ControllerData.cs
@@ -0,0 +1,50 @@
+using System.Runtime.InteropServices;
+
+namespace Ryujinx.Motion
+{
+ [StructLayout(LayoutKind.Sequential, Pack = 1)]
+ struct ControllerDataRequest
+ {
+ public MessageType Type;
+ public SubscriberType SubscriberType;
+ public byte Slot;
+
+ [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
+ public byte[] MacAddress;
+ }
+
+ [StructLayout(LayoutKind.Sequential, Pack = 1)]
+ public struct ControllerDataResponse
+ {
+ public SharedResponse Shared;
+ public byte Connected;
+ public uint PacketID;
+ public byte ExtraButtons;
+ public byte MainButtons;
+ public ushort PSExtraInput;
+ public ushort LeftStickXY;
+ public ushort RightStickXY;
+ public uint DPadAnalog;
+ public ulong MainButtonsAnalog;
+
+ [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
+ public byte[] Touch1;
+
+ [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
+ public byte[] Touch2;
+ public ulong MotionTimestamp;
+ public float AccelerometerX;
+ public float AccelerometerY;
+ public float AccelerometerZ;
+ public float GyroscopePitch;
+ public float GyroscopeYaw;
+ public float GyroscopeRoll;
+ }
+
+ enum SubscriberType : byte
+ {
+ All = 0,
+ Slot,
+ Mac
+ }
+}