From ab44dbf2b4ad5ad2bd8b903b992109d9a666bb26 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sun, 11 Feb 2024 21:39:43 +0100 Subject: [PATCH] More slash modes --- app/AnimeMatrix/AniMatrixControl.cs | 10 +++- app/AnimeMatrix/SlashDevice.cs | 82 +++++++++++++++++++++++++++-- app/AppConfig.cs | 2 +- app/Settings.cs | 9 ++-- app/USB/Aura.cs | 4 +- 5 files changed, 95 insertions(+), 12 deletions(-) diff --git a/app/AnimeMatrix/AniMatrixControl.cs b/app/AnimeMatrix/AniMatrixControl.cs index 9d6c04f6b..d792d7a79 100644 --- a/app/AnimeMatrix/AniMatrixControl.cs +++ b/app/AnimeMatrix/AniMatrixControl.cs @@ -36,7 +36,7 @@ public AniMatrixControl(SettingsForm settingsForm) try { - if (AppConfig.ContainsModel("GA403")) + if (AppConfig.ContainsModel("GA403") || AppConfig.ContainsModel("GU605")) deviceSlash = new SlashDevice(); else deviceMatrix = new AnimeMatrixDevice(); @@ -85,7 +85,7 @@ public void SetSlash(bool wakeUp = false) if (brightness == 0 || (auto && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online)) { deviceSlash.Init(); - deviceSlash.SetOptions(false); + deviceSlash.SetOptions(false, 0, 0); } else { @@ -97,6 +97,12 @@ public void SetSlash(bool wakeUp = false) }); } + public void SetBatteryAuto() + { + if (deviceSlash is not null) deviceSlash.SetBatterySaver(AppConfig.Is("matrix_auto")); + if (deviceMatrix is not null) SetMatrix(); + } + public void SetMatrix(bool wakeUp = false) { diff --git a/app/AnimeMatrix/SlashDevice.cs b/app/AnimeMatrix/SlashDevice.cs index 6ebbd1949..bd00b36f9 100644 --- a/app/AnimeMatrix/SlashDevice.cs +++ b/app/AnimeMatrix/SlashDevice.cs @@ -1,12 +1,26 @@ using GHelper.AnimeMatrix.Communication; +using GHelper.Mode; using System.Text; namespace GHelper.AnimeMatrix { public enum SlashMode { + Bounce, + Slash, + Loading, + BitStream, Transmission, - Bitstream + Flow, + Flux, + Phantom, + Spectrum, + Hazard, + Interfacing, + Ramp, + GameOver, + Start, + Buzzer } internal class SlashPacket : Packet @@ -18,6 +32,53 @@ public SlashPacket(byte[] command) : base(0x5E, 128, command) public class SlashDevice : Device { + + public static Dictionary Modes = new Dictionary + { + { SlashMode.Bounce, "Bounce"}, + { SlashMode.Slash, "Slash"}, + { SlashMode.Loading, "Loading"}, + + { SlashMode.BitStream, "Bit Stream"}, + { SlashMode.Transmission, "Transmission"}, + + { SlashMode.Flow, "Flow"}, + { SlashMode.Flux, "Flux"}, + { SlashMode.Phantom, "Phantom"}, + { SlashMode.Spectrum, "Spectrum"}, + + { SlashMode.Hazard, "Hazard"}, + { SlashMode.Interfacing, "Interfacing"}, + { SlashMode.Ramp, "Ramp"}, + + { SlashMode.GameOver, "Game Over"}, + { SlashMode.Start, "Start"}, + { SlashMode.Buzzer, "Buzzer"}, + }; + + private static Dictionary modeCodes = new Dictionary + { + { SlashMode.Bounce, 0x10}, + { SlashMode.Slash, 0x12}, + { SlashMode.Loading, 0x13}, + + { SlashMode.BitStream, 0x1D}, + { SlashMode.Transmission, 0x1A}, + + { SlashMode.Flow, 0x19}, + { SlashMode.Flux, 0x25}, + { SlashMode.Phantom, 0x24}, + { SlashMode.Spectrum, 0x26}, + + { SlashMode.Hazard, 0x32}, + { SlashMode.Interfacing, 0x33}, + { SlashMode.Ramp, 0x34}, + + { SlashMode.GameOver, 0x42}, + { SlashMode.Start, 0x43}, + { SlashMode.Buzzer, 0x44}, + }; + public SlashDevice() : base(0x0B05, 0x193B, 128) { } @@ -40,15 +101,30 @@ public void Save() public void SetMode(SlashMode mode) { + byte modeByte; + + try + { + modeByte = modeCodes[mode]; + } catch (Exception) + { + modeByte = 0x00; + } + Set(Packet(0xD2, 0x03, 0x00, 0x0C)); - Set(Packet(0xD3, 0x04, 0x00, 0x0C, 0x01, (mode == SlashMode.Bitstream) ? (byte)0x1D : (byte)0x1A, 0x02, 0x19, 0x03, 0x13, 0x04, 0x11, 0x05, 0x12, 0x06, 0x13)); + Set(Packet(0xD3, 0x04, 0x00, 0x0C, 0x01, modeByte, 0x02, 0x19, 0x03, 0x13, 0x04, 0x11, 0x05, 0x12, 0x06, 0x13)); } public void SetOptions(bool status, int brightness = 0, int interval = 0) { byte brightnessByte = (byte)(brightness * 85.333); + Set(Packet(0xD3, 0x03, 0x01, 0x08, 0xAB, 0xFF, 0x01, status ? (byte)0x01 : (byte)0x00, 0x06, brightnessByte, 0xFF, (byte)interval)); - Save(); + } + + public void SetBatterySaver(bool status) + { + Set(Packet(0xD8, 0x01, 0x00, 0x01, status ? (byte)0x80 : (byte)0x00)); } public void Set(Packet packet) diff --git a/app/AppConfig.cs b/app/AppConfig.cs index dc9e1b433..ba64a23f7 100644 --- a/app/AppConfig.cs +++ b/app/AppConfig.cs @@ -101,7 +101,7 @@ public static string GetModel() } } - //if (_model.Contains("GA402")) _model = "ROG Zephyrus G14 GA403UI"; // Debug Purposes + if (_model.Contains("GA402")) _model = "ROG Zephyrus G14 GA403UI"; // Debug Purposes return _model; } diff --git a/app/Settings.cs b/app/Settings.cs index bf1fdddcb..b5f122c1a 100644 --- a/app/Settings.cs +++ b/app/Settings.cs @@ -688,7 +688,7 @@ private void CheckStartup_CheckedChanged(object? sender, EventArgs e) private void CheckMatrix_CheckedChanged(object? sender, EventArgs e) { AppConfig.Set("matrix_auto", checkMatrix.Checked ? 1 : 0); - matrixControl.SetDevice(); + matrixControl.SetBatteryAuto(); } @@ -908,8 +908,11 @@ public void InitMatrix() { labelMatrix.Text = "Slash Lightning"; comboMatrixRunning.Items.Clear(); - comboMatrixRunning.Items.Add("Transmission"); - comboMatrixRunning.Items.Add("Bit Stream"); + + foreach (var item in SlashDevice.Modes) + { + comboMatrixRunning.Items.Add(item.Value); + } comboInterval.Visible = true; comboInterval.Items.Add($"Interval Off"); diff --git a/app/USB/Aura.cs b/app/USB/Aura.cs index ebc6e53f1..239d2143c 100644 --- a/app/USB/Aura.cs +++ b/app/USB/Aura.cs @@ -294,12 +294,10 @@ public static void ApplyBrightness(int brightness, string log = "Backlight", boo if (delay) await Task.Delay(TimeSpan.FromSeconds(1)); if (isACPI) Program.acpi.TUFKeyboardBrightness(brightness); - AsusHid.Write(new byte[] { AsusHid.AURA_ID, 0xBA, 0xC5, 0xC4, (byte)brightness }, log); + AsusHid.WriteInput(new byte[] { AsusHid.INPUT_ID, 0xBA, 0xC5, 0xC4, (byte)brightness }, log); if (AppConfig.IsAlly()) ApplyAura(); - if (AppConfig.IsInputBacklight()) - AsusHid.WriteInput(new byte[] { AsusHid.INPUT_ID, 0xBA, 0xC5, 0xC4, (byte)brightness }, log); });