From 165f5e48296b066b101e4980ef6cdb7be5603016 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Tue, 26 Dec 2023 12:43:23 +0100 Subject: [PATCH] Ambient mode fix for GA503 https://github.com/seerge/g-helper/issues/1790 --- app/USB/AsusHid.cs | 20 ++++++++++++++++---- app/USB/Aura.cs | 8 +++++++- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/app/USB/AsusHid.cs b/app/USB/AsusHid.cs index 62838bd5..fcd89da4 100644 --- a/app/USB/AsusHid.cs +++ b/app/USB/AsusHid.cs @@ -13,6 +13,7 @@ public static class AsusHid static int[] deviceIds = { 0x1a30, 0x1854, 0x1869, 0x1866, 0x19b6, 0x1822, 0x1837, 0x1854, 0x184a, 0x183d, 0x8502, 0x1807, 0x17e0, 0x18c6, 0x1abe }; static HidStream? auraStream; + static int featureLength; public static IEnumerable? FindDevices(byte reportId) { @@ -94,7 +95,10 @@ public static class AsusHid foreach (var data in dataList) try { - stream.Write(data); + var payload = new byte[device.GetMaxFeatureReportLength()]; + Array.Copy(data, payload, data.Length); + stream.SetFeature(payload); + //stream.Write(data); Logger.WriteLine($"{log} {device.ProductID.ToString("X")}: {BitConverter.ToString(data)}"); } catch (Exception ex) @@ -107,12 +111,20 @@ public static class AsusHid public static void WriteAura(byte[] data) { - if (auraStream == null) auraStream = FindHidStream(AURA_ID); - if (auraStream == null) return; + if (auraStream == null) + { + auraStream = FindHidStream(AURA_ID); + if (auraStream == null) return; + + featureLength = auraStream.Device.GetMaxFeatureReportLength(); + } try { - auraStream.Write(data); + var payload = new byte[featureLength]; + Array.Copy(data, payload, data.Length); + auraStream.SetFeature(payload); + //auraStream.Write(data); } catch (Exception ex) { diff --git a/app/USB/Aura.cs b/app/USB/Aura.cs index 7c2d1509..296a13dd 100644 --- a/app/USB/Aura.cs +++ b/app/USB/Aura.cs @@ -254,7 +254,7 @@ namespace GHelper.USB new byte[] { AsusHid.AURA_ID, 0x05, 0x20, 0x31, 0, 0x1a }, //Encoding.ASCII.GetBytes("^ASUS Tech.Inc."), //new byte[] { 0x5e, 0x05, 0x20, 0x31, 0, 0x1a } - }); + }, "Init"); } @@ -535,6 +535,12 @@ namespace GHelper.USB return; } + if (AppConfig.ContainsModel("GA503")) + { + AsusHid.Write(new List { AuraMessage(AuraMode.AuraStatic, color, color, 0xeb, isSingleColor), MESSAGE_SET }); + return; + } + if (init) { Init();