Power Mode control

This commit is contained in:
Serge
2023-08-12 16:04:39 +02:00
parent b15109d13e
commit 3075e22e1e
10 changed files with 229 additions and 119 deletions

View File

@@ -154,6 +154,11 @@ public static class AppConfig
Write(); Write();
} }
public static void RemoveMode(string name)
{
Remove(name + "_" + Modes.GetCurrent());
}
public static string GgetParamName(AsusFan device, string paramName = "fan_profile") public static string GgetParamName(AsusFan device, string paramName = "fan_profile")
{ {
int mode = Modes.GetCurrent(); int mode = Modes.GetCurrent();

24
app/Extra.Designer.cs generated
View File

@@ -103,7 +103,6 @@ namespace GHelper
labelSettings = new Label(); labelSettings = new Label();
panelSettings = new Panel(); panelSettings = new Panel();
checkAutoToggleClamshellMode = new CheckBox(); checkAutoToggleClamshellMode = new CheckBox();
checkAutoApplyWindowsPowerMode = new CheckBox();
checkTopmost = new CheckBox(); checkTopmost = new CheckBox();
checkNoOverdrive = new CheckBox(); checkNoOverdrive = new CheckBox();
checkUSBC = new CheckBox(); checkUSBC = new CheckBox();
@@ -146,7 +145,7 @@ namespace GHelper
panelServices.Controls.Add(labelServices); panelServices.Controls.Add(labelServices);
panelServices.Controls.Add(buttonServices); panelServices.Controls.Add(buttonServices);
panelServices.Dock = DockStyle.Top; panelServices.Dock = DockStyle.Top;
panelServices.Location = new Point(15, 1321); panelServices.Location = new Point(15, 1279);
panelServices.Name = "panelServices"; panelServices.Name = "panelServices";
panelServices.Size = new Size(983, 75); panelServices.Size = new Size(983, 75);
panelServices.TabIndex = 5; panelServices.TabIndex = 5;
@@ -1062,7 +1061,6 @@ namespace GHelper
panelSettings.AutoSize = true; panelSettings.AutoSize = true;
panelSettings.AutoSizeMode = AutoSizeMode.GrowAndShrink; panelSettings.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelSettings.Controls.Add(checkAutoToggleClamshellMode); panelSettings.Controls.Add(checkAutoToggleClamshellMode);
panelSettings.Controls.Add(checkAutoApplyWindowsPowerMode);
panelSettings.Controls.Add(checkTopmost); panelSettings.Controls.Add(checkTopmost);
panelSettings.Controls.Add(checkNoOverdrive); panelSettings.Controls.Add(checkNoOverdrive);
panelSettings.Controls.Add(checkUSBC); panelSettings.Controls.Add(checkUSBC);
@@ -1073,14 +1071,14 @@ namespace GHelper
panelSettings.Location = new Point(15, 921); panelSettings.Location = new Point(15, 921);
panelSettings.Name = "panelSettings"; panelSettings.Name = "panelSettings";
panelSettings.Padding = new Padding(20, 5, 11, 5); panelSettings.Padding = new Padding(20, 5, 11, 5);
panelSettings.Size = new Size(983, 346); panelSettings.Size = new Size(983, 304);
panelSettings.TabIndex = 3; panelSettings.TabIndex = 3;
// //
// checkAutoToggleClamshellMode // checkAutoToggleClamshellMode
// //
checkAutoToggleClamshellMode.AutoSize = true; checkAutoToggleClamshellMode.AutoSize = true;
checkAutoToggleClamshellMode.Dock = DockStyle.Top; checkAutoToggleClamshellMode.Dock = DockStyle.Top;
checkAutoToggleClamshellMode.Location = new Point(20, 299); checkAutoToggleClamshellMode.Location = new Point(20, 257);
checkAutoToggleClamshellMode.Name = "checkAutoToggleClamshellMode"; checkAutoToggleClamshellMode.Name = "checkAutoToggleClamshellMode";
checkAutoToggleClamshellMode.Padding = new Padding(3); checkAutoToggleClamshellMode.Padding = new Padding(3);
checkAutoToggleClamshellMode.Size = new Size(952, 42); checkAutoToggleClamshellMode.Size = new Size(952, 42);
@@ -1088,19 +1086,6 @@ namespace GHelper
checkAutoToggleClamshellMode.Text = "Auto Toggle Clamshell Mode"; checkAutoToggleClamshellMode.Text = "Auto Toggle Clamshell Mode";
checkAutoToggleClamshellMode.UseVisualStyleBackColor = true; checkAutoToggleClamshellMode.UseVisualStyleBackColor = true;
// //
// checkAutoApplyWindowsPowerMode
//
checkAutoApplyWindowsPowerMode.AutoSize = true;
checkAutoApplyWindowsPowerMode.Dock = DockStyle.Top;
checkAutoApplyWindowsPowerMode.Location = new Point(20, 257);
checkAutoApplyWindowsPowerMode.Margin = new Padding(4, 3, 4, 3);
checkAutoApplyWindowsPowerMode.Name = "checkAutoApplyWindowsPowerMode";
checkAutoApplyWindowsPowerMode.Padding = new Padding(3);
checkAutoApplyWindowsPowerMode.Size = new Size(952, 42);
checkAutoApplyWindowsPowerMode.TabIndex = 7;
checkAutoApplyWindowsPowerMode.Text = "Auto Adjust Windows Power Mode";
checkAutoApplyWindowsPowerMode.UseVisualStyleBackColor = true;
//
// checkTopmost // checkTopmost
// //
checkTopmost.AutoSize = true; checkTopmost.AutoSize = true;
@@ -1185,7 +1170,7 @@ namespace GHelper
panelPower.Controls.Add(labelHibernateAfter); panelPower.Controls.Add(labelHibernateAfter);
panelPower.Controls.Add(pictureHibernate); panelPower.Controls.Add(pictureHibernate);
panelPower.Dock = DockStyle.Top; panelPower.Dock = DockStyle.Top;
panelPower.Location = new Point(15, 1267); panelPower.Location = new Point(15, 1225);
panelPower.Name = "panelPower"; panelPower.Name = "panelPower";
panelPower.Size = new Size(983, 54); panelPower.Size = new Size(983, 54);
panelPower.TabIndex = 4; panelPower.TabIndex = 4;
@@ -1348,7 +1333,6 @@ namespace GHelper
private PictureBox pictureSettings; private PictureBox pictureSettings;
private Label labelSettings; private Label labelSettings;
private Panel panelSettings; private Panel panelSettings;
private CheckBox checkAutoApplyWindowsPowerMode;
private CheckBox checkTopmost; private CheckBox checkTopmost;
private CheckBox checkNoOverdrive; private CheckBox checkNoOverdrive;
private CheckBox checkUSBC; private CheckBox checkUSBC;

View File

@@ -118,7 +118,6 @@ namespace GHelper
checkNoOverdrive.Text = Properties.Strings.DisableOverdrive; checkNoOverdrive.Text = Properties.Strings.DisableOverdrive;
checkTopmost.Text = Properties.Strings.WindowTop; checkTopmost.Text = Properties.Strings.WindowTop;
checkUSBC.Text = Properties.Strings.OptimizedUSBC; checkUSBC.Text = Properties.Strings.OptimizedUSBC;
checkAutoApplyWindowsPowerMode.Text = Properties.Strings.ApplyWindowsPowerPlan;
checkAutoToggleClamshellMode.Text = Properties.Strings.ToggleClamshellMode; checkAutoToggleClamshellMode.Text = Properties.Strings.ToggleClamshellMode;
labelBacklightKeyboard.Text = Properties.Strings.Keyboard; labelBacklightKeyboard.Text = Properties.Strings.Keyboard;
@@ -293,9 +292,6 @@ namespace GHelper
checkUSBC.Checked = AppConfig.Is("optimized_usbc"); checkUSBC.Checked = AppConfig.Is("optimized_usbc");
checkUSBC.CheckedChanged += CheckUSBC_CheckedChanged; checkUSBC.CheckedChanged += CheckUSBC_CheckedChanged;
checkAutoApplyWindowsPowerMode.Checked = (AppConfig.Get("auto_apply_power_plan") != 0);
checkAutoApplyWindowsPowerMode.CheckedChanged += checkAutoApplyWindowsPowerMode_CheckedChanged;
sliderBrightness.Value = InputDispatcher.GetBacklight(); sliderBrightness.Value = InputDispatcher.GetBacklight();
sliderBrightness.ValueChanged += SliderBrightness_ValueChanged; sliderBrightness.ValueChanged += SliderBrightness_ValueChanged;
@@ -563,10 +559,6 @@ namespace GHelper
Left = Program.settingsForm.Left - Width - 5; Left = Program.settingsForm.Left - Width - 5;
} }
private void checkAutoApplyWindowsPowerMode_CheckedChanged(object? sender, EventArgs e)
{
AppConfig.Set("auto_apply_power_plan", checkAutoApplyWindowsPowerMode.Checked ? 1 : 0);
}
private void checkAutoToggleClamshellMode_CheckedChanged(object? sender, EventArgs e) private void checkAutoToggleClamshellMode_CheckedChanged(object? sender, EventArgs e)
{ {

145
app/Fans.Designer.cs generated
View File

@@ -31,14 +31,14 @@ namespace GHelper
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
ChartArea chartArea1 = new ChartArea(); ChartArea chartArea9 = new ChartArea();
Title title1 = new Title(); Title title9 = new Title();
ChartArea chartArea2 = new ChartArea(); ChartArea chartArea10 = new ChartArea();
Title title2 = new Title(); Title title10 = new Title();
ChartArea chartArea3 = new ChartArea(); ChartArea chartArea11 = new ChartArea();
Title title3 = new Title(); Title title11 = new Title();
ChartArea chartArea4 = new ChartArea(); ChartArea chartArea12 = new ChartArea();
Title title4 = new Title(); Title title12 = new Title();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Fans)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Fans));
panelFans = new Panel(); panelFans = new Panel();
labelTip = new Label(); labelTip = new Label();
@@ -103,6 +103,8 @@ namespace GHelper
pictureBoxCPU = new PictureBox(); pictureBoxCPU = new PictureBox();
labelPowerLimits = new Label(); labelPowerLimits = new Label();
panelBoost = new Panel(); panelBoost = new Panel();
panelPowerMode = new Panel();
comboPowerMode = new RComboBox();
panelBoostTitle = new Panel(); panelBoostTitle = new Panel();
pictureBoost = new PictureBox(); pictureBoost = new PictureBox();
labelBoost = new Label(); labelBoost = new Label();
@@ -131,6 +133,9 @@ namespace GHelper
buttonAdvanced = new RButton(); buttonAdvanced = new RButton();
buttonGPU = new RButton(); buttonGPU = new RButton();
buttonCPU = new RButton(); buttonCPU = new RButton();
panelPowerModeTItle = new Panel();
picturePowerMode = new PictureBox();
labelPowerModeTitle = new Label();
panelFans.SuspendLayout(); panelFans.SuspendLayout();
tableFanCharts.SuspendLayout(); tableFanCharts.SuspendLayout();
((System.ComponentModel.ISupportInitialize)chartGPU).BeginInit(); ((System.ComponentModel.ISupportInitialize)chartGPU).BeginInit();
@@ -165,6 +170,7 @@ namespace GHelper
panelTitleCPU.SuspendLayout(); panelTitleCPU.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureBoxCPU).BeginInit(); ((System.ComponentModel.ISupportInitialize)pictureBoxCPU).BeginInit();
panelBoost.SuspendLayout(); panelBoost.SuspendLayout();
panelPowerMode.SuspendLayout();
panelBoostTitle.SuspendLayout(); panelBoostTitle.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureBoost).BeginInit(); ((System.ComponentModel.ISupportInitialize)pictureBoost).BeginInit();
panelGPU.SuspendLayout(); panelGPU.SuspendLayout();
@@ -180,6 +186,8 @@ namespace GHelper
((System.ComponentModel.ISupportInitialize)pictureGPU).BeginInit(); ((System.ComponentModel.ISupportInitialize)pictureGPU).BeginInit();
panelNav.SuspendLayout(); panelNav.SuspendLayout();
tableNav.SuspendLayout(); tableNav.SuspendLayout();
panelPowerModeTItle.SuspendLayout();
((System.ComponentModel.ISupportInitialize)picturePowerMode).BeginInit();
SuspendLayout(); SuspendLayout();
// //
// panelFans // panelFans
@@ -236,8 +244,8 @@ namespace GHelper
// //
// chartGPU // chartGPU
// //
chartArea1.Name = "ChartArea1"; chartArea9.Name = "ChartArea1";
chartGPU.ChartAreas.Add(chartArea1); chartGPU.ChartAreas.Add(chartArea9);
chartGPU.Dock = DockStyle.Fill; chartGPU.Dock = DockStyle.Fill;
chartGPU.Location = new Point(12, 491); chartGPU.Location = new Point(12, 491);
chartGPU.Margin = new Padding(2, 10, 2, 10); chartGPU.Margin = new Padding(2, 10, 2, 10);
@@ -245,13 +253,13 @@ namespace GHelper
chartGPU.Size = new Size(782, 461); chartGPU.Size = new Size(782, 461);
chartGPU.TabIndex = 17; chartGPU.TabIndex = 17;
chartGPU.Text = "chartGPU"; chartGPU.Text = "chartGPU";
title1.Name = "Title1"; title9.Name = "Title1";
chartGPU.Titles.Add(title1); chartGPU.Titles.Add(title9);
// //
// chartCPU // chartCPU
// //
chartArea2.Name = "ChartArea1"; chartArea10.Name = "ChartArea1";
chartCPU.ChartAreas.Add(chartArea2); chartCPU.ChartAreas.Add(chartArea10);
chartCPU.Dock = DockStyle.Fill; chartCPU.Dock = DockStyle.Fill;
chartCPU.Location = new Point(12, 10); chartCPU.Location = new Point(12, 10);
chartCPU.Margin = new Padding(2, 10, 2, 10); chartCPU.Margin = new Padding(2, 10, 2, 10);
@@ -259,13 +267,13 @@ namespace GHelper
chartCPU.Size = new Size(782, 461); chartCPU.Size = new Size(782, 461);
chartCPU.TabIndex = 14; chartCPU.TabIndex = 14;
chartCPU.Text = "chartCPU"; chartCPU.Text = "chartCPU";
title2.Name = "Title1"; title10.Name = "Title1";
chartCPU.Titles.Add(title2); chartCPU.Titles.Add(title10);
// //
// chartXGM // chartXGM
// //
chartArea3.Name = "ChartAreaXGM"; chartArea11.Name = "ChartAreaXGM";
chartXGM.ChartAreas.Add(chartArea3); chartXGM.ChartAreas.Add(chartArea11);
chartXGM.Dock = DockStyle.Fill; chartXGM.Dock = DockStyle.Fill;
chartXGM.Location = new Point(12, 1453); chartXGM.Location = new Point(12, 1453);
chartXGM.Margin = new Padding(2, 10, 2, 10); chartXGM.Margin = new Padding(2, 10, 2, 10);
@@ -273,14 +281,14 @@ namespace GHelper
chartXGM.Size = new Size(782, 464); chartXGM.Size = new Size(782, 464);
chartXGM.TabIndex = 14; chartXGM.TabIndex = 14;
chartXGM.Text = "chartXGM"; chartXGM.Text = "chartXGM";
title3.Name = "Title4"; title11.Name = "Title4";
chartXGM.Titles.Add(title3); chartXGM.Titles.Add(title11);
chartXGM.Visible = false; chartXGM.Visible = false;
// //
// chartMid // chartMid
// //
chartArea4.Name = "ChartArea3"; chartArea12.Name = "ChartArea3";
chartMid.ChartAreas.Add(chartArea4); chartMid.ChartAreas.Add(chartArea12);
chartMid.Dock = DockStyle.Fill; chartMid.Dock = DockStyle.Fill;
chartMid.Location = new Point(12, 972); chartMid.Location = new Point(12, 972);
chartMid.Margin = new Padding(2, 10, 2, 10); chartMid.Margin = new Padding(2, 10, 2, 10);
@@ -288,8 +296,8 @@ namespace GHelper
chartMid.Size = new Size(782, 461); chartMid.Size = new Size(782, 461);
chartMid.TabIndex = 14; chartMid.TabIndex = 14;
chartMid.Text = "chartMid"; chartMid.Text = "chartMid";
title4.Name = "Title3"; title12.Name = "Title3";
chartMid.Titles.Add(title4); chartMid.Titles.Add(title12);
chartMid.Visible = false; chartMid.Visible = false;
// //
// panelTitleFans // panelTitleFans
@@ -491,7 +499,7 @@ namespace GHelper
panelAdvanced.Controls.Add(panelTemperature); panelAdvanced.Controls.Add(panelTemperature);
panelAdvanced.Controls.Add(panelTitleTemp); panelAdvanced.Controls.Add(panelTitleTemp);
panelAdvanced.Dock = DockStyle.Top; panelAdvanced.Dock = DockStyle.Top;
panelAdvanced.Location = new Point(10, 1272); panelAdvanced.Location = new Point(10, 1396);
panelAdvanced.Name = "panelAdvanced"; panelAdvanced.Name = "panelAdvanced";
panelAdvanced.Size = new Size(520, 888); panelAdvanced.Size = new Size(520, 888);
panelAdvanced.TabIndex = 14; panelAdvanced.TabIndex = 14;
@@ -786,11 +794,13 @@ namespace GHelper
panelPower.Controls.Add(panelTitleCPU); panelPower.Controls.Add(panelTitleCPU);
panelPower.Controls.Add(panelBoost); panelPower.Controls.Add(panelBoost);
panelPower.Controls.Add(panelBoostTitle); panelPower.Controls.Add(panelBoostTitle);
panelPower.Controls.Add(panelPowerMode);
panelPower.Controls.Add(panelPowerModeTItle);
panelPower.Dock = DockStyle.Top; panelPower.Dock = DockStyle.Top;
panelPower.Location = new Point(10, 640); panelPower.Location = new Point(10, 640);
panelPower.Margin = new Padding(4); panelPower.Margin = new Padding(4);
panelPower.Name = "panelPower"; panelPower.Name = "panelPower";
panelPower.Size = new Size(520, 632); panelPower.Size = new Size(520, 756);
panelPower.TabIndex = 43; panelPower.TabIndex = 43;
// //
// panelApplyPower // panelApplyPower
@@ -798,7 +808,7 @@ namespace GHelper
panelApplyPower.AutoSize = true; panelApplyPower.AutoSize = true;
panelApplyPower.Controls.Add(checkApplyPower); panelApplyPower.Controls.Add(checkApplyPower);
panelApplyPower.Dock = DockStyle.Top; panelApplyPower.Dock = DockStyle.Top;
panelApplyPower.Location = new Point(0, 556); panelApplyPower.Location = new Point(0, 680);
panelApplyPower.Name = "panelApplyPower"; panelApplyPower.Name = "panelApplyPower";
panelApplyPower.Padding = new Padding(15); panelApplyPower.Padding = new Padding(15);
panelApplyPower.Size = new Size(520, 76); panelApplyPower.Size = new Size(520, 76);
@@ -825,7 +835,7 @@ namespace GHelper
panelB0.Controls.Add(labelLeftB0); panelB0.Controls.Add(labelLeftB0);
panelB0.Controls.Add(trackB0); panelB0.Controls.Add(trackB0);
panelB0.Dock = DockStyle.Top; panelB0.Dock = DockStyle.Top;
panelB0.Location = new Point(0, 432); panelB0.Location = new Point(0, 556);
panelB0.Margin = new Padding(4); panelB0.Margin = new Padding(4);
panelB0.MaximumSize = new Size(0, 124); panelB0.MaximumSize = new Size(0, 124);
panelB0.Name = "panelB0"; panelB0.Name = "panelB0";
@@ -874,7 +884,7 @@ namespace GHelper
panelC1.Controls.Add(labelLeftC1); panelC1.Controls.Add(labelLeftC1);
panelC1.Controls.Add(trackC1); panelC1.Controls.Add(trackC1);
panelC1.Dock = DockStyle.Top; panelC1.Dock = DockStyle.Top;
panelC1.Location = new Point(0, 308); panelC1.Location = new Point(0, 432);
panelC1.Margin = new Padding(4); panelC1.Margin = new Padding(4);
panelC1.MaximumSize = new Size(0, 124); panelC1.MaximumSize = new Size(0, 124);
panelC1.Name = "panelC1"; panelC1.Name = "panelC1";
@@ -923,7 +933,7 @@ namespace GHelper
panelA0.Controls.Add(labelLeftA0); panelA0.Controls.Add(labelLeftA0);
panelA0.Controls.Add(trackA0); panelA0.Controls.Add(trackA0);
panelA0.Dock = DockStyle.Top; panelA0.Dock = DockStyle.Top;
panelA0.Location = new Point(0, 184); panelA0.Location = new Point(0, 308);
panelA0.Margin = new Padding(4); panelA0.Margin = new Padding(4);
panelA0.MaximumSize = new Size(0, 124); panelA0.MaximumSize = new Size(0, 124);
panelA0.Name = "panelA0"; panelA0.Name = "panelA0";
@@ -971,7 +981,7 @@ namespace GHelper
panelTitleCPU.Controls.Add(pictureBoxCPU); panelTitleCPU.Controls.Add(pictureBoxCPU);
panelTitleCPU.Controls.Add(labelPowerLimits); panelTitleCPU.Controls.Add(labelPowerLimits);
panelTitleCPU.Dock = DockStyle.Top; panelTitleCPU.Dock = DockStyle.Top;
panelTitleCPU.Location = new Point(0, 124); panelTitleCPU.Location = new Point(0, 248);
panelTitleCPU.Margin = new Padding(4); panelTitleCPU.Margin = new Padding(4);
panelTitleCPU.Name = "panelTitleCPU"; panelTitleCPU.Name = "panelTitleCPU";
panelTitleCPU.Size = new Size(520, 60); panelTitleCPU.Size = new Size(520, 60);
@@ -1004,12 +1014,36 @@ namespace GHelper
// //
panelBoost.Controls.Add(comboBoost); panelBoost.Controls.Add(comboBoost);
panelBoost.Dock = DockStyle.Top; panelBoost.Dock = DockStyle.Top;
panelBoost.Location = new Point(0, 60); panelBoost.Location = new Point(0, 184);
panelBoost.Margin = new Padding(4); panelBoost.Margin = new Padding(4);
panelBoost.Name = "panelBoost"; panelBoost.Name = "panelBoost";
panelBoost.Size = new Size(520, 64); panelBoost.Size = new Size(520, 64);
panelBoost.TabIndex = 13; panelBoost.TabIndex = 13;
// //
// panelPowerMode
//
panelPowerMode.Controls.Add(comboPowerMode);
panelPowerMode.Dock = DockStyle.Top;
panelPowerMode.Location = new Point(0, 60);
panelPowerMode.Margin = new Padding(4);
panelPowerMode.Name = "panelPowerMode";
panelPowerMode.Size = new Size(520, 64);
panelPowerMode.TabIndex = 49;
//
// comboPowerMode
//
comboPowerMode.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
comboPowerMode.BorderColor = Color.White;
comboPowerMode.ButtonColor = Color.FromArgb(255, 255, 255);
comboPowerMode.DropDownStyle = ComboBoxStyle.DropDownList;
comboPowerMode.FormattingEnabled = true;
comboPowerMode.Items.AddRange(new object[] { "Disabled", "Enabled", "Aggressive", "Efficient Enabled", "Efficient Aggressive", "Aggressive at Guaranteed", "Efficient at Guaranteed" });
comboPowerMode.Location = new Point(13, 12);
comboPowerMode.Margin = new Padding(4);
comboPowerMode.Name = "comboPowerMode";
comboPowerMode.Size = new Size(329, 40);
comboPowerMode.TabIndex = 42;
//
// panelBoostTitle // panelBoostTitle
// //
panelBoostTitle.AutoSize = true; panelBoostTitle.AutoSize = true;
@@ -1017,7 +1051,7 @@ namespace GHelper
panelBoostTitle.Controls.Add(pictureBoost); panelBoostTitle.Controls.Add(pictureBoost);
panelBoostTitle.Controls.Add(labelBoost); panelBoostTitle.Controls.Add(labelBoost);
panelBoostTitle.Dock = DockStyle.Top; panelBoostTitle.Dock = DockStyle.Top;
panelBoostTitle.Location = new Point(0, 0); panelBoostTitle.Location = new Point(0, 124);
panelBoostTitle.Margin = new Padding(4); panelBoostTitle.Margin = new Padding(4);
panelBoostTitle.Name = "panelBoostTitle"; panelBoostTitle.Name = "panelBoostTitle";
panelBoostTitle.Size = new Size(520, 60); panelBoostTitle.Size = new Size(520, 60);
@@ -1382,6 +1416,42 @@ namespace GHelper
buttonCPU.TextImageRelation = TextImageRelation.ImageBeforeText; buttonCPU.TextImageRelation = TextImageRelation.ImageBeforeText;
buttonCPU.UseVisualStyleBackColor = false; buttonCPU.UseVisualStyleBackColor = false;
// //
// panelPowerModeTItle
//
panelPowerModeTItle.AutoSize = true;
panelPowerModeTItle.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelPowerModeTItle.Controls.Add(picturePowerMode);
panelPowerModeTItle.Controls.Add(labelPowerModeTitle);
panelPowerModeTItle.Dock = DockStyle.Top;
panelPowerModeTItle.Location = new Point(0, 0);
panelPowerModeTItle.Margin = new Padding(4);
panelPowerModeTItle.Name = "panelPowerModeTItle";
panelPowerModeTItle.Size = new Size(520, 60);
panelPowerModeTItle.TabIndex = 50;
//
// picturePowerMode
//
picturePowerMode.BackgroundImage = Properties.Resources.icons8_gauge_32;
picturePowerMode.BackgroundImageLayout = ImageLayout.Zoom;
picturePowerMode.InitialImage = null;
picturePowerMode.Location = new Point(10, 18);
picturePowerMode.Margin = new Padding(4, 2, 4, 10);
picturePowerMode.Name = "picturePowerMode";
picturePowerMode.Size = new Size(32, 32);
picturePowerMode.TabIndex = 40;
picturePowerMode.TabStop = false;
//
// labelPowerModeTitle
//
labelPowerModeTitle.AutoSize = true;
labelPowerModeTitle.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelPowerModeTitle.Location = new Point(46, 18);
labelPowerModeTitle.Margin = new Padding(4, 0, 4, 0);
labelPowerModeTitle.Name = "labelPowerModeTitle";
labelPowerModeTitle.Size = new Size(271, 32);
labelPowerModeTitle.TabIndex = 39;
labelPowerModeTitle.Text = "Windows Power Mode";
//
// Fans // Fans
// //
AutoScaleDimensions = new SizeF(192F, 192F); AutoScaleDimensions = new SizeF(192F, 192F);
@@ -1449,6 +1519,7 @@ namespace GHelper
panelTitleCPU.PerformLayout(); panelTitleCPU.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureBoxCPU).EndInit(); ((System.ComponentModel.ISupportInitialize)pictureBoxCPU).EndInit();
panelBoost.ResumeLayout(false); panelBoost.ResumeLayout(false);
panelPowerMode.ResumeLayout(false);
panelBoostTitle.ResumeLayout(false); panelBoostTitle.ResumeLayout(false);
panelBoostTitle.PerformLayout(); panelBoostTitle.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureBoost).EndInit(); ((System.ComponentModel.ISupportInitialize)pictureBoost).EndInit();
@@ -1471,6 +1542,9 @@ namespace GHelper
((System.ComponentModel.ISupportInitialize)pictureGPU).EndInit(); ((System.ComponentModel.ISupportInitialize)pictureGPU).EndInit();
panelNav.ResumeLayout(false); panelNav.ResumeLayout(false);
tableNav.ResumeLayout(false); tableNav.ResumeLayout(false);
panelPowerModeTItle.ResumeLayout(false);
panelPowerModeTItle.PerformLayout();
((System.ComponentModel.ISupportInitialize)picturePowerMode).EndInit();
ResumeLayout(false); ResumeLayout(false);
PerformLayout(); PerformLayout();
} }
@@ -1568,5 +1642,10 @@ namespace GHelper
private TrackBar trackTemp; private TrackBar trackTemp;
private Panel panelAdvancedAlways; private Panel panelAdvancedAlways;
private RCheckBox checkApplyUV; private RCheckBox checkApplyUV;
private Panel panelPowerMode;
private RComboBox comboPowerMode;
private Panel panelPowerModeTItle;
private PictureBox picturePowerMode;
private Label labelPowerModeTitle;
} }
} }

View File

@@ -145,11 +145,17 @@ namespace GHelper
trackTemp.Minimum = RyzenControl.MinTemp; trackTemp.Minimum = RyzenControl.MinTemp;
trackTemp.Maximum = RyzenControl.MaxTemp; trackTemp.Maximum = RyzenControl.MaxTemp;
comboPowerMode.DropDownStyle = ComboBoxStyle.DropDownList;
comboPowerMode.DataSource = new BindingSource(PowerNative.powerModes, null);
comboPowerMode.DisplayMember = "Value";
comboPowerMode.ValueMember = "Key";
FillModes(); FillModes();
InitAll(); InitAll();
comboBoost.SelectedValueChanged += ComboBoost_Changed; comboBoost.SelectedValueChanged += ComboBoost_Changed;
comboPowerMode.SelectedValueChanged += ComboPowerMode_Changed;
comboModes.SelectionChangeCommitted += ComboModes_SelectedValueChanged; comboModes.SelectionChangeCommitted += ComboModes_SelectedValueChanged;
comboModes.TextChanged += ComboModes_TextChanged; comboModes.TextChanged += ComboModes_TextChanged;
@@ -201,7 +207,7 @@ namespace GHelper
InitMode(); InitMode();
InitFans(); InitFans();
InitPower(); InitPower();
InitBoost(); InitPowerPlan();
InitUV(); InitUV();
InitGPU(); InitGPU();
} }
@@ -512,7 +518,7 @@ namespace GHelper
if (percentage == 0) return "OFF"; if (percentage == 0) return "OFF";
int Max = MaxRPM; int Max = MaxRPM;
if (device == AsusFan.XGM ) Max = 72; if (device == AsusFan.XGM) Max = 72;
return (200 * Math.Round((float)(MinRPM * 100 + (Max - MinRPM) * percentage) / 200)).ToString() + unit; return (200 * Math.Round((float)(MinRPM * 100 + (Max - MinRPM) * percentage) / 200)).ToString() + unit;
} }
@@ -594,11 +600,24 @@ namespace GHelper
} }
public void InitBoost() public void InitPowerPlan()
{ {
int boost = PowerNative.GetCPUBoost(); int boost = PowerNative.GetCPUBoost();
if (boost >= 0) if (boost >= 0)
comboBoost.SelectedIndex = Math.Min(boost, comboBoost.Items.Count - 1); comboBoost.SelectedIndex = Math.Min(boost, comboBoost.Items.Count - 1);
string powerMode = PowerNative.GetPowerMode();
comboPowerMode.SelectedValue = powerMode;
}
private void ComboPowerMode_Changed(object? sender, EventArgs e)
{
string powerMode = (string)comboPowerMode.SelectedValue;
PowerNative.SetPowerMode(powerMode);
if (PowerNative.GetDefaultPowerMode(Modes.GetCurrentBase()) != powerMode)
AppConfig.SetMode("powermode", powerMode);
} }
private void ComboBoost_Changed(object? sender, EventArgs e) private void ComboBoost_Changed(object? sender, EventArgs e)
@@ -871,6 +890,8 @@ namespace GHelper
modeControl.ResetPerformanceMode(); modeControl.ResetPerformanceMode();
InitPowerPlan();
if (Program.acpi.IsXGConnected()) AsusUSB.ResetXGM(); if (Program.acpi.IsXGConnected()) AsusUSB.ResetXGM();

View File

@@ -18,7 +18,7 @@
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing"">Blue</data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value> <value>[base64 mime encoded serialized .NET Framework object]</value>
</data> </data>

View File

@@ -46,7 +46,12 @@ namespace GHelper.Mode
public void ResetPerformanceMode() public void ResetPerformanceMode()
{ {
ResetRyzen(); ResetRyzen();
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, Modes.GetCurrentBase(), "Mode"); Program.acpi.DeviceSet(AsusACPI.PerformanceMode, Modes.GetCurrentBase(), "Mode");
// Default power mode
AppConfig.RemoveMode("powermode");
PowerNative.SetPowerMode(Modes.GetCurrentBase());
} }
public void SetPerformanceMode(int mode = -1, bool notify = false) public void SetPerformanceMode(int mode = -1, bool notify = false)
@@ -76,18 +81,21 @@ namespace GHelper.Mode
AutoFans(); AutoFans();
AutoPower(1000); AutoPower(1000);
if (AppConfig.Get("auto_apply_power_plan") != 0) // Power plan from config or defaulting to balanced
{
if (AppConfig.GetModeString("scheme") is not null) if (AppConfig.GetModeString("scheme") is not null)
PowerNative.SetPowerScheme(AppConfig.GetModeString("scheme")); PowerNative.SetPowerPlan(AppConfig.GetModeString("scheme"));
else else
PowerNative.SetPowerScheme(Modes.GetBase(mode)); PowerNative.SetBalancedPowerPlan();
}
// Windows power mode
if (AppConfig.GetModeString("powermode") is not null)
PowerNative.SetPowerMode(AppConfig.GetModeString("powermode"));
else
PowerNative.SetPowerMode(Modes.GetBase(mode));
// CPU Boost setting override
if (AppConfig.GetMode("auto_boost") != -1) if (AppConfig.GetMode("auto_boost") != -1)
{
PowerNative.SetCPUBoost(AppConfig.GetMode("auto_boost")); PowerNative.SetCPUBoost(AppConfig.GetMode("auto_boost"));
}
//BatteryControl.SetBatteryChargeLimit(); //BatteryControl.SetBatteryChargeLimit();

View File

@@ -51,7 +51,8 @@
"gpu_memory", "gpu_memory",
"auto_boost", "auto_boost",
"auto_apply", "auto_apply",
"auto_apply_power" "auto_apply_power",
"powermode"
}; };
foreach (string clean in cleanup) foreach (string clean in cleanup)

View File

@@ -72,11 +72,23 @@ namespace GHelper.Mode
[DllImportAttribute("powrprof.dll", EntryPoint = "PowerSetActiveOverlayScheme")] [DllImportAttribute("powrprof.dll", EntryPoint = "PowerSetActiveOverlayScheme")]
public static extern uint PowerSetActiveOverlayScheme(Guid OverlaySchemeGuid); public static extern uint PowerSetActiveOverlayScheme(Guid OverlaySchemeGuid);
const string POWER_SILENT = "961cc777-2547-4f9d-8174-7d86181b8a7a";
const string POWER_BALANCED = "00000000-0000-0000-0000-000000000000";
const string POWER_TURBO = "ded574b5-45a0-4f42-8737-46345c09c238";
const string POWER_BETTERPERFORMANCE = "ded574b5-45a0-4f42-8737-46345c09c238";
static List<string> overlays = new() {
POWER_BALANCED,
POWER_TURBO,
POWER_SILENT,
POWER_BETTERPERFORMANCE
};
public static Dictionary<string, string> powerModes = new Dictionary<string, string> public static Dictionary<string, string> powerModes = new Dictionary<string, string>
{ {
{ "961cc777-2547-4f9d-8174-7d86181b8a7a", "Best Power Efficiency" }, { POWER_SILENT, "Best Power Efficiency" },
{ "00000000-0000-0000-0000-000000000000", "Balanced" }, { POWER_BALANCED, "Balanced" },
{ "ded574b5-45a0-4f42-8737-46345c09c238", "Best Performance" }, { POWER_TURBO, "Best Performance" },
}; };
static Guid GetActiveScheme() static Guid GetActiveScheme()
{ {
@@ -127,61 +139,67 @@ namespace GHelper.Mode
Logger.WriteLine("Boost " + boost); Logger.WriteLine("Boost " + boost);
} }
public static void SetPowerScheme(string scheme) public static string GetPowerMode()
{ {
List<string> overlays = new() { PowerGetEffectiveOverlayScheme(out Guid activeScheme);
"00000000-0000-0000-0000-000000000000", return activeScheme.ToString();
"ded574b5-45a0-4f42-8737-46345c09c238", }
"961cc777-2547-4f9d-8174-7d86181b8a7a",
"3af9B8d9-7c97-431d-ad78-34a8bfea439f" public static void SetPowerMode(string scheme)
}; {
if (!overlays.Contains(scheme)) return;
Guid guidScheme = new Guid(scheme); Guid guidScheme = new Guid(scheme);
if (overlays.Contains(scheme))
{
Guid activeSchemeGuid = GetActiveScheme();
Guid balanced = new Guid("381b4222-f694-41f0-9685-ff5bb260df2e");
if (activeSchemeGuid != balanced && !AppConfig.Is("skip_power_plan"))
{
PowerSetActiveScheme(IntPtr.Zero, balanced);
Logger.WriteLine("Balanced Plan: " + balanced);
}
uint status = PowerGetEffectiveOverlayScheme(out Guid activeScheme); uint status = PowerGetEffectiveOverlayScheme(out Guid activeScheme);
if (status != 0 || activeScheme != guidScheme) if (status != 0 || activeScheme != guidScheme)
{ {
PowerSetActiveOverlayScheme(guidScheme); status = PowerSetActiveOverlayScheme(guidScheme);
Logger.WriteLine("Power Mode: " + scheme); Logger.WriteLine("Power Mode " + scheme + ":" + (status == 0 ? "OK" : status));
} }
} }
else
public static void SetBalancedPowerPlan()
{ {
PowerSetActiveScheme(IntPtr.Zero, guidScheme); Guid activeSchemeGuid = GetActiveScheme();
Logger.WriteLine("Power Plan: " + scheme); string balanced = "381b4222-f694-41f0-9685-ff5bb260df2e";
if (activeSchemeGuid.ToString() != balanced && !AppConfig.Is("skip_power_plan"))
{
SetPowerPlan(balanced);
}
} }
public static void SetPowerPlan(string scheme)
{
// Skipping power modes
if (overlays.Contains(scheme)) return;
Guid guidScheme = new Guid(scheme);
uint status = PowerSetActiveScheme(IntPtr.Zero, guidScheme);
Logger.WriteLine("Power Plan " + scheme + ":" + (status == 0 ? "OK" : status));
} }
public static void SetPowerScheme(int mode) public static string GetDefaultPowerMode(int mode)
{ {
switch (mode) switch (mode)
{ {
case 0: // balanced
SetPowerScheme("00000000-0000-0000-0000-000000000000");
break;
case 1: // turbo case 1: // turbo
SetPowerScheme("ded574b5-45a0-4f42-8737-46345c09c238"); return POWER_TURBO;
break;
case 2: //silent case 2: //silent
SetPowerScheme("961cc777-2547-4f9d-8174-7d86181b8a7a"); return POWER_SILENT;
break; default: // balanced
return POWER_BALANCED;
} }
} }
public static void SetPowerMode(int mode)
{
SetPowerMode(GetDefaultPowerMode(mode));
}
public static int GetLidAction(bool ac) public static int GetLidAction(bool ac)
{ {
Guid activeSchemeGuid = GetActiveScheme(); Guid activeSchemeGuid = GetActiveScheme();

View File

@@ -198,11 +198,13 @@ namespace GHelper
} }
private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e) private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
if (e.Mode == PowerModes.Suspend)
{ {
Logger.WriteLine("Power Mode:" + e.Mode.ToString()); Logger.WriteLine("Power Mode:" + e.Mode.ToString());
gpuControl.StandardModeFix();
}
if (e.Mode == PowerModes.Suspend) gpuControl.StandardModeFix();
if (SystemInformation.PowerStatus.PowerLineStatus == isPlugged) return; if (SystemInformation.PowerStatus.PowerLineStatus == isPlugged) return;
SetAutoModes(true); SetAutoModes(true);