From 21ad10ce4e3b3c986351d342b1efc78d7d0269a5 Mon Sep 17 00:00:00 2001 From: IceStormNG Date: Tue, 16 Jan 2024 15:07:02 +0100 Subject: [PATCH] Fix for Gladius II Origin (#1936) * Support for Strix Carry (P508) * Fixes polling rate, angle snapping and debounce for Gladius II Origin. --- app/Peripherals/Mouse/Models/GladiusII.cs | 57 +++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/app/Peripherals/Mouse/Models/GladiusII.cs b/app/Peripherals/Mouse/Models/GladiusII.cs index 638d4a65..6f89201a 100644 --- a/app/Peripherals/Mouse/Models/GladiusII.cs +++ b/app/Peripherals/Mouse/Models/GladiusII.cs @@ -221,6 +221,63 @@ LightingSetting[i] = ls; } } + + + + protected override PollingRate ParsePollingRate(byte[] packet) + { + if (packet[1] == 0x12 && packet[2] == 0x04 && packet[3] == 0x00) + { + return (PollingRate)packet[9]; + } + + return PollingRate.PR125Hz; + } + + protected override byte[] GetUpdatePollingRatePacket(PollingRate pollingRate) + { + return new byte[] { reportId, 0x51, 0x31, 0x02, 0x00, (byte)pollingRate }; + } + + protected override bool ParseAngleSnapping(byte[] packet) + { + if (packet[1] == 0x12 && packet[2] == 0x04 && packet[3] == 0x00) + { + return packet[13] == 0x01; + } + + return false; + } + + protected override byte[] GetUpdateAngleSnappingPacket(bool angleSnapping) + { + return new byte[] { reportId, 0x51, 0x31, 0x04, 0x00, (byte)(angleSnapping ? 0x01 : 0x00) }; + } + + protected override DebounceTime ParseDebounce(byte[] packet) + { + if (packet[1] != 0x12 || packet[2] != 0x04 || packet[3] != 0x00) + { + return DebounceTime.MS12; + } + + if (packet[11] < 0x02) + { + return DebounceTime.MS12; + } + + if (packet[11] > 0x07) + { + return DebounceTime.MS32; + } + + return (DebounceTime)packet[11]; + } + + protected override byte[] GetUpdateDebouncePacket(DebounceTime debounce) + { + return new byte[] { reportId, 0x51, 0x31, 0x03, 0x00, ((byte)debounce) }; + } } //P502