mirror of
https://github.com/ayufan/steam-deck-tools.git
synced 2025-12-06 07:12:01 +01:00
CommonHelpers: Vlv0100: Use Instance instead of static.
This commit is contained in:
parent
943cfd9aa5
commit
b47c5fa860
|
|
@ -78,9 +78,9 @@ namespace CommonHelpers
|
||||||
useKernelDrivers = value;
|
useKernelDrivers = value;
|
||||||
|
|
||||||
if (value)
|
if (value)
|
||||||
Vlv0100.Open();
|
Vlv0100.Instance.Open();
|
||||||
else
|
else
|
||||||
Vlv0100.Close();
|
Vlv0100.Instance.Close();
|
||||||
|
|
||||||
// CPU requires reading RyzenSMU
|
// CPU requires reading RyzenSMU
|
||||||
HardwareComputer.IsCpuEnabled = value;
|
HardwareComputer.IsCpuEnabled = value;
|
||||||
|
|
@ -140,13 +140,13 @@ namespace CommonHelpers
|
||||||
{
|
{
|
||||||
UseKernelDrivers = useKernelDrivers;
|
UseKernelDrivers = useKernelDrivers;
|
||||||
|
|
||||||
if (Vlv0100.IsOpen && !Vlv0100.IsSupported)
|
if (Vlv0100.Instance.IsOpen && !Vlv0100.Instance.IsSupported)
|
||||||
{
|
{
|
||||||
String message = "";
|
String message = "";
|
||||||
message += "Current device is not supported.\n";
|
message += "Current device is not supported.\n";
|
||||||
message += "FirmwareVersion: " + Vlv0100.FirmwareVersion.ToString("X") + "\n";
|
message += "FirmwareVersion: " + Vlv0100.Instance.FirmwareVersion.ToString("X") + "\n";
|
||||||
message += "BoardID: " + Vlv0100.BoardID.ToString("X") + "\n";
|
message += "BoardID: " + Vlv0100.Instance.BoardID.ToString("X") + "\n";
|
||||||
message += "PDCS: " + Vlv0100.PDCS.ToString("X") + "\n";
|
message += "PDCS: " + Vlv0100.Instance.PDCS.ToString("X") + "\n";
|
||||||
|
|
||||||
Fatal(title, message);
|
Fatal(title, message);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
namespace CommonHelpers
|
namespace CommonHelpers
|
||||||
{
|
{
|
||||||
public class Vlv0100
|
public class Vlv0100 : IDisposable
|
||||||
{
|
{
|
||||||
// Those addresses are taken from DSDT for VLV0100
|
// Those addresses are taken from DSDT for VLV0100
|
||||||
// and might change at any time with a BIOS update
|
// and might change at any time with a BIOS update
|
||||||
|
|
@ -49,28 +49,41 @@
|
||||||
new DeviceVersion() { Firmware = 0x1050, BoardID = 0x5, PDCS = 0 /* 0x2F */, BatteryTempLE = true }
|
new DeviceVersion() { Firmware = 0x1050, BoardID = 0x5, PDCS = 0 /* 0x2F */, BatteryTempLE = true }
|
||||||
};
|
};
|
||||||
|
|
||||||
private static InpOut? inpOut;
|
public static Vlv0100 Instance = new Vlv0100();
|
||||||
|
|
||||||
public static bool IsOpen
|
~Vlv0100()
|
||||||
|
{
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private InpOut? inpOut;
|
||||||
|
|
||||||
|
public bool IsOpen
|
||||||
{
|
{
|
||||||
get { return inpOut is not null; }
|
get { return inpOut is not null; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DeviceVersion? SupportedDevice
|
public DeviceVersion? SupportedDevice
|
||||||
{
|
{
|
||||||
get { return deviceVersions.First((v) => v.IsSupported(FirmwareVersion, BoardID, PDCS)); }
|
get { return deviceVersions.FirstOrDefault((v) => v.IsSupported(FirmwareVersion, BoardID, PDCS)); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsSupported
|
public bool IsSupported
|
||||||
{
|
{
|
||||||
get { return SupportedDevice is not null; }
|
get { return SupportedDevice is not null; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ushort FirmwareVersion { get; private set; }
|
public ushort FirmwareVersion { get; private set; }
|
||||||
public static byte BoardID { get; private set; }
|
public byte BoardID { get; private set; }
|
||||||
public static byte PDCS { get; private set; }
|
public byte PDCS { get; private set; }
|
||||||
|
|
||||||
public static bool Open()
|
public bool Open()
|
||||||
{
|
{
|
||||||
if (inpOut != null)
|
if (inpOut != null)
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -96,7 +109,6 @@
|
||||||
PDCS = data[0];
|
PDCS = data[0];
|
||||||
else
|
else
|
||||||
PDCS = 0xFF;
|
PDCS = 0xFF;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
|
@ -107,14 +119,14 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
SetFanControl(false);
|
SetFanControl(false);
|
||||||
using (inpOut) { }
|
using (inpOut) { }
|
||||||
inpOut = null;
|
inpOut = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ushort GetFanDesiredRPM()
|
public ushort GetFanDesiredRPM()
|
||||||
{
|
{
|
||||||
var data = inpOut?.ReadMemory(FSLO_FSHI, 2);
|
var data = inpOut?.ReadMemory(FSLO_FSHI, 2);
|
||||||
if (data is null)
|
if (data is null)
|
||||||
|
|
@ -122,7 +134,7 @@
|
||||||
return BitConverter.ToUInt16(data);
|
return BitConverter.ToUInt16(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ushort? GetFanRPM()
|
public ushort? GetFanRPM()
|
||||||
{
|
{
|
||||||
var data = inpOut?.ReadMemory(FNRL_FNRH, 2);
|
var data = inpOut?.ReadMemory(FNRL_FNRH, 2);
|
||||||
if (data is null)
|
if (data is null)
|
||||||
|
|
@ -130,7 +142,7 @@
|
||||||
return BitConverter.ToUInt16(data);
|
return BitConverter.ToUInt16(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SetFanControl(Boolean userControlled)
|
public void SetFanControl(Boolean userControlled)
|
||||||
{
|
{
|
||||||
SetGain(10);
|
SetGain(10);
|
||||||
SetRampRate(userControlled ? (byte)10 : (byte)20);
|
SetRampRate(userControlled ? (byte)10 : (byte)20);
|
||||||
|
|
@ -138,7 +150,7 @@
|
||||||
inpOut?.DlPortWritePortUchar(IO6C, userControlled ? (byte)0xCC : (byte)0xCD);
|
inpOut?.DlPortWritePortUchar(IO6C, userControlled ? (byte)0xCC : (byte)0xCD);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SetFanDesiredRPM(ushort rpm)
|
public void SetFanDesiredRPM(ushort rpm)
|
||||||
{
|
{
|
||||||
if (rpm > MAX_FAN_RPM)
|
if (rpm > MAX_FAN_RPM)
|
||||||
rpm = MAX_FAN_RPM;
|
rpm = MAX_FAN_RPM;
|
||||||
|
|
@ -147,7 +159,7 @@
|
||||||
inpOut?.WriteMemory(FSLO_FSHI, data);
|
inpOut?.WriteMemory(FSLO_FSHI, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool GetFanCheck()
|
public bool GetFanCheck()
|
||||||
{
|
{
|
||||||
var data = inpOut?.ReadMemory(FNCK, 1);
|
var data = inpOut?.ReadMemory(FNCK, 1);
|
||||||
if (data is null)
|
if (data is null)
|
||||||
|
|
@ -155,7 +167,7 @@
|
||||||
return (data[0] & 0x1) != 0;
|
return (data[0] & 0x1) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static float GetBattTemperature()
|
public float GetBattTemperature()
|
||||||
{
|
{
|
||||||
var data = inpOut?.ReadMemory(BATH_BATL, 2);
|
var data = inpOut?.ReadMemory(BATH_BATL, 2);
|
||||||
if (data is null)
|
if (data is null)
|
||||||
|
|
@ -166,12 +178,12 @@
|
||||||
return (float)(value - 0x0AAC) / 10.0f;
|
return (float)(value - 0x0AAC) / 10.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetGain(ushort gain)
|
private void SetGain(ushort gain)
|
||||||
{
|
{
|
||||||
byte[] data = BitConverter.GetBytes(gain);
|
byte[] data = BitConverter.GetBytes(gain);
|
||||||
inpOut?.WriteMemory(GNLO_GNHI, data);
|
inpOut?.WriteMemory(GNLO_GNHI, data);
|
||||||
}
|
}
|
||||||
private static void SetRampRate(byte rampRate)
|
private void SetRampRate(byte rampRate)
|
||||||
{
|
{
|
||||||
byte[] data = BitConverter.GetBytes(rampRate);
|
byte[] data = BitConverter.GetBytes(rampRate);
|
||||||
inpOut?.WriteMemory(FRPR, data);
|
inpOut?.WriteMemory(FRPR, data);
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ namespace FanControl
|
||||||
public ushort DesiredRPM { get; private set; }
|
public ushort DesiredRPM { get; private set; }
|
||||||
|
|
||||||
[CategoryAttribute("Board")]
|
[CategoryAttribute("Board")]
|
||||||
public String PDVersion { get; private set; } = Vlv0100.FirmwareVersion.ToString("X");
|
public String PDVersion { get; private set; } = Vlv0100.Instance.FirmwareVersion.ToString("X");
|
||||||
|
|
||||||
public FanController()
|
public FanController()
|
||||||
{
|
{
|
||||||
|
|
@ -80,7 +80,7 @@ namespace FanControl
|
||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
public bool IsActive
|
public bool IsActive
|
||||||
{
|
{
|
||||||
get { return Vlv0100.IsOpen; }
|
get { return Vlv0100.Instance.IsOpen; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Update(bool showForDefault = false)
|
public void Update(bool showForDefault = false)
|
||||||
|
|
@ -89,7 +89,7 @@ namespace FanControl
|
||||||
if (mutex is null)
|
if (mutex is null)
|
||||||
{
|
{
|
||||||
// If we cannot acquire mutex slightly increase FAN to compensate just in case
|
// If we cannot acquire mutex slightly increase FAN to compensate just in case
|
||||||
Vlv0100.SetFanDesiredRPM((ushort)(Vlv0100.GetFanDesiredRPM() * 110 / 100));
|
Vlv0100.Instance.SetFanDesiredRPM((ushort)(Vlv0100.Instance.GetFanDesiredRPM() * 110 / 100));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -104,7 +104,7 @@ namespace FanControl
|
||||||
sensor.Reset();
|
sensor.Reset();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (!Vlv0100.IsOpen)
|
else if (!Vlv0100.Instance.IsOpen)
|
||||||
{
|
{
|
||||||
Instance.UseKernelDrivers = true;
|
Instance.UseKernelDrivers = true;
|
||||||
SetMode(Mode);
|
SetMode(Mode);
|
||||||
|
|
@ -121,12 +121,12 @@ namespace FanControl
|
||||||
mutex.ReleaseMutex();
|
mutex.ReleaseMutex();
|
||||||
}
|
}
|
||||||
|
|
||||||
allSensors["Batt"].Update("VLV0100", Vlv0100.GetBattTemperature(), Mode);
|
allSensors["Batt"].Update("VLV0100", Vlv0100.Instance.GetBattTemperature(), Mode);
|
||||||
|
|
||||||
Vlv0100.SetFanDesiredRPM(getDesiredRPM());
|
Vlv0100.Instance.SetFanDesiredRPM(getDesiredRPM());
|
||||||
|
|
||||||
CurrentRPM = Vlv0100.GetFanRPM();
|
CurrentRPM = Vlv0100.Instance.GetFanRPM();
|
||||||
DesiredRPM = Vlv0100.GetFanDesiredRPM();
|
DesiredRPM = Vlv0100.Instance.GetFanDesiredRPM();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetMode(FanMode mode)
|
public void SetMode(FanMode mode)
|
||||||
|
|
@ -134,12 +134,12 @@ namespace FanControl
|
||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
case FanMode.Default:
|
case FanMode.Default:
|
||||||
Vlv0100.SetFanControl(false);
|
Vlv0100.Instance.SetFanControl(false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
Instance.UseKernelDrivers = true;
|
Instance.UseKernelDrivers = true;
|
||||||
Vlv0100.SetFanControl(true);
|
Vlv0100.Instance.SetFanControl(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -335,7 +335,7 @@ namespace PerformanceOverlay
|
||||||
{
|
{
|
||||||
Value = delegate ()
|
Value = delegate ()
|
||||||
{
|
{
|
||||||
return CommonHelpers.Vlv0100.GetFanRPM();
|
return Vlv0100.Instance.GetFanRPM();
|
||||||
},
|
},
|
||||||
Format = "F0"
|
Format = "F0"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue