mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Added native temp sensors, brightness controll, etc
This commit is contained in:
@@ -31,6 +31,10 @@ public class ASUSWmi
|
|||||||
public const uint DevsGPUFanCurve = 0x00110025;
|
public const uint DevsGPUFanCurve = 0x00110025;
|
||||||
public const uint DevsMidFanCurve = 0x00110032;
|
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_TotalA0 = 0x001200A0; // Total PPT on 2022 and CPU PPT on 2021
|
||||||
public const int PPT_EDCA1 = 0x001200A1; // CPU EDC
|
public const int PPT_EDCA1 = 0x001200A1; // CPU EDC
|
||||||
public const int PPT_TDCA2 = 0x001200A2; // CPU TDC
|
public const int PPT_TDCA2 = 0x001200A2; // CPU TDC
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ namespace GHelper
|
|||||||
{
|
{
|
||||||
HidDevice[] HidDeviceList = HidDevices.Enumerate(0x0b05, deviceIds).ToArray();
|
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)
|
foreach (HidDevice device in HidDeviceList)
|
||||||
if (device.IsConnected && device.Description.Contains("HID"))
|
if (device.IsConnected && device.Description.Contains("HID"))
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ public static class ControlHelper
|
|||||||
static bool _invert = false;
|
static bool _invert = false;
|
||||||
static bool _darkTheme = false;
|
static bool _darkTheme = false;
|
||||||
|
|
||||||
|
|
||||||
static float _scale = 1;
|
static float _scale = 1;
|
||||||
|
|
||||||
static Color formBack;
|
static Color formBack;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using GHelper;
|
||||||
using GHelper.Gpu;
|
using GHelper.Gpu;
|
||||||
|
|
||||||
public static class HardwareMonitor
|
public static class HardwareMonitor
|
||||||
@@ -9,16 +10,41 @@ public static class HardwareMonitor
|
|||||||
public static float? batteryDischarge = -1;
|
public static float? batteryDischarge = -1;
|
||||||
public static int? gpuTemp = null;
|
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()
|
public static void ReadSensors()
|
||||||
{
|
{
|
||||||
cpuTemp = -1;
|
cpuTemp = -1;
|
||||||
batteryDischarge = -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
|
try
|
||||||
{
|
{
|
||||||
|
cpuTemp = Program.wmi.DeviceGet(ASUSWmi.Temp_CPU);
|
||||||
|
/*
|
||||||
var ct = new PerformanceCounter("Thermal Zone Information", "Temperature", @"\_TZ.THRM", true);
|
var ct = new PerformanceCounter("Thermal Zone Information", "Temperature", @"\_TZ.THRM", true);
|
||||||
cpuTemp = ct.NextValue() - 273;
|
cpuTemp = ct.NextValue() - 273;
|
||||||
ct.Dispose();
|
ct.Dispose();*/
|
||||||
} catch
|
} catch
|
||||||
{
|
{
|
||||||
Logger.WriteLine("Failed reading CPU temp");
|
Logger.WriteLine("Failed reading CPU temp");
|
||||||
@@ -37,8 +63,12 @@ public static class HardwareMonitor
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
gpuTemp = GpuTemperatureProvider?.GetCurrentTemperature();
|
gpuTemp = Program.wmi.DeviceGet(ASUSWmi.Temp_GPU);
|
||||||
} catch (Exception ex) {
|
if (gpuTemp < 0)
|
||||||
|
gpuTemp = GpuTemperatureProvider?.GetCurrentTemperature();
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex) {
|
||||||
gpuTemp = null;
|
gpuTemp = null;
|
||||||
Logger.WriteLine("Failed reading GPU temp");
|
Logger.WriteLine("Failed reading GPU temp");
|
||||||
Logger.WriteLine(ex.ToString());
|
Logger.WriteLine(ex.ToString());
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ namespace GHelper
|
|||||||
|
|
||||||
Task.Run(async () =>
|
Task.Run(async () =>
|
||||||
{
|
{
|
||||||
await Task.Delay(TimeSpan.FromSeconds(5));
|
await Task.Delay(TimeSpan.FromSeconds(1));
|
||||||
CheckForUpdatesAsync();
|
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)
|
private static void RefreshSensors(bool force = false)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!force && Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastRefresh) < 2000) return;
|
if (!force && Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastRefresh) < 2000) return;
|
||||||
lastRefresh = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
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 cpuTemp = "";
|
||||||
string gpuTemp = "";
|
string gpuTemp = "";
|
||||||
string battery = "";
|
string battery = "";
|
||||||
@@ -867,12 +853,16 @@ namespace GHelper
|
|||||||
|
|
||||||
Program.settingsForm.BeginInvoke(delegate
|
Program.settingsForm.BeginInvoke(delegate
|
||||||
{
|
{
|
||||||
Program.settingsForm.labelCPUFan.Text = "CPU" + cpuTemp + cpuFan;
|
Program.settingsForm.labelCPUFan.Text = "CPU" + cpuTemp + HardwareMonitor.cpuFan;
|
||||||
Program.settingsForm.labelGPUFan.Text = "GPU" + gpuTemp + gpuFan;
|
Program.settingsForm.labelGPUFan.Text = "GPU" + gpuTemp + HardwareMonitor.gpuFan;
|
||||||
if (midFan is not null) Program.settingsForm.labelMidFan.Text = "Mid" + midFan;
|
if (HardwareMonitor.midFan is not null)
|
||||||
|
Program.settingsForm.labelMidFan.Text = "Mid" + HardwareMonitor.midFan;
|
||||||
|
|
||||||
Program.settingsForm.labelBattery.Text = battery;
|
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 (Program.config.getConfig("keyboard_auto") != 1) return;
|
||||||
|
|
||||||
if (SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online)
|
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
|
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 eco = Program.wmi.DeviceGet(ASUSWmi.GPUEco);
|
||||||
int mux = Program.wmi.DeviceGet(ASUSWmi.GPUMux);
|
int mux = Program.wmi.DeviceGet(ASUSWmi.GPUMux);
|
||||||
|
|
||||||
|
//Logger.WriteLine("Eco flag : " + eco);
|
||||||
|
//Logger.WriteLine("Mux flag : " + mux);
|
||||||
|
|
||||||
int GpuMode;
|
int GpuMode;
|
||||||
|
|
||||||
if (mux == 0)
|
if (mux == 0)
|
||||||
@@ -1170,11 +1165,12 @@ namespace GHelper
|
|||||||
}
|
}
|
||||||
|
|
||||||
Program.wmi.DeviceSet(ASUSWmi.GPUEco, eco);
|
Program.wmi.DeviceSet(ASUSWmi.GPUEco, eco);
|
||||||
|
Logger.WriteLine("Setting Eco mode: " + eco);
|
||||||
|
|
||||||
Program.settingsForm.BeginInvoke(delegate
|
Program.settingsForm.BeginInvoke(delegate
|
||||||
{
|
{
|
||||||
InitGPUMode();
|
|
||||||
HardwareMonitor.RecreateGpuTemperatureProviderWithDelay();
|
|
||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
|
InitGPUMode();
|
||||||
AutoScreen();
|
AutoScreen();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user