diff --git a/Application Files/AsusFanControlGUI_1_0_0_0/AsusFanControl.exe.deploy b/Application Files/AsusFanControlGUI_1_0_0_0/AsusFanControl.exe.deploy
new file mode 100644
index 0000000..fcc6fbe
Binary files /dev/null and b/Application Files/AsusFanControlGUI_1_0_0_0/AsusFanControl.exe.deploy differ
diff --git a/Application Files/AsusFanControlGUI_1_0_0_0/AsusFanControlGUI.application b/Application Files/AsusFanControlGUI_1_0_0_0/AsusFanControlGUI.application
new file mode 100644
index 0000000..2519994
--- /dev/null
+++ b/Application Files/AsusFanControlGUI_1_0_0_0/AsusFanControlGUI.application
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ VkRZQnzKQEa58EWCSMCnhF2twvcxNIaA5jlw/pXOw4M=
+
+
+
+IlEmX+XiACqQR57sLOnsM6L/3C5obRyg3qA4sDiB7YY=o8YpfToFaricuRaoJMNZw1bu1yrysCHRjbgMf7CA5/0VQMXpwkIJJYvbgNry32OFDh+gUZRgo0qOa9TAsjuMqGXeNQ6Vt3zsi5IMRCDVRSxHyPQkO/6C5qCVwwZiWOCMN9Fl+8pI7PwddulgffSIu8kUgIHwBlPOkRYkQwFHuSI=5MKxtgy2OnwQkhPWJIUe+WAonYu1QrYEI1GHlcONac2hHNnHXm04iEy76UikGsXLc13KX90AH5VmNl0Jt/hRb9pqb6mC9Hd+jzov5G8TDC77HHtJO81G91vT1CfMD6JZekbTCH5tE4vGk8bXiaMB+XS0cMVLA12tu8x3KatNQpk=AQABCN=LAPTOP-IU9A729Q\bow33pse2i08O+Tm2DU9lNWKb8jxz8D3uiNRp0At8cJy+9bY=oQSz0KTHddVr48+OepgcQXcfLZ496ypQdRFAyWvx+ms1tUi57UgOUggILmnUq0ltplFYnaUt6j4g78CIKPTiWCQy7T/WExnmHz84ywoStLHbk6uvLtYQzHyiDnf/E8CgdMGko+uwyNhNOSSjjY67vSvTnNUBNgRrr56JR7fDl4w=5MKxtgy2OnwQkhPWJIUe+WAonYu1QrYEI1GHlcONac2hHNnHXm04iEy76UikGsXLc13KX90AH5VmNl0Jt/hRb9pqb6mC9Hd+jzov5G8TDC77HHtJO81G91vT1CfMD6JZekbTCH5tE4vGk8bXiaMB+XS0cMVLA12tu8x3KatNQpk=AQABMIIB7TCCAVagAwIBAgIQWy5fl7XivKNF8WyXgF7H9DANBgkqhkiG9w0BAQsFADA1MTMwMQYDVQQDHioATABBAFAAVABPAFAALQBJAFUAOQBBADcAMgA5AFEAXABiAG8AdwAzADMwHhcNMjQwNTE4MDUzMTIxWhcNMjUwNTE4MTEzMTIxWjA1MTMwMQYDVQQDHioATABBAFAAVABPAFAALQBJAFUAOQBBADcAMgA5AFEAXABiAG8AdwAzADMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOTCsbYMtjp8EJIT1iSFHvlgKJ2LtUK2BCNRh5XDjWnNoRzZx15tOIhMu+lIpBrFy3Ndyl/dAB+VZjZdCbf4UW/aam+pgvR3fo86L+RvEwwu+xx7STvNRvdb09QnzA+iWXpG0wh+bROLxpPG14mjAfl0tHDFSwNdrbvMdymrTUKZAgMBAAEwDQYJKoZIhvcNAQELBQADgYEAY6EwQVMqSprcsUwrU+DB5jz0aYLWX6iD0Cuq2r+SPbAXaEkPzUOypV155rwOGMeh0jZKF4Jc5EgiYh1njyxQHee4T16pi0uoQ7fQHQQ+MnfoO/wHrG2/yoi6fHbpgMQKz3dQ1UfZkoV2QZgHu9xJAMdAg9QmIJYDsjvZWChIYPw=
\ No newline at end of file
diff --git a/Application Files/AsusFanControlGUI_1_0_0_0/AsusFanControlGUI.exe.config.deploy b/Application Files/AsusFanControlGUI_1_0_0_0/AsusFanControlGUI.exe.config.deploy
new file mode 100644
index 0000000..5403b3c
--- /dev/null
+++ b/Application Files/AsusFanControlGUI_1_0_0_0/AsusFanControlGUI.exe.config.deploy
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 90
+
+
+ True
+
+
+ True
+
+
+
+
\ No newline at end of file
diff --git a/Application Files/AsusFanControlGUI_1_0_0_0/AsusFanControlGUI.exe.deploy b/Application Files/AsusFanControlGUI_1_0_0_0/AsusFanControlGUI.exe.deploy
new file mode 100644
index 0000000..ab26f59
Binary files /dev/null and b/Application Files/AsusFanControlGUI_1_0_0_0/AsusFanControlGUI.exe.deploy differ
diff --git a/Application Files/AsusFanControlGUI_1_0_0_0/AsusFanControlGUI.exe.manifest b/Application Files/AsusFanControlGUI_1_0_0_0/AsusFanControlGUI.exe.manifest
new file mode 100644
index 0000000..594a38d
--- /dev/null
+++ b/Application Files/AsusFanControlGUI_1_0_0_0/AsusFanControlGUI.exe.manifest
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FqD0p9nxsDK7WrtWEpMKmKxGkVZOX7mhBSS6lLiRHv4=
+
+
+
+
+
+
+
+
+
+
+
+ shphuvPjl0LqLcE6eGOcOhm27GlVvrWTzu7aZv0u2No=
+
+
+
+
+
+
+
+
+
+ xzkEIINUne4CANLFpsrdbpDMwHsfvt56VutYVsDnnFA=
+
+
+
+
+
+
+
+
+ AGoE/lNX3bWI7MYm49XrYQ1clZaPz8GSZmIatT5AySI=
+
+
+58vzrrWfF/f/ZzVtfc8J+Ik/tBmhZ/LslB3BaqZzp5o=gBGqEmUWJ8hV8Se0gquUg48FAlug3VPGbQdos/GbbV8BfxzSUl2W9s28ZgDdZ3e3WHnRkNXvWK9JgU+wdVFqOgdgPJiY4cf3gMFYDCzLef6yHXlR4mTCEY6d+R8A8jlVYjkTkBRsAmJ3HMewQStpInf7Ica0HeEMJAjkHZE+S6c=5MKxtgy2OnwQkhPWJIUe+WAonYu1QrYEI1GHlcONac2hHNnHXm04iEy76UikGsXLc13KX90AH5VmNl0Jt/hRb9pqb6mC9Hd+jzov5G8TDC77HHtJO81G91vT1CfMD6JZekbTCH5tE4vGk8bXiaMB+XS0cMVLA12tu8x3KatNQpk=AQABCN=LAPTOP-IU9A729Q\bow33SQjkLc0bSvtTDP63aP0aWLpD3Mi9Mv4JyxTtM8rSOo4=u1eQvSEGiTnIFmdhQqXG9V+AKxUTrpupAIs5WCywE29Bc5VyH7NAWa2G1UHsRROSqhwj/ObXfk5NIWEU6QV7UoOtmu70o2ZRi/HcGmMM6fxWBGbeB31hk4SVC74pkgj7ty1W0xN+IeLS1sGnu2dS4q0VGfuAON5fcDCgG0yq8W8=5MKxtgy2OnwQkhPWJIUe+WAonYu1QrYEI1GHlcONac2hHNnHXm04iEy76UikGsXLc13KX90AH5VmNl0Jt/hRb9pqb6mC9Hd+jzov5G8TDC77HHtJO81G91vT1CfMD6JZekbTCH5tE4vGk8bXiaMB+XS0cMVLA12tu8x3KatNQpk=AQABMIIB7TCCAVagAwIBAgIQWy5fl7XivKNF8WyXgF7H9DANBgkqhkiG9w0BAQsFADA1MTMwMQYDVQQDHioATABBAFAAVABPAFAALQBJAFUAOQBBADcAMgA5AFEAXABiAG8AdwAzADMwHhcNMjQwNTE4MDUzMTIxWhcNMjUwNTE4MTEzMTIxWjA1MTMwMQYDVQQDHioATABBAFAAVABPAFAALQBJAFUAOQBBADcAMgA5AFEAXABiAG8AdwAzADMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOTCsbYMtjp8EJIT1iSFHvlgKJ2LtUK2BCNRh5XDjWnNoRzZx15tOIhMu+lIpBrFy3Ndyl/dAB+VZjZdCbf4UW/aam+pgvR3fo86L+RvEwwu+xx7STvNRvdb09QnzA+iWXpG0wh+bROLxpPG14mjAfl0tHDFSwNdrbvMdymrTUKZAgMBAAEwDQYJKoZIhvcNAQELBQADgYEAY6EwQVMqSprcsUwrU+DB5jz0aYLWX6iD0Cuq2r+SPbAXaEkPzUOypV155rwOGMeh0jZKF4Jc5EgiYh1njyxQHee4T16pi0uoQ7fQHQQ+MnfoO/wHrG2/yoi6fHbpgMQKz3dQ1UfZkoV2QZgHu9xJAMdAg9QmIJYDsjvZWChIYPw=
\ No newline at end of file
diff --git a/Application Files/AsusFanControlGUI_1_0_0_0/propeller.ico.deploy b/Application Files/AsusFanControlGUI_1_0_0_0/propeller.ico.deploy
new file mode 100644
index 0000000..9800eff
Binary files /dev/null and b/Application Files/AsusFanControlGUI_1_0_0_0/propeller.ico.deploy differ
diff --git a/AsusFanControlGUI.application b/AsusFanControlGUI.application
new file mode 100644
index 0000000..2519994
--- /dev/null
+++ b/AsusFanControlGUI.application
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ VkRZQnzKQEa58EWCSMCnhF2twvcxNIaA5jlw/pXOw4M=
+
+
+
+IlEmX+XiACqQR57sLOnsM6L/3C5obRyg3qA4sDiB7YY=o8YpfToFaricuRaoJMNZw1bu1yrysCHRjbgMf7CA5/0VQMXpwkIJJYvbgNry32OFDh+gUZRgo0qOa9TAsjuMqGXeNQ6Vt3zsi5IMRCDVRSxHyPQkO/6C5qCVwwZiWOCMN9Fl+8pI7PwddulgffSIu8kUgIHwBlPOkRYkQwFHuSI=5MKxtgy2OnwQkhPWJIUe+WAonYu1QrYEI1GHlcONac2hHNnHXm04iEy76UikGsXLc13KX90AH5VmNl0Jt/hRb9pqb6mC9Hd+jzov5G8TDC77HHtJO81G91vT1CfMD6JZekbTCH5tE4vGk8bXiaMB+XS0cMVLA12tu8x3KatNQpk=AQABCN=LAPTOP-IU9A729Q\bow33pse2i08O+Tm2DU9lNWKb8jxz8D3uiNRp0At8cJy+9bY=oQSz0KTHddVr48+OepgcQXcfLZ496ypQdRFAyWvx+ms1tUi57UgOUggILmnUq0ltplFYnaUt6j4g78CIKPTiWCQy7T/WExnmHz84ywoStLHbk6uvLtYQzHyiDnf/E8CgdMGko+uwyNhNOSSjjY67vSvTnNUBNgRrr56JR7fDl4w=5MKxtgy2OnwQkhPWJIUe+WAonYu1QrYEI1GHlcONac2hHNnHXm04iEy76UikGsXLc13KX90AH5VmNl0Jt/hRb9pqb6mC9Hd+jzov5G8TDC77HHtJO81G91vT1CfMD6JZekbTCH5tE4vGk8bXiaMB+XS0cMVLA12tu8x3KatNQpk=AQABMIIB7TCCAVagAwIBAgIQWy5fl7XivKNF8WyXgF7H9DANBgkqhkiG9w0BAQsFADA1MTMwMQYDVQQDHioATABBAFAAVABPAFAALQBJAFUAOQBBADcAMgA5AFEAXABiAG8AdwAzADMwHhcNMjQwNTE4MDUzMTIxWhcNMjUwNTE4MTEzMTIxWjA1MTMwMQYDVQQDHioATABBAFAAVABPAFAALQBJAFUAOQBBADcAMgA5AFEAXABiAG8AdwAzADMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOTCsbYMtjp8EJIT1iSFHvlgKJ2LtUK2BCNRh5XDjWnNoRzZx15tOIhMu+lIpBrFy3Ndyl/dAB+VZjZdCbf4UW/aam+pgvR3fo86L+RvEwwu+xx7STvNRvdb09QnzA+iWXpG0wh+bROLxpPG14mjAfl0tHDFSwNdrbvMdymrTUKZAgMBAAEwDQYJKoZIhvcNAQELBQADgYEAY6EwQVMqSprcsUwrU+DB5jz0aYLWX6iD0Cuq2r+SPbAXaEkPzUOypV155rwOGMeh0jZKF4Jc5EgiYh1njyxQHee4T16pi0uoQ7fQHQQ+MnfoO/wHrG2/yoi6fHbpgMQKz3dQ1UfZkoV2QZgHu9xJAMdAg9QmIJYDsjvZWChIYPw=
\ No newline at end of file
diff --git a/AsusFanControlGUI/AsusFanControlGUI.csproj b/AsusFanControlGUI/AsusFanControlGUI.csproj
index aa68de8..896cf4f 100644
--- a/AsusFanControlGUI/AsusFanControlGUI.csproj
+++ b/AsusFanControlGUI/AsusFanControlGUI.csproj
@@ -12,6 +12,22 @@
512
true
true
+ false
+ C:\Users\bow33\Documents\GitHub\AsusFanControlEnhanced\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 1
+ 1.0.0.%2a
+ false
+ true
+ true
AnyCPU
@@ -55,6 +71,18 @@
propeller.ico
+
+ 3896F9A71C1385218E0E436CCCE1201230675364
+
+
+ AsusFanControlGUI_TemporaryKey.pfx
+
+
+ true
+
+
+ true
+
@@ -89,6 +117,7 @@
True
Resources.resx
+
SettingsSingleFileGenerator
Settings.Designer.cs
@@ -111,5 +140,17 @@
+
+
+ False
+ Microsoft .NET Framework 4.7.2 %28x86 and x64%29
+ true
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
\ No newline at end of file
diff --git a/AsusFanControlGUI/Form1.Designer.cs b/AsusFanControlGUI/Form1.Designer.cs
index 7f0f2fd..764bc85 100644
--- a/AsusFanControlGUI/Form1.Designer.cs
+++ b/AsusFanControlGUI/Form1.Designer.cs
@@ -35,7 +35,6 @@
this.label2 = new System.Windows.Forms.Label();
this.button1 = new System.Windows.Forms.Button();
this.labelRPM = new System.Windows.Forms.Label();
- this.checkBoxTurnOn = new System.Windows.Forms.CheckBox();
this.labelCPUTemp = new System.Windows.Forms.Label();
this.button2 = new System.Windows.Forms.Button();
this.label4 = new System.Windows.Forms.Label();
@@ -44,16 +43,24 @@
this.toolStripMenuItemTurnOffControlOnExit = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItemForbidUnsafeSettings = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItemCheckForUpdates = new System.Windows.Forms.ToolStripMenuItem();
+ this.label5 = new System.Windows.Forms.Label();
+ this.pictureBoxFanCurve = new System.Windows.Forms.PictureBox();
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.fanControl = new System.Windows.Forms.RadioButton();
+ this.fanCurveControl = new System.Windows.Forms.RadioButton();
((System.ComponentModel.ISupportInitialize)(this.trackBarFanSpeed)).BeginInit();
this.menuStrip1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBoxFanCurve)).BeginInit();
+ this.groupBox1.SuspendLayout();
this.SuspendLayout();
//
// trackBarFanSpeed
//
- this.trackBarFanSpeed.Location = new System.Drawing.Point(12, 62);
+ this.trackBarFanSpeed.Location = new System.Drawing.Point(17, 54);
+ this.trackBarFanSpeed.Margin = new System.Windows.Forms.Padding(4);
this.trackBarFanSpeed.Maximum = 100;
this.trackBarFanSpeed.Name = "trackBarFanSpeed";
- this.trackBarFanSpeed.Size = new System.Drawing.Size(300, 45);
+ this.trackBarFanSpeed.Size = new System.Drawing.Size(400, 56);
this.trackBarFanSpeed.TabIndex = 0;
this.trackBarFanSpeed.Value = 100;
this.trackBarFanSpeed.KeyUp += new System.Windows.Forms.KeyEventHandler(this.trackBarFanSpeed_KeyUp);
@@ -62,35 +69,39 @@
// label1
//
this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(12, 110);
+ this.label1.Location = new System.Drawing.Point(13, 401);
+ this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(73, 13);
+ this.label1.Size = new System.Drawing.Size(88, 16);
this.label1.TabIndex = 1;
this.label1.Text = "Current value:";
//
// labelValue
//
this.labelValue.AutoSize = true;
- this.labelValue.Location = new System.Drawing.Point(91, 110);
+ this.labelValue.Location = new System.Drawing.Point(118, 401);
+ this.labelValue.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.labelValue.Name = "labelValue";
- this.labelValue.Size = new System.Drawing.Size(10, 13);
+ this.labelValue.Size = new System.Drawing.Size(11, 16);
this.labelValue.TabIndex = 2;
this.labelValue.Text = "-";
//
// label2
//
this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(40, 139);
+ this.label2.Location = new System.Drawing.Point(50, 437);
+ this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(71, 13);
+ this.label2.Size = new System.Drawing.Size(85, 16);
this.label2.TabIndex = 3;
this.label2.Text = "Current RPM:";
//
// button1
//
- this.button1.Location = new System.Drawing.Point(12, 134);
+ this.button1.Location = new System.Drawing.Point(13, 431);
+ this.button1.Margin = new System.Windows.Forms.Padding(4);
this.button1.Name = "button1";
- this.button1.Size = new System.Drawing.Size(22, 23);
+ this.button1.Size = new System.Drawing.Size(29, 28);
this.button1.TabIndex = 4;
this.button1.Text = "↻";
this.button1.UseVisualStyleBackColor = true;
@@ -99,37 +110,29 @@
// labelRPM
//
this.labelRPM.AutoSize = true;
- this.labelRPM.Location = new System.Drawing.Point(117, 139);
+ this.labelRPM.Location = new System.Drawing.Point(153, 437);
+ this.labelRPM.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.labelRPM.Name = "labelRPM";
- this.labelRPM.Size = new System.Drawing.Size(10, 13);
+ this.labelRPM.Size = new System.Drawing.Size(11, 16);
this.labelRPM.TabIndex = 5;
this.labelRPM.Text = "-";
//
- // checkBoxTurnOn
- //
- this.checkBoxTurnOn.AutoSize = true;
- this.checkBoxTurnOn.Location = new System.Drawing.Point(12, 37);
- this.checkBoxTurnOn.Name = "checkBoxTurnOn";
- this.checkBoxTurnOn.Size = new System.Drawing.Size(116, 17);
- this.checkBoxTurnOn.TabIndex = 6;
- this.checkBoxTurnOn.Text = "Turn on fan control";
- this.checkBoxTurnOn.UseVisualStyleBackColor = true;
- this.checkBoxTurnOn.CheckedChanged += new System.EventHandler(this.checkBoxTurnOn_CheckedChanged);
- //
// labelCPUTemp
//
this.labelCPUTemp.AutoSize = true;
- this.labelCPUTemp.Location = new System.Drawing.Point(141, 168);
+ this.labelCPUTemp.Location = new System.Drawing.Point(185, 473);
+ this.labelCPUTemp.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.labelCPUTemp.Name = "labelCPUTemp";
- this.labelCPUTemp.Size = new System.Drawing.Size(10, 13);
+ this.labelCPUTemp.Size = new System.Drawing.Size(11, 16);
this.labelCPUTemp.TabIndex = 9;
this.labelCPUTemp.Text = "-";
//
// button2
//
- this.button2.Location = new System.Drawing.Point(12, 163);
+ this.button2.Location = new System.Drawing.Point(13, 467);
+ this.button2.Margin = new System.Windows.Forms.Padding(4);
this.button2.Name = "button2";
- this.button2.Size = new System.Drawing.Size(22, 23);
+ this.button2.Size = new System.Drawing.Size(29, 28);
this.button2.TabIndex = 8;
this.button2.Text = "↻";
this.button2.UseVisualStyleBackColor = true;
@@ -138,20 +141,22 @@
// label4
//
this.label4.AutoSize = true;
- this.label4.Location = new System.Drawing.Point(40, 168);
+ this.label4.Location = new System.Drawing.Point(50, 473);
+ this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label4.Name = "label4";
- this.label4.Size = new System.Drawing.Size(95, 13);
+ this.label4.Size = new System.Drawing.Size(116, 16);
this.label4.TabIndex = 7;
this.label4.Text = "Current CPU temp:";
//
// menuStrip1
//
+ this.menuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripMenuItem1,
this.toolStripMenuItemCheckForUpdates});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
- this.menuStrip1.Size = new System.Drawing.Size(324, 24);
+ this.menuStrip1.Size = new System.Drawing.Size(510, 28);
this.menuStrip1.TabIndex = 10;
this.menuStrip1.Text = "menuStrip1";
//
@@ -161,14 +166,14 @@
this.toolStripMenuItemTurnOffControlOnExit,
this.toolStripMenuItemForbidUnsafeSettings});
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
- this.toolStripMenuItem1.Size = new System.Drawing.Size(72, 20);
+ this.toolStripMenuItem1.Size = new System.Drawing.Size(89, 24);
this.toolStripMenuItem1.Text = "Advanced";
//
// toolStripMenuItemTurnOffControlOnExit
//
this.toolStripMenuItemTurnOffControlOnExit.CheckOnClick = true;
this.toolStripMenuItemTurnOffControlOnExit.Name = "toolStripMenuItemTurnOffControlOnExit";
- this.toolStripMenuItemTurnOffControlOnExit.Size = new System.Drawing.Size(196, 22);
+ this.toolStripMenuItemTurnOffControlOnExit.Size = new System.Drawing.Size(244, 26);
this.toolStripMenuItemTurnOffControlOnExit.Text = "Turn off control on exit";
this.toolStripMenuItemTurnOffControlOnExit.CheckedChanged += new System.EventHandler(this.toolStripMenuItemTurnOffControlOnExit_CheckedChanged);
//
@@ -176,40 +181,103 @@
//
this.toolStripMenuItemForbidUnsafeSettings.CheckOnClick = true;
this.toolStripMenuItemForbidUnsafeSettings.Name = "toolStripMenuItemForbidUnsafeSettings";
- this.toolStripMenuItemForbidUnsafeSettings.Size = new System.Drawing.Size(196, 22);
+ this.toolStripMenuItemForbidUnsafeSettings.Size = new System.Drawing.Size(244, 26);
this.toolStripMenuItemForbidUnsafeSettings.Text = "Forbid unsafe settings";
this.toolStripMenuItemForbidUnsafeSettings.CheckedChanged += new System.EventHandler(this.toolStripMenuItemForbidUnsafeSettings_CheckedChanged);
//
// toolStripMenuItemCheckForUpdates
//
this.toolStripMenuItemCheckForUpdates.Name = "toolStripMenuItemCheckForUpdates";
- this.toolStripMenuItemCheckForUpdates.Size = new System.Drawing.Size(115, 20);
+ this.toolStripMenuItemCheckForUpdates.Size = new System.Drawing.Size(142, 24);
this.toolStripMenuItemCheckForUpdates.Text = "Check for updates";
this.toolStripMenuItemCheckForUpdates.Click += new System.EventHandler(this.toolStripMenuItemCheckForUpdates_Click);
//
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Location = new System.Drawing.Point(341, 28);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(76, 16);
+ this.label5.TabIndex = 13;
+ this.label5.Text = "PWM value";
+ //
+ // pictureBoxFanCurve
+ //
+ this.pictureBoxFanCurve.Location = new System.Drawing.Point(13, 184);
+ this.pictureBoxFanCurve.Name = "pictureBoxFanCurve";
+ this.pictureBoxFanCurve.Size = new System.Drawing.Size(477, 203);
+ this.pictureBoxFanCurve.TabIndex = 0;
+ this.pictureBoxFanCurve.TabStop = false;
+ this.pictureBoxFanCurve.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBoxFanCurve_Paint);
+ this.pictureBoxFanCurve.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pictureBoxFanCurve_MouseClick);
+ this.pictureBoxFanCurve.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.pictureBoxFanCurve_MouseDoubleClick);
+ this.pictureBoxFanCurve.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pictureBoxFanCurve_MouseDown);
+ this.pictureBoxFanCurve.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBoxFanCurve_MouseMove);
+ this.pictureBoxFanCurve.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pictureBoxFanCurve_MouseUp);
+ //
+ // groupBox1
+ //
+ this.groupBox1.Controls.Add(this.fanControl);
+ this.groupBox1.Controls.Add(this.fanCurveControl);
+ this.groupBox1.Controls.Add(this.trackBarFanSpeed);
+ this.groupBox1.Controls.Add(this.label5);
+ this.groupBox1.Location = new System.Drawing.Point(12, 32);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Size = new System.Drawing.Size(486, 146);
+ this.groupBox1.TabIndex = 14;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "groupBox1";
+ //
+ // fanControl
+ //
+ this.fanControl.AutoSize = true;
+ this.fanControl.Location = new System.Drawing.Point(20, 27);
+ this.fanControl.Name = "fanControl";
+ this.fanControl.Size = new System.Drawing.Size(137, 20);
+ this.fanControl.TabIndex = 15;
+ this.fanControl.Text = "Turn on fan control";
+ this.fanControl.UseVisualStyleBackColor = true;
+ this.fanControl.CheckedChanged += new System.EventHandler(this.radioButton2_CheckedChanged);
+ //
+ // fanCurveControl
+ //
+ this.fanCurveControl.AutoSize = true;
+ this.fanCurveControl.Location = new System.Drawing.Point(20, 108);
+ this.fanCurveControl.Name = "fanCurveControl";
+ this.fanCurveControl.Size = new System.Drawing.Size(130, 20);
+ this.fanCurveControl.TabIndex = 14;
+ this.fanCurveControl.Text = "Turn on fan curve";
+ this.fanCurveControl.UseVisualStyleBackColor = true;
+ this.fanCurveControl.CheckedChanged += new System.EventHandler(this.fanCurve_CheckedChanged);
+ //
// Form1
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(324, 198);
+ this.ClientSize = new System.Drawing.Size(510, 523);
+ this.Controls.Add(this.pictureBoxFanCurve);
this.Controls.Add(this.labelCPUTemp);
this.Controls.Add(this.button2);
this.Controls.Add(this.label4);
- this.Controls.Add(this.checkBoxTurnOn);
this.Controls.Add(this.labelRPM);
this.Controls.Add(this.button1);
this.Controls.Add(this.label2);
this.Controls.Add(this.labelValue);
this.Controls.Add(this.label1);
- this.Controls.Add(this.trackBarFanSpeed);
this.Controls.Add(this.menuStrip1);
+ this.Controls.Add(this.groupBox1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MainMenuStrip = this.menuStrip1;
+ this.Margin = new System.Windows.Forms.Padding(4);
this.Name = "Form1";
this.Text = "Asus Fan Control";
+ this.Load += new System.EventHandler(this.Form1_Load);
((System.ComponentModel.ISupportInitialize)(this.trackBarFanSpeed)).EndInit();
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBoxFanCurve)).EndInit();
+ this.groupBox1.ResumeLayout(false);
+ this.groupBox1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
@@ -223,7 +291,6 @@
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label labelRPM;
- private System.Windows.Forms.CheckBox checkBoxTurnOn;
private System.Windows.Forms.Label labelCPUTemp;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Label label4;
@@ -232,6 +299,11 @@
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemTurnOffControlOnExit;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemForbidUnsafeSettings;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemCheckForUpdates;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.PictureBox pictureBoxFanCurve;
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.RadioButton fanCurveControl;
+ private System.Windows.Forms.RadioButton fanControl;
}
}
diff --git a/AsusFanControlGUI/Form1.cs b/AsusFanControlGUI/Form1.cs
index cb742bd..d4eeabd 100644
--- a/AsusFanControlGUI/Form1.cs
+++ b/AsusFanControlGUI/Form1.cs
@@ -14,6 +14,7 @@ namespace AsusFanControlGUI
{
public partial class Form1 : Form
{
+ private System.Windows.Forms.Timer timer;
AsusControl asusControl = new AsusControl();
int fanSpeed = 0;
@@ -24,7 +25,25 @@ namespace AsusFanControlGUI
toolStripMenuItemTurnOffControlOnExit.Checked = Properties.Settings.Default.turnOffControlOnExit;
toolStripMenuItemForbidUnsafeSettings.Checked = Properties.Settings.Default.forbidUnsafeSettings;
- trackBarFanSpeed.Value = Properties.Settings.Default.fanSpeed;
+ //trackBarFanSpeed.Value = Properties.Settings.Default.fanSpeed;
+ }
+
+ private void Form1_Load(object sender, EventArgs e)
+ {
+ // Create and start the timer
+ timer = new System.Windows.Forms.Timer();
+ timer.Interval = 1000; // 1000 milliseconds = 1 second
+ timer.Tick += Timer_Tick;
+ timer.Start();
+ }
+
+ private void Timer_Tick(object sender, EventArgs e)
+ {
+ // Update fan speeds
+ labelRPM.Text = string.Join(" ", asusControl.GetFanSpeeds());
+
+ // Update CPU temperature
+ labelCPUTemp.Text = $"{asusControl.Thermal_Read_Cpu_Temperature()}";
}
private void OnProcessExit(object sender, EventArgs e)
@@ -50,13 +69,12 @@ namespace AsusFanControlGUI
System.Diagnostics.Process.Start("https://github.com/Karmel0x/AsusFanControl/releases");
}
- private void setFanSpeed()
+ private void setFanSpeed(int value, bool isTurnedOn)
{
- var value = trackBarFanSpeed.Value;
Properties.Settings.Default.fanSpeed = value;
Properties.Settings.Default.Save();
- if (!checkBoxTurnOn.Checked)
+ if (!isTurnedOn)
value = 0;
if (value == 0)
@@ -68,15 +86,9 @@ namespace AsusFanControlGUI
return;
fanSpeed = value;
-
asusControl.SetFanSpeeds(value);
}
- private void checkBoxTurnOn_CheckedChanged(object sender, EventArgs e)
- {
- setFanSpeed();
- }
-
private void trackBarFanSpeed_MouseCaptureChanged(object sender, EventArgs e)
{
if (Properties.Settings.Default.forbidUnsafeSettings)
@@ -87,7 +99,7 @@ namespace AsusFanControlGUI
trackBarFanSpeed.Value = 99;
}
- setFanSpeed();
+ setFanSpeed(trackBarFanSpeed.Value, fanControl.Checked);
}
private void trackBarFanSpeed_KeyUp(object sender, KeyEventArgs e)
@@ -107,5 +119,320 @@ namespace AsusFanControlGUI
{
labelCPUTemp.Text = $"{asusControl.Thermal_Read_Cpu_Temperature()}";
}
+
+
+
+
+ // My Code:
+ private Point maxPoint;
+ private Point minPoint;
+
+ private void pictureBoxFanCurve_Paint(object sender, PaintEventArgs e)
+ {
+ // Draw the fan curve graph
+ Graphics g = e.Graphics;
+
+ // Set up the graph dimensions
+ int padding = 20;
+ int graphWidth = pictureBoxFanCurve.Width - 2 * padding;
+ int graphHeight = pictureBoxFanCurve.Height - 2 * padding;
+
+ // Draw the temperature axis and labels
+ int tempMin = 30;
+ int tempMax = 100;
+ int tempInterval = 10;
+
+ g.DrawLine(Pens.Black, padding, pictureBoxFanCurve.Height - padding, pictureBoxFanCurve.Width - padding, pictureBoxFanCurve.Height - padding);
+
+ for (int temp = tempMin; temp <= tempMax; temp += tempInterval)
+ {
+ int x = padding + (temp - tempMin) * graphWidth / (tempMax - tempMin);
+ g.DrawLine(Pens.Black, x, pictureBoxFanCurve.Height - padding - 5, x, pictureBoxFanCurve.Height - padding + 5);
+ g.DrawString(temp.ToString(), DefaultFont, Brushes.Black, x - 10, pictureBoxFanCurve.Height - padding + 10);
+ }
+
+ g.DrawString("Temperature (°C)", DefaultFont, Brushes.Black, pictureBoxFanCurve.Width / 2 - 40, pictureBoxFanCurve.Height - padding + 20);
+
+ // Draw the fan speed axis and labels
+ int speedMin = 0;
+ int speedMax = 100;
+ int speedInterval = 20;
+
+ g.DrawLine(Pens.Black, padding, padding, padding, pictureBoxFanCurve.Height - padding);
+
+ for (int speed = speedMin; speed <= speedMax; speed += speedInterval)
+ {
+ int y = pictureBoxFanCurve.Height - padding - speed * graphHeight / speedMax;
+ g.DrawLine(Pens.Black, padding - 5, y, padding + 5, y);
+ g.DrawString(speed.ToString(), DefaultFont, Brushes.Black, 5, y - 10);
+ }
+
+ g.DrawString("Fan Speed (%)", DefaultFont, Brushes.Black, padding - 10, padding - 20, new StringFormat(StringFormatFlags.DirectionVertical));
+
+ // Draw the fan curve points
+ foreach (Point point in fanCurvePoints.Values)
+ {
+ int x = padding + (point.X - tempMin) * graphWidth / (tempMax - tempMin);
+ int y = pictureBoxFanCurve.Height - padding - point.Y * graphHeight / speedMax;
+ g.FillEllipse(Brushes.Green, x - 3, y - 3, 12, 12);
+ }
+
+ // Draw the maximum and minimum temperature points
+ int maxX = padding + (maxPoint.X - tempMin) * graphWidth / (tempMax - tempMin);
+ int maxY = pictureBoxFanCurve.Height - padding - maxPoint.Y * graphHeight / speedMax;
+ g.FillEllipse(Brushes.Red, maxX - 5, maxY - 5, 10, 10);
+
+ int minX = padding + (minPoint.X - tempMin) * graphWidth / (tempMax - tempMin);
+ int minY = pictureBoxFanCurve.Height - padding - minPoint.Y * graphHeight / speedMax;
+ g.FillEllipse(Brushes.Yellow, minX - 5, minY - 5, 10, 10);
+
+ // Draw lines connecting the fan curve points
+ if (fanCurvePoints.Count >= 2)
+ {
+ Point[] graphPoints = fanCurvePoints.Values
+ .OrderBy(p => p.X)
+ .Select(p => new Point(
+ padding + (p.X - tempMin) * graphWidth / (tempMax - tempMin),
+ pictureBoxFanCurve.Height - padding - p.Y * graphHeight / speedMax
+ ))
+ .ToArray();
+
+ using (Pen thickPen = new Pen(Color.Black, 3))
+ {
+ g.DrawLines(Pens.Black, graphPoints);
+ }
+ }
+ }
+
+ private void pictureBoxFanCurve_MouseDoubleClick(object sender, MouseEventArgs e)
+ {
+
+ // Set up the graph dimensions
+ int padding = 20;
+ int graphWidth = pictureBoxFanCurve.Width - 2 * padding;
+ int graphHeight = pictureBoxFanCurve.Height - 2 * padding;
+
+ // Define the temperature and fan speed ranges
+ int tempMin = 30;
+ int tempMax = 100;
+ int speedMin = 0;
+ int speedMax = 100;
+
+ // Convert the mouse coordinates to graph coordinates
+ int temperature = tempMin + (e.X - padding) * (tempMax - tempMin) / graphWidth;
+ int fanSpeed = speedMax - (e.Y - padding) * speedMax / graphHeight;
+
+ // Check if a point with the same y-axis already exists
+ if (fanCurvePoints.Values.Any(p => p.Y == fanSpeed))
+ {
+ return; // Do not add the new point
+ }
+
+ if (fanCurvePoints.Count >= 15)
+ {
+ MessageBox.Show("Maximum number of points reached.");
+ return;
+ }
+
+ // Generate a unique ID for the new point
+ int newID = fanCurvePoints.Count > 0 ? fanCurvePoints.Keys.Max() + 1 : 1;
+
+ // Add a new point to the fan curve
+ Point newPoint = new Point(temperature, fanSpeed);
+ fanCurvePoints[newID] = newPoint;
+
+ pictureBoxFanCurve.Invalidate(); // Redraw the graph
+ }
+
+ private int selectedPointId = 0;
+
+ private (int temperature, int fanSpeed) mousePosition(Point e)
+ {
+ // Set up the graph dimensions
+ int padding = 20;
+ int graphWidth = pictureBoxFanCurve.Width - 2 * padding;
+ int graphHeight = pictureBoxFanCurve.Height - 2 * padding;
+
+ // Define the temperature and fan speed ranges
+ int tempMin = 30;
+ int tempMax = 100;
+ int speedMin = 0;
+ int speedMax = 100;
+
+ // Convert the mouse coordinates to graph coordinates
+ int temperature = tempMin + (e.X - padding) * (tempMax - tempMin) / graphWidth;
+ int fanSpeed = speedMax - (e.Y - padding) * speedMax / graphHeight;
+
+ return (temperature, fanSpeed);
+ }
+
+
+ private void pictureBoxFanCurve_MouseClick(object sender, MouseEventArgs e)
+ {
+ if (e.Button == MouseButtons.Right)
+ {
+ (int temperature, int fanSpeed) = mousePosition(e.Location);
+
+ var nearestPoints = fanCurvePoints
+ .OrderBy(p => Distance(p.Value, new Point(temperature, fanSpeed)));
+
+ var reachablePoint = nearestPoints
+ .FirstOrDefault(p => Distance(p.Value, new Point(temperature, fanSpeed)) <= 20);
+
+ if (reachablePoint.Value != Point.Empty)
+ {
+ fanCurvePoints.Remove(reachablePoint.Key);
+ Console.WriteLine($"Point ID: {reachablePoint.Key} deleted.");
+ pictureBoxFanCurve.Invalidate();
+ }
+ }
+
+
+
+ }
+
+ private void pictureBoxFanCurve_MouseDown(object sender, MouseEventArgs e)
+ {
+ Console.Write("MouseDown: ");
+
+ if (e.Button == MouseButtons.Left)
+ {
+ Console.WriteLine(e.Button);
+
+ // Get mouse position
+ (int temperature, int fanSpeed) = mousePosition(e.Location);
+
+
+ var nearestPoints = fanCurvePoints
+ .OrderBy(p => Distance(p.Value, new Point(temperature, fanSpeed)));
+
+ var reachablePoint = nearestPoints
+ .FirstOrDefault(p => Distance(p.Value, new Point(temperature, fanSpeed)) <= 20);
+
+ if (reachablePoint.Value != Point.Empty)
+ {
+ selectedPointId = reachablePoint.Key;
+ Console.WriteLine($"Distance: {Distance(reachablePoint.Value, new Point(temperature, fanSpeed))}");
+ }
+ else
+ {
+ selectedPointId = 0;
+ }
+ }
+ }
+
+ private void pictureBoxFanCurve_MouseMove(object sender, MouseEventArgs e)
+ {
+ if (selectedPointId != 0)
+ {
+ // Console.Write("MouseMove, Key: ");
+
+ // Get mouse location on grid
+ (int temperature, int fanSpeed) = mousePosition(e.Location);
+ fanCurvePoints[selectedPointId] = new Point(temperature, fanSpeed);
+ pictureBoxFanCurve.Invalidate(); // Redraw the graph
+ }
+ }
+
+ private void pictureBoxFanCurve_MouseUp(object sender, MouseEventArgs e)
+ {
+ selectedPointId = 0;
+
+ // fanCurvePoints.ToList().ForEach(point => Console.Write($"ID: {point.Key}, X: {point.Value.X}, Y: {point.Value.Y}"));
+ // Console.WriteLine();
+ }
+
+ private double Distance(Point p1, Point p2)
+ {
+ int dx = p1.X - p2.X;
+ int dy = p1.Y - p2.Y;
+ return Math.Sqrt(dx * dx + dy * dy);
+ }
+
+ private Dictionary fanCurvePoints = new Dictionary();
+
+ private Timer fanCurveTimer; // Declare the timer as a class-level variable
+
+ bool isControlYeilded = false;
+ private void fanCurve_CheckedChanged(object sender, EventArgs e)
+ {
+ if (fanCurveControl.Checked)
+ {
+ // Start a timer to read the temperature and update the fan speed every 3 seconds
+ fanCurveTimer = new Timer();
+ fanCurveTimer.Interval = 1000; // 3 seconds
+ fanCurveTimer.Tick += (s, args) =>
+ {
+ // Read the current temperature
+ ulong currentTemp = asusControl.Thermal_Read_Cpu_Temperature(); // Implement the ReadTemperature method to get the current temperature
+
+ // Find the fan curve points that bracket the current temperature
+ KeyValuePair lowerPoint = fanCurvePoints.OrderByDescending(p => p.Value.X).FirstOrDefault(p => (ulong)p.Value.X <= currentTemp);
+ KeyValuePair upperPoint = fanCurvePoints.OrderBy(p => p.Value.X).FirstOrDefault(p => (ulong)p.Value.X >= currentTemp);
+
+ // Calculate the fan speed based on linear interpolation between the bracket points
+ int fanSpeed;
+ // Check if the current temperature is within the range of the fan curve points
+ if ((ulong)lowerPoint.Key == 0 || (ulong)upperPoint.Key == 0)
+ {
+ // Temperature is outside the range, yield control to the system
+ if (!isControlYeilded)
+ {
+ asusControl.SetFanSpeeds(0);
+ isControlYeilded = true;
+ }
+ }
+ else if (lowerPoint.Value.X == upperPoint.Value.X)
+ {
+ isControlYeilded = false;
+ fanSpeed = lowerPoint.Value.Y;
+ }
+ else
+ {
+ isControlYeilded = false;
+
+ double ratio = (currentTemp - (ulong)lowerPoint.Value.X) / (double)(upperPoint.Value.X - lowerPoint.Value.X);
+ fanSpeed = (int)(lowerPoint.Value.Y + (upperPoint.Value.Y - lowerPoint.Value.Y) * ratio);
+
+
+ // Apply hysteresis to prevent rapid fan speed changes
+ int hysteresis = 2; // Adjust the hysteresis value as needed
+ if (fanSpeed > lastFanSpeed + hysteresis || fanSpeed < lastFanSpeed - hysteresis)
+ {
+ // Update the fan speed
+ fanSpeed = Math.Max(1, Math.Min(100, fanSpeed));
+ setFanSpeed(fanSpeed, true); // Implement the SetFanSpeed method to control the fan speed
+ lastFanSpeed = fanSpeed;
+ }
+ }
+ };
+ fanCurveTimer.Start();
+ }
+ else
+ {
+ // Stop the timer when the fan curve is unchecked
+ if (fanCurveTimer != null)
+ {
+ fanCurveTimer.Stop();
+ fanCurveTimer.Dispose();
+ fanCurveTimer = null;
+ }
+ }
+ }
+
+ // Keep track of the last fan speed to apply hysteresis
+ private int lastFanSpeed = 0;
+
+ private void radioButton2_CheckedChanged(object sender, EventArgs e)
+ {
+ if (fanControl.Checked)
+ {
+ setFanSpeed(trackBarFanSpeed.Value, fanCurveControl.Checked);
+ }
+
+ }
+
+
}
+
}
diff --git a/setup.exe b/setup.exe
new file mode 100644
index 0000000..4ccf8b5
Binary files /dev/null and b/setup.exe differ