mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Added Heatmap backlight mode
This commit is contained in:
@@ -1,9 +1,28 @@
|
|||||||
using HidLibrary;
|
using HidLibrary;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace GHelper
|
namespace GHelper
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public class ColorUtilities
|
||||||
|
{
|
||||||
|
// Method to get the weighted average between two colors
|
||||||
|
public static Color GetWeightedAverage(Color color1, Color color2, double weight)
|
||||||
|
{
|
||||||
|
|
||||||
|
int red = (int)Math.Round(color1.R * (1 - weight) + color2.R * weight);
|
||||||
|
int green = (int)Math.Round(color1.G * (1 - weight) + color2.G * weight);
|
||||||
|
int blue = (int)Math.Round(color1.B * (1 - weight) + color2.B * weight);
|
||||||
|
|
||||||
|
red = Math.Min(255, Math.Max(0, red));
|
||||||
|
green = Math.Min(255, Math.Max(0, green));
|
||||||
|
blue = Math.Min(255, Math.Max(0, blue));
|
||||||
|
|
||||||
|
return Color.FromArgb(red, green, blue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[Flags]
|
[Flags]
|
||||||
public enum AuraDev19b6 : uint
|
public enum AuraDev19b6 : uint
|
||||||
{
|
{
|
||||||
@@ -50,6 +69,7 @@ namespace GHelper
|
|||||||
|
|
||||||
public static class AsusUSB
|
public static class AsusUSB
|
||||||
{
|
{
|
||||||
|
public const int HEATMAP = 20;
|
||||||
|
|
||||||
public const int ASUS_ID = 0x0b05;
|
public const int ASUS_ID = 0x0b05;
|
||||||
|
|
||||||
@@ -73,6 +93,30 @@ namespace GHelper
|
|||||||
public static Color Color2 = Color.Black;
|
public static Color Color2 = Color.Black;
|
||||||
|
|
||||||
|
|
||||||
|
static System.Timers.Timer timer = new System.Timers.Timer(1000);
|
||||||
|
static HidDevice? auraDevice = null;
|
||||||
|
|
||||||
|
static AsusUSB()
|
||||||
|
{
|
||||||
|
timer.Elapsed += Timer_Elapsed;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Timer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
|
||||||
|
{
|
||||||
|
int cpuTemp = Program.acpi.DeviceGet(AsusACPI.Temp_CPU);
|
||||||
|
int freeze = 20, cold = 45, warm = 65, hot = 90;
|
||||||
|
Color color;
|
||||||
|
|
||||||
|
//Debug.WriteLine(cpuTemp);
|
||||||
|
|
||||||
|
if (cpuTemp < cold) color = color = ColorUtilities.GetWeightedAverage(Color.Blue, Color.Green, ((double)cpuTemp - freeze) / (cold - freeze));
|
||||||
|
else if (cpuTemp < warm) color = ColorUtilities.GetWeightedAverage(Color.Green, Color.Yellow, ((double)cpuTemp - cold) / (warm - cold));
|
||||||
|
else if (cpuTemp < hot) color = ColorUtilities.GetWeightedAverage(Color.Yellow, Color.Red, ((double)cpuTemp - warm) / (hot - warm));
|
||||||
|
else color = Color.Red;
|
||||||
|
|
||||||
|
ApplyColor(color);
|
||||||
|
}
|
||||||
|
|
||||||
public static Dictionary<int, string> GetSpeeds()
|
public static Dictionary<int, string> GetSpeeds()
|
||||||
{
|
{
|
||||||
return new Dictionary<int, string>
|
return new Dictionary<int, string>
|
||||||
@@ -91,6 +135,7 @@ namespace GHelper
|
|||||||
{ 2, Properties.Strings.AuraColorCycle },
|
{ 2, Properties.Strings.AuraColorCycle },
|
||||||
{ 3, Properties.Strings.AuraRainbow },
|
{ 3, Properties.Strings.AuraRainbow },
|
||||||
{ 10, Properties.Strings.AuraStrobe },
|
{ 10, Properties.Strings.AuraStrobe },
|
||||||
|
{ HEATMAP, "Heatmap"}
|
||||||
};
|
};
|
||||||
|
|
||||||
static Dictionary<int, string> _modesStrix = new Dictionary<int, string>
|
static Dictionary<int, string> _modesStrix = new Dictionary<int, string>
|
||||||
@@ -107,6 +152,7 @@ namespace GHelper
|
|||||||
{ 10, Properties.Strings.AuraStrobe},
|
{ 10, Properties.Strings.AuraStrobe},
|
||||||
{ 11, "Comet" },
|
{ 11, "Comet" },
|
||||||
{ 12, "Flash" },
|
{ 12, "Flash" },
|
||||||
|
{ HEATMAP, "Heatmap"}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -183,6 +229,7 @@ namespace GHelper
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private static IEnumerable<HidDevice> GetHidDevices(int[] deviceIds, int minFeatures = 1)
|
private static IEnumerable<HidDevice> GetHidDevices(int[] deviceIds, int minFeatures = 1)
|
||||||
{
|
{
|
||||||
HidDevice[] HidDeviceList = HidDevices.Enumerate(ASUS_ID, deviceIds).ToArray();
|
HidDevice[] HidDeviceList = HidDevices.Enumerate(ASUS_ID, deviceIds).ToArray();
|
||||||
@@ -372,6 +419,37 @@ namespace GHelper
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void GetAuraDevice()
|
||||||
|
{
|
||||||
|
var devices = GetHidDevices(deviceIds);
|
||||||
|
foreach (HidDevice device in devices)
|
||||||
|
{
|
||||||
|
device.OpenDevice();
|
||||||
|
if (device.ReadFeatureData(out byte[] data, AURA_HID_ID))
|
||||||
|
{
|
||||||
|
auraDevice = device;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
device.CloseDevice();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ApplyColor(Color color)
|
||||||
|
{
|
||||||
|
Task.Run(async () =>
|
||||||
|
{
|
||||||
|
if (auraDevice is null || !auraDevice.IsConnected) GetAuraDevice();
|
||||||
|
if (auraDevice is null || !auraDevice.IsConnected) return;
|
||||||
|
auraDevice.WriteFeatureData(AuraMessage(0, color, color, 0xf5));
|
||||||
|
auraDevice.WriteFeatureData(MESSAGE_SET);
|
||||||
|
//auraDevice.WriteFeatureData(MESSAGE_APPLY);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void ApplyAura()
|
public static void ApplyAura()
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -380,6 +458,16 @@ namespace GHelper
|
|||||||
SetColor(AppConfig.Get("aura_color"));
|
SetColor(AppConfig.Get("aura_color"));
|
||||||
SetColor2(AppConfig.Get("aura_color2"));
|
SetColor2(AppConfig.Get("aura_color2"));
|
||||||
|
|
||||||
|
if (Mode == HEATMAP)
|
||||||
|
{
|
||||||
|
timer.Enabled = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
timer.Enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
Task.Run(async () =>
|
Task.Run(async () =>
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user