checkbox, cpu temp, command line change

This commit is contained in:
Karmel0x
2023-11-07 21:33:02 +01:00
parent 584bcadd2a
commit bd0162e5f4
10 changed files with 250 additions and 69 deletions

View File

@@ -26,10 +26,10 @@ namespace AsusFanControl
AsusWinIO64.HealthyTable_SetFanTestMode((char)(value > 0 ? 0x01 : 0x00));
}
public void SetFanSpeed(int percent)
public void SetFanSpeed(int percent, byte fanIndex = 0)
{
var value = (byte)(percent / 100.0f * 255);
SetFanSpeed(value);
SetFanSpeed(value, fanIndex);
}
public void SetFansSpeed(byte value)
@@ -67,5 +67,15 @@ namespace AsusFanControl
return fanSpeeds;
}
public int HealthyTable_FanCounts()
{
return AsusWinIO64.HealthyTable_FanCounts();
}
public ulong Thermal_Read_Cpu_Temperature()
{
return AsusWinIO64.Thermal_Read_Cpu_Temperature();
}
}
}

View File

@@ -18,5 +18,7 @@ namespace AsusSystemAnalysis
public static extern void HealthyTable_SetFanTestMode(char mode);
[DllImport("AsusWinIO64.dll")]
public static extern void HealthyTable_SetFanPwmDuty(short duty);
[DllImport("AsusWinIO64.dll")]
public static extern ulong Thermal_Read_Cpu_Temperature();
}
}

View File

@@ -13,31 +13,77 @@ namespace AsusFanControl
{
if (args.Length < 1)
{
Console.WriteLine("Usage: AsusFanControl <fanSpeedPercent>");
return 1;
}
bool tryParse = int.TryParse(args[0], out int num);
if (!tryParse)
{
Console.WriteLine("Please enter a numeric value for fan speed.");
return 1;
}
if ((num != 0 && num < 40) || num > 99)
{
Console.WriteLine("Please enter a value for fan speed between 40 and 99 or 0 for turning off test mode.");
Console.WriteLine("If you want to skip these limits you need to change it in source code.");
Console.WriteLine("Usage: AsusFanControl <args>");
Console.WriteLine("\t--get-fan-speeds");
Console.WriteLine("\t--set-fan-speeds=0-100 (percent value, 0 for turning off test mode)");
Console.WriteLine("\t--get-fan-count");
Console.WriteLine("\t--get-fan-speed=fanId (comma separated)");
Console.WriteLine("\t--set-fan-speed=fanId:0-100 (comma separated, percent value, 0 for turning off test mode)");
Console.WriteLine("\t--get-cpu-temp");
return 1;
}
var asusControl = new AsusControl();
var fanSpeeds = asusControl.GetFanSpeeds();
Console.WriteLine($"Current fan speeds: {string.Join(" ", fanSpeeds)}");
foreach (var arg in args)
{
if (arg.StartsWith("--get-fan-speeds"))
{
var fanSpeeds = asusControl.GetFanSpeeds();
Console.WriteLine($"Current fan speeds: {string.Join(" ", fanSpeeds)} RPM");
}
asusControl.SetFansSpeed(num);
if (arg.StartsWith("--set-fan-speeds"))
{
var newSpeedStr = arg.Split('=')[1];
var newSpeed = int.Parse(newSpeedStr);
asusControl.SetFansSpeed(newSpeed);
if(newSpeed == 0)
Console.WriteLine("Test mode turned off");
else
Console.WriteLine($"New fan speeds: {newSpeed}%");
}
if (arg.StartsWith("--get-fan-speed="))
{
var fanIds = arg.Split('=')[1].Split(',');
foreach (var fanIdStr in fanIds)
{
var fanId = int.Parse(fanIdStr);
var fanSpeed = asusControl.GetFanSpeed((byte)fanId);
Console.WriteLine($"Current fan speed for fan {fanId}: {fanSpeed} RPM");
}
}
if (arg.StartsWith("--get-fan-count"))
{
var fanCount = asusControl.HealthyTable_FanCounts();
Console.WriteLine($"Fan count: {fanCount}");
}
if (arg.StartsWith("--set-fan-speed="))
{
var fanSettings = arg.Split('=')[1].Split(',');
foreach (var fanSetting in fanSettings)
{
var fanId = int.Parse(fanSetting.Split(':')[0]);
var fanSpeed = int.Parse(fanSetting.Split(':')[1]);
asusControl.SetFanSpeed(fanSpeed, (byte)fanId);
if (fanSpeed == 0)
Console.WriteLine($"Test mode turned off for fan {fanId}");
else
Console.WriteLine($"New fan speed for fan {fanId}: {fanSpeed}%");
}
}
if (arg.StartsWith("--get-cpu-temp"))
{
var cpuTemp = asusControl.Thermal_Read_Cpu_Temperature();
Console.WriteLine($"Current CPU temp: {cpuTemp}");
}
}
return 0;
}