diff --git a/app/ASUSWmi.cs b/app/ASUSWmi.cs index 4a118df0..a7dd9bc5 100644 --- a/app/ASUSWmi.cs +++ b/app/ASUSWmi.cs @@ -31,6 +31,10 @@ public class ASUSWmi public const uint DevsGPUFanCurve = 0x00110025; public const uint DevsMidFanCurve = 0x00110032; + public const int Temp_CPU = 0x00120094; + public const int Temp_GPU = 0x00120097; + + public const int PPT_TotalA0 = 0x001200A0; // Total PPT on 2022 and CPU PPT on 2021 public const int PPT_EDCA1 = 0x001200A1; // CPU EDC public const int PPT_TDCA2 = 0x001200A2; // CPU TDC diff --git a/app/Aura.cs b/app/Aura.cs index 6ffb29ad..b24d5c10 100644 --- a/app/Aura.cs +++ b/app/Aura.cs @@ -148,7 +148,7 @@ namespace GHelper { HidDevice[] HidDeviceList = HidDevices.Enumerate(0x0b05, deviceIds).ToArray(); - byte[] msg = { 0x5a, 0xba, 0xc5, 0xc4, (byte)brightness }; + byte[] msg = { 0x5d, 0xba, 0xc5, 0xc4, (byte)brightness }; foreach (HidDevice device in HidDeviceList) if (device.IsConnected && device.Description.Contains("HID")) diff --git a/app/ControlHelper.cs b/app/ControlHelper.cs index aab1cd96..d873547a 100644 --- a/app/ControlHelper.cs +++ b/app/ControlHelper.cs @@ -9,6 +9,7 @@ public static class ControlHelper static bool _invert = false; static bool _darkTheme = false; + static float _scale = 1; static Color formBack; diff --git a/app/HardwareMonitor.cs b/app/HardwareMonitor.cs index e88267a9..7c6d4600 100644 --- a/app/HardwareMonitor.cs +++ b/app/HardwareMonitor.cs @@ -1,4 +1,5 @@ using System.Diagnostics; +using GHelper; using GHelper.Gpu; public static class HardwareMonitor @@ -9,16 +10,41 @@ public static class HardwareMonitor public static float? batteryDischarge = -1; public static int? gpuTemp = null; + public static string? cpuFan; + public static string? gpuFan; + public static string? midFan; + + private static string FormatFan(int fan) + { + // fix for old models + if (fan < 0) + { + fan += 65536; + if (fan <= 0 || fan > 100) return null; //nothing reasonable + } + + if (Program.config.getConfig("fan_rpm") == 1) + return " Fan: " + (fan * 100).ToString() + "RPM"; + else + return " Fan: " + Math.Min(Math.Round(fan / 0.6), 100).ToString() + "%"; // relatively to 6000 rpm + } + public static void ReadSensors() { cpuTemp = -1; batteryDischarge = -1; + cpuFan = FormatFan(Program.wmi.DeviceGet(ASUSWmi.CPU_Fan)); + gpuFan = FormatFan(Program.wmi.DeviceGet(ASUSWmi.GPU_Fan)); + midFan = FormatFan(Program.wmi.DeviceGet(ASUSWmi.Mid_Fan)); + try { + cpuTemp = Program.wmi.DeviceGet(ASUSWmi.Temp_CPU); + /* var ct = new PerformanceCounter("Thermal Zone Information", "Temperature", @"\_TZ.THRM", true); cpuTemp = ct.NextValue() - 273; - ct.Dispose(); + ct.Dispose();*/ } catch { Logger.WriteLine("Failed reading CPU temp"); @@ -37,8 +63,12 @@ public static class HardwareMonitor try { - gpuTemp = GpuTemperatureProvider?.GetCurrentTemperature(); - } catch (Exception ex) { + gpuTemp = Program.wmi.DeviceGet(ASUSWmi.Temp_GPU); + if (gpuTemp < 0) + gpuTemp = GpuTemperatureProvider?.GetCurrentTemperature(); + + } + catch (Exception ex) { gpuTemp = null; Logger.WriteLine("Failed reading GPU temp"); Logger.WriteLine(ex.ToString()); diff --git a/app/Settings.cs b/app/Settings.cs index 891ef536..afa9d982 100644 --- a/app/Settings.cs +++ b/app/Settings.cs @@ -137,7 +137,7 @@ namespace GHelper Task.Run(async () => { - await Task.Delay(TimeSpan.FromSeconds(5)); + await Task.Delay(TimeSpan.FromSeconds(1)); CheckForUpdatesAsync(); }); @@ -828,26 +828,12 @@ namespace GHelper } - private static string FormatFan(int fan) - { - if (fan < 0) return null; - - if (Program.config.getConfig("fan_rpm") == 1) - return " Fan: " + (fan * 100).ToString() + "RPM"; - else - return " Fan: " + Math.Min(Math.Round(fan / 0.6), 100).ToString() + "%"; // relatively to 6000 rpm - } - private static void RefreshSensors(bool force = false) { if (!force && Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastRefresh) < 2000) return; lastRefresh = DateTimeOffset.Now.ToUnixTimeMilliseconds(); - string cpuFan = FormatFan(Program.wmi.DeviceGet(ASUSWmi.CPU_Fan)); - string gpuFan = FormatFan(Program.wmi.DeviceGet(ASUSWmi.GPU_Fan)); - string midFan = FormatFan(Program.wmi.DeviceGet(ASUSWmi.Mid_Fan)); - string cpuTemp = ""; string gpuTemp = ""; string battery = ""; @@ -867,12 +853,16 @@ namespace GHelper Program.settingsForm.BeginInvoke(delegate { - Program.settingsForm.labelCPUFan.Text = "CPU" + cpuTemp + cpuFan; - Program.settingsForm.labelGPUFan.Text = "GPU" + gpuTemp + gpuFan; - if (midFan is not null) Program.settingsForm.labelMidFan.Text = "Mid" + midFan; + Program.settingsForm.labelCPUFan.Text = "CPU" + cpuTemp + HardwareMonitor.cpuFan; + Program.settingsForm.labelGPUFan.Text = "GPU" + gpuTemp + HardwareMonitor.gpuFan; + if (HardwareMonitor.midFan is not null) + Program.settingsForm.labelMidFan.Text = "Mid" + HardwareMonitor.midFan; + Program.settingsForm.labelBattery.Text = battery; - Program.trayIcon.Text = "CPU" + cpuTemp + cpuFan + "\n" + "GPU" + gpuTemp + gpuFan + ((battery.Length > 0) ? ("\n" + battery) : ""); + Program.trayIcon.Text = "CPU" + cpuTemp + HardwareMonitor.cpuFan + "\n" + + "GPU" + gpuTemp + HardwareMonitor.gpuFan + + ((battery.Length > 0) ? ("\n" + battery) : ""); }); } @@ -1035,9 +1025,11 @@ namespace GHelper if (Program.config.getConfig("keyboard_auto") != 1) return; if (SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online) - Program.wmi.DeviceSet(ASUSWmi.UniversalControl, ASUSWmi.KB_Light_Up); + Aura.ApplyBrightness(3); + //Program.wmi.DeviceSet(ASUSWmi.UniversalControl, ASUSWmi.KB_Light_Up); else - Program.wmi.DeviceSet(ASUSWmi.UniversalControl, ASUSWmi.KB_Light_Down); + Aura.ApplyBrightness(0); + //Program.wmi.DeviceSet(ASUSWmi.UniversalControl, ASUSWmi.KB_Light_Down); } @@ -1119,6 +1111,9 @@ namespace GHelper int eco = Program.wmi.DeviceGet(ASUSWmi.GPUEco); int mux = Program.wmi.DeviceGet(ASUSWmi.GPUMux); + //Logger.WriteLine("Eco flag : " + eco); + //Logger.WriteLine("Mux flag : " + mux); + int GpuMode; if (mux == 0) @@ -1170,11 +1165,12 @@ namespace GHelper } Program.wmi.DeviceSet(ASUSWmi.GPUEco, eco); + Logger.WriteLine("Setting Eco mode: " + eco); + Program.settingsForm.BeginInvoke(delegate { - InitGPUMode(); - HardwareMonitor.RecreateGpuTemperatureProviderWithDelay(); Thread.Sleep(500); + InitGPUMode(); AutoScreen(); }); });