diff --git a/app/Mode/ModeControl.cs b/app/Mode/ModeControl.cs index dda4611d..a1bc3054 100644 --- a/app/Mode/ModeControl.cs +++ b/app/Mode/ModeControl.cs @@ -15,6 +15,7 @@ namespace GHelper.Mode private int _cpuUV = 0; private int _igpuUV = 0; + private bool _ryzenPower = false; static System.Timers.Timer reapplyTimer = default!; @@ -28,6 +29,7 @@ namespace GHelper.Mode private void ReapplyTimer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e) { SetCPUTemp(AppConfig.GetMode("cpu_temp"), false); + if (_ryzenPower) SetRyzenPower(); } public void AutoPerformance(bool powerChanged = false) @@ -222,6 +224,31 @@ namespace GHelper.Mode settings.SetModeLabel(Properties.Strings.PerformanceMode + ": " + Modes.GetCurrentName() + (customFans ? "+" : "") + ((customPower > 0) ? " " + customPower + "W" : "")); } + public void SetRyzenPower(bool log = false) + { + if (!AppConfig.IsMode("auto_apply_power")) return; + + int limit_total = AppConfig.GetMode("limit_total"); + int limit_slow = AppConfig.GetMode("limit_slow", limit_total); + + if (limit_total > AsusACPI.MaxTotal) return; + if (limit_total < AsusACPI.MinTotal) return; + + var stapmResult = SendCommand.set_stapm_limit((uint)limit_total * 1000); + if (log) Logger.WriteLine($"STAPM: {limit_total} {stapmResult}"); + + var stapmResult2 = SendCommand.set_stapm2_limit((uint)limit_total * 1000); + if (log) Logger.WriteLine($"STAPM2: {limit_total} {stapmResult2}"); + + var slowResult = SendCommand.set_slow_limit((uint)limit_slow * 1000); + if (log) Logger.WriteLine($"SLOW: {limit_slow} {slowResult}"); + + var fastResult = SendCommand.set_fast_limit((uint)limit_slow * 1000); + if (log) Logger.WriteLine($"FAST: {limit_slow} {fastResult}"); + + _ryzenPower = true; + } + public void SetPower(bool launchAsAdmin = false) { @@ -258,18 +285,7 @@ namespace GHelper.Mode if (ProcessHelper.IsUserAdministrator()) { - var stapmResult = SendCommand.set_stapm_limit((uint)limit_total * 1000); - Logger.WriteLine($"STAPM: {limit_total} {stapmResult}"); - - var stapmResult2 = SendCommand.set_stapm2_limit((uint)limit_total * 1000); - Logger.WriteLine($"STAPM2: {limit_total} {stapmResult2}"); - - var slowResult = SendCommand.set_slow_limit((uint)limit_slow * 1000); - Logger.WriteLine($"SLOW: {limit_slow} {slowResult}"); - - var fastResult = SendCommand.set_fast_limit((uint)limit_slow * 1000); - Logger.WriteLine($"FAST: {limit_slow} {fastResult}"); - + SetRyzenPower(true); customPower = limit_total; } else if (launchAsAdmin)