From 1d43ca3ce4e1ef4ab53d8543ccd6f701e9c2aaf4 Mon Sep 17 00:00:00 2001 From: seerge Date: Thu, 30 Mar 2023 00:00:20 +0200 Subject: [PATCH] Max fan RPM auto calibration --- app/AppConfig.cs | 2 ++ app/Fans.cs | 12 +++--------- app/HardwareMonitor.cs | 18 +++++++++++++++++- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/app/AppConfig.cs b/app/AppConfig.cs index 76f823cc..463f68fc 100644 --- a/app/AppConfig.cs +++ b/app/AppConfig.cs @@ -108,6 +108,8 @@ public class AppConfig if (device == 1) name = "gpu"; + else if (device == 2) + name = "mid"; else name = "cpu"; diff --git a/app/Fans.cs b/app/Fans.cs index feae7c6a..17e864d8 100644 --- a/app/Fans.cs +++ b/app/Fans.cs @@ -18,7 +18,7 @@ namespace GHelper { if (percentage == 0) return "OFF"; - return (200 * Math.Round((float)(MinRPM + (MaxRPM - MinRPM) * percentage * 0.01) / 200)).ToString() + unit; + return (200 * Math.Round((float)(MinRPM*100 + (MaxRPM - MinRPM) * percentage) / 200)).ToString() + unit; } void SetChart(Chart chart, int device) @@ -89,14 +89,8 @@ namespace GHelper InitializeComponent(); InitTheme(); - MinRPM = 1800; - - if (Program.config.ContainsModel("401")) - MaxRPM = 7200; - else if (Program.config.ContainsModel("503")) - MaxRPM = 6800; - else - MaxRPM = 5800; + MinRPM = 18; + MaxRPM = HardwareMonitor.GetFanMax(); diff --git a/app/HardwareMonitor.cs b/app/HardwareMonitor.cs index 8726ad23..1efb9066 100644 --- a/app/HardwareMonitor.cs +++ b/app/HardwareMonitor.cs @@ -14,6 +14,19 @@ public static class HardwareMonitor public static string? gpuFan; public static string? midFan; + public static int GetFanMax() + { + int max = 58; + if (Program.config.ContainsModel("401")) max = 72; + else if (Program.config.ContainsModel("503")) max = 68; + + return Math.Max(max, Program.config.getConfig("fan_max")); + } + + public static void SetFanMax(int fan) + { + Program.config.setConfig("fan_max", fan); + } private static string FormatFan(int fan) { // fix for old models @@ -23,10 +36,13 @@ public static class HardwareMonitor if (fan <= 0 || fan > 100) return null; //nothing reasonable } + int fanMax = GetFanMax(); + if (fan > fanMax) SetFanMax(fan); + 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 + return " Fan: " + Math.Min(Math.Round((float)fan/fanMax*100), 100).ToString() + "%"; // relatively to 6000 rpm } public static void ReadSensors()