Fixed temperatures for NCT6796D... and added ASUS TUF GAMING B550M-PLUS (WI-FI) (#339)
Thanks to @holgerpieta
This commit is contained in:
@@ -299,6 +299,8 @@ namespace LibreHardwareMonitor.Hardware.Motherboard
|
||||
return Model.X470_AORUS_GAMING_7_WIFI;
|
||||
case var _ when name.Equals("X570 AORUS MASTER", StringComparison.OrdinalIgnoreCase):
|
||||
return Model.X570_AORUS_MASTER;
|
||||
case var _ when name.Equals("TUF GAMING B550M-PLUS (WI-FI)", StringComparison.OrdinalIgnoreCase):
|
||||
return Model.TUF_GAMING_B550M_PLUS_WIFI;
|
||||
case var _ when name.Equals("Base Board Product Name", StringComparison.OrdinalIgnoreCase):
|
||||
case var _ when name.Equals("To be filled by O.E.M.", StringComparison.OrdinalIgnoreCase):
|
||||
return Model.Unknown;
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace LibreHardwareMonitor.Hardware.Motherboard.Lpc
|
||||
private readonly ushort[] _temperatureHalfRegister;
|
||||
private readonly ushort[] _temperatureRegister;
|
||||
private readonly ushort[] _temperatureSourceRegister;
|
||||
private readonly byte[] _temperaturesSource;
|
||||
private readonly Enum[] _temperaturesSource;
|
||||
private readonly ushort _vBatMonitorControlRegister;
|
||||
private readonly ushort[] _voltageRegisters;
|
||||
private readonly ushort _voltageVBatRegister;
|
||||
@@ -95,7 +95,7 @@ namespace LibreHardwareMonitor.Hardware.Motherboard.Lpc
|
||||
// min value RPM value with 16-bit fan counter
|
||||
_minFanRpm = (int)(1.35e6 / 0xFFFF);
|
||||
|
||||
_temperaturesSource = new[] { (byte)SourceNct6771F.PECI_0, (byte)SourceNct6771F.CPUTIN, (byte)SourceNct6771F.AUXTIN, (byte)SourceNct6771F.SYSTIN };
|
||||
_temperaturesSource = new Enum[] { SourceNct6771F.PECI_0, SourceNct6771F.CPUTIN, SourceNct6771F.AUXTIN, SourceNct6771F.SYSTIN };
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -104,7 +104,7 @@ namespace LibreHardwareMonitor.Hardware.Motherboard.Lpc
|
||||
// min value RPM value with 13-bit fan counter
|
||||
_minFanRpm = (int)(1.35e6 / 0x1FFF);
|
||||
|
||||
_temperaturesSource = new[] { (byte)SourceNct6776F.PECI_0, (byte)SourceNct6776F.CPUTIN, (byte)SourceNct6776F.AUXTIN, (byte)SourceNct6776F.SYSTIN };
|
||||
_temperaturesSource = new Enum[] { SourceNct6776F.PECI_0, SourceNct6776F.CPUTIN, SourceNct6776F.AUXTIN, SourceNct6776F.SYSTIN };
|
||||
}
|
||||
|
||||
_fanRpmRegister = new ushort[5];
|
||||
@@ -171,23 +171,86 @@ namespace LibreHardwareMonitor.Hardware.Motherboard.Lpc
|
||||
Voltages = new float?[15];
|
||||
_voltageRegisters = new ushort[] { 0x480, 0x481, 0x482, 0x483, 0x484, 0x485, 0x486, 0x487, 0x488, 0x489, 0x48A, 0x48B, 0x48C, 0x48D, 0x48E };
|
||||
_voltageVBatRegister = 0x488;
|
||||
Temperatures = new float?[7];
|
||||
_temperaturesSource = new[]
|
||||
switch (chip)
|
||||
{
|
||||
(byte)SourceNct67Xxd.PECI_0,
|
||||
(byte)SourceNct67Xxd.CPUTIN,
|
||||
(byte)SourceNct67Xxd.SYSTIN,
|
||||
(byte)SourceNct67Xxd.AUXTIN0,
|
||||
(byte)SourceNct67Xxd.AUXTIN1,
|
||||
(byte)SourceNct67Xxd.AUXTIN2,
|
||||
(byte)SourceNct67Xxd.AUXTIN3
|
||||
};
|
||||
case Chip.NCT6796D:
|
||||
case Chip.NCT6796DR:
|
||||
case Chip.NCT6797D:
|
||||
case Chip.NCT6798D:
|
||||
{
|
||||
Temperatures = new float?[24];
|
||||
_temperaturesSource = new Enum[]
|
||||
{
|
||||
SourceNct67Xxd.PECI_0,
|
||||
SourceNct67Xxd.CPUTIN,
|
||||
SourceNct67Xxd.SYSTIN,
|
||||
SourceNct67Xxd.AUXTIN0,
|
||||
SourceNct67Xxd.AUXTIN1,
|
||||
SourceNct67Xxd.AUXTIN2,
|
||||
SourceNct67Xxd.AUXTIN3,
|
||||
SourceNct67Xxd.AUXTIN4,
|
||||
SourceNct67Xxd.SMBUSMASTER0,
|
||||
SourceNct67Xxd.SMBUSMASTER1,
|
||||
SourceNct67Xxd.PECI_1,
|
||||
SourceNct67Xxd.PCH_CHIP_CPU_MAX_TEMP,
|
||||
SourceNct67Xxd.PCH_CHIP_TEMP,
|
||||
SourceNct67Xxd.PCH_CPU_TEMP,
|
||||
SourceNct67Xxd.PCH_MCH_TEMP,
|
||||
SourceNct67Xxd.AGENT0_DIMM0,
|
||||
SourceNct67Xxd.AGENT0_DIMM1,
|
||||
SourceNct67Xxd.AGENT1_DIMM0,
|
||||
SourceNct67Xxd.AGENT1_DIMM1,
|
||||
SourceNct67Xxd.BYTE_TEMP0,
|
||||
SourceNct67Xxd.BYTE_TEMP1,
|
||||
SourceNct67Xxd.PECI_0_CAL,
|
||||
SourceNct67Xxd.PECI_1_CAL,
|
||||
SourceNct67Xxd.VIRTUAL_TEMP
|
||||
};
|
||||
|
||||
_temperatureRegister = new ushort[] { 0x027, 0x073, 0x075, 0x077, 0x079, 0x07B, 0x150 };
|
||||
_temperatureHalfRegister = new ushort[] { 0, 0x074, 0x076, 0x078, 0x07A, 0x07C, 0x151 };
|
||||
_temperatureHalfBit = new[] { -1, 7, 7, 7, 7, 7, 7 };
|
||||
_temperatureSourceRegister = new ushort[] { 0x621, 0x100, 0x200, 0x300, 0x800, 0x900, 0x622 };
|
||||
_alternateTemperatureRegister = new ushort?[] { null, 0x491, 0x490, 0x492, 0x493, 0x494, 0x495 };
|
||||
_temperatureRegister = new ushort[]
|
||||
{
|
||||
0x073, 0x075, 0x077, 0x079, 0x07B, 0x07D, 0x4A0, 0x027, 0x150, 0x670, 0x672, 0x674, 0x676, 0x678, 0x67A
|
||||
};
|
||||
_temperatureHalfRegister = new ushort[]
|
||||
{
|
||||
0x074, 0x076, 0x078, 0x07A, 0x07C, 0x07E, 0x49E, 0, 0x151, 0, 0, 0, 0, 0, 0
|
||||
};
|
||||
_temperatureHalfBit = new[]
|
||||
{
|
||||
7, 7, 7, 7, 7, 7, 6, -1, 7, -1, -1, -1, -1, -1, -1
|
||||
};
|
||||
_temperatureSourceRegister = new ushort[]
|
||||
{
|
||||
0x100, 0x200, 0x300, 0x800, 0x900, 0xA00, 0xB00, 0x621, 0x622, 0xC26, 0xC27, 0xC28, 0xC29, 0xC2A, 0xC2B
|
||||
};
|
||||
_alternateTemperatureRegister = new ushort?[]
|
||||
{
|
||||
null, 0x491, 0x490, 0x492, 0x493, 0x494, 0x495, null, null, null, null, 0x400, 0x401, 0x402, 0x404, null, null, null, null, null, null, null, null, null
|
||||
};
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
Temperatures = new float?[7];
|
||||
_temperaturesSource = new Enum[]
|
||||
{
|
||||
SourceNct67Xxd.PECI_0,
|
||||
SourceNct67Xxd.CPUTIN,
|
||||
SourceNct67Xxd.SYSTIN,
|
||||
SourceNct67Xxd.AUXTIN0,
|
||||
SourceNct67Xxd.AUXTIN1,
|
||||
SourceNct67Xxd.AUXTIN2,
|
||||
SourceNct67Xxd.AUXTIN3
|
||||
};
|
||||
|
||||
_temperatureRegister = new ushort[] { 0x027, 0x073, 0x075, 0x077, 0x079, 0x07B, 0x150 };
|
||||
_temperatureHalfRegister = new ushort[] { 0, 0x074, 0x076, 0x078, 0x07A, 0x07C, 0x151 };
|
||||
_temperatureHalfBit = new[] { -1, 7, 7, 7, 7, 7, 7 };
|
||||
_temperatureSourceRegister = new ushort[] { 0x621, 0x100, 0x200, 0x300, 0x800, 0x900, 0x622 };
|
||||
_alternateTemperatureRegister = new ushort?[] { null, 0x491, 0x490, 0x492, 0x493, 0x494, 0x495 };
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case Chip.NCT610XD:
|
||||
@@ -206,7 +269,7 @@ namespace LibreHardwareMonitor.Hardware.Motherboard.Lpc
|
||||
_voltageRegisters = new ushort[] { 0x300, 0x301, 0x302, 0x303, 0x304, 0x305, 0x307, 0x308, 0x309 };
|
||||
_voltageVBatRegister = 0x308;
|
||||
Temperatures = new float?[4];
|
||||
_temperaturesSource = new[] { (byte)SourceNct610X.PECI_0, (byte)SourceNct610X.SYSTIN, (byte)SourceNct610X.CPUTIN, (byte)SourceNct610X.AUXTIN };
|
||||
_temperaturesSource = new Enum[] { SourceNct610X.PECI_0, SourceNct610X.SYSTIN, SourceNct610X.CPUTIN, SourceNct610X.AUXTIN };
|
||||
|
||||
_temperatureRegister = new ushort[] { 0x027, 0x018, 0x019, 0x01A };
|
||||
_temperatureHalfRegister = new ushort[] { 0, 0x01B, 0x11B, 0x21B };
|
||||
@@ -402,52 +465,128 @@ namespace LibreHardwareMonitor.Hardware.Motherboard.Lpc
|
||||
}
|
||||
}
|
||||
|
||||
int temperatureSourceMask = 0;
|
||||
for (int i = _temperatureRegister.Length - 1; i >= 0; i--)
|
||||
System.Diagnostics.Debug.WriteLine("Updating temperatures.");
|
||||
long temperatureSourceMask = 0;
|
||||
for (int i = 0; i < _temperatureRegister.Length ; i++)
|
||||
{
|
||||
if (Chip != Chip.NCT6687D)
|
||||
switch (Chip)
|
||||
{
|
||||
int value = (sbyte)ReadByte(_temperatureRegister[i]) << 1;
|
||||
if (_temperatureHalfBit[i] > 0)
|
||||
case Chip.NCT6687D:
|
||||
{
|
||||
value |= (ReadByte(_temperatureHalfRegister[i]) >> _temperatureHalfBit[i]) & 0x1;
|
||||
int value = (sbyte)ReadByte(_temperatureRegister[i]);
|
||||
int half = (ReadByte((ushort)(_temperatureRegister[i] + 1)) >> 7) & 0x1;
|
||||
float temperature = value + (0.5f * half);
|
||||
Temperatures[i] = temperature;
|
||||
break;
|
||||
}
|
||||
|
||||
byte source = ReadByte(_temperatureSourceRegister[i]);
|
||||
temperatureSourceMask |= 1 << source;
|
||||
|
||||
float? temperature = 0.5f * value;
|
||||
if (temperature > 125 || temperature < -55)
|
||||
temperature = null;
|
||||
|
||||
for (int j = 0; j < Temperatures.Length; j++)
|
||||
case Chip.NCT6796D:
|
||||
case Chip.NCT6796DR:
|
||||
case Chip.NCT6797D:
|
||||
case Chip.NCT6798D:
|
||||
{
|
||||
if (_temperaturesSource[j] == source)
|
||||
Temperatures[j] = temperature;
|
||||
if (_temperatureRegister[i] == 0)
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine("Temperature register {0} skipped, address 0.", i);
|
||||
continue;
|
||||
}
|
||||
|
||||
int value = (sbyte)ReadByte(_temperatureRegister[i]) << 1;
|
||||
System.Diagnostics.Debug.WriteLine("Temperature register {0} at 0x{1:X3} value (integer): {2}/2", i, _temperatureRegister[i], value);
|
||||
if (_temperatureHalfBit[i] > 0)
|
||||
{
|
||||
value |= (ReadByte(_temperatureHalfRegister[i]) >> _temperatureHalfBit[i]) & 0x1;
|
||||
System.Diagnostics.Debug.WriteLine("Temperature register {0} value updated from 0x{1:X3} (fractional): {2}/2", i, _temperatureHalfRegister[i], value);
|
||||
}
|
||||
|
||||
SourceNct67Xxd source;
|
||||
if (_temperatureSourceRegister[i] > 0)
|
||||
{
|
||||
source = (SourceNct67Xxd)(ReadByte(_temperatureSourceRegister[i]) & 0x1F);
|
||||
System.Diagnostics.Debug.WriteLine("Temperature register {0} source at 0x{1:X3}: {2:G} ({2:D})", i, _temperatureSourceRegister[i], source);
|
||||
}
|
||||
else
|
||||
{
|
||||
source = (SourceNct67Xxd)_temperaturesSource[i];
|
||||
System.Diagnostics.Debug.WriteLine("Temperature register {0} source register is 0, source set to: {1:G} ({1:D})", i, source);
|
||||
}
|
||||
|
||||
// Skip reading when already filled, because later values are without fractional
|
||||
if ((temperatureSourceMask & (1L << (byte)source)) > 0)
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine("Temperature register {0} discarded, because source seen before.", i);
|
||||
continue;
|
||||
}
|
||||
|
||||
float? temperature = 0.5f * value;
|
||||
System.Diagnostics.Debug.WriteLine("Temperature register {0} final temperature: {1}.", i, temperature);
|
||||
if (temperature > 125 || temperature < -55)
|
||||
{
|
||||
temperature = null;
|
||||
System.Diagnostics.Debug.WriteLine("Temperature register {0} discarded: Out of range.", i);
|
||||
}
|
||||
else{
|
||||
temperatureSourceMask |= 1L << (byte)source;
|
||||
System.Diagnostics.Debug.WriteLine("Temperature register {0} accepted.", i);
|
||||
}
|
||||
|
||||
for (int j = 0; j < Temperatures.Length; j++)
|
||||
{
|
||||
if ((SourceNct67Xxd)_temperaturesSource[j] == source)
|
||||
{
|
||||
Temperatures[j] = temperature;
|
||||
System.Diagnostics.Debug.WriteLine("Temperature register {0}, value from source {1:G} ({1:D}), written at position {2}.", i, _temperaturesSource[j], j);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
int value = (sbyte)ReadByte(_temperatureRegister[i]) << 1;
|
||||
if (_temperatureHalfBit[i] > 0)
|
||||
{
|
||||
value |= (ReadByte(_temperatureHalfRegister[i]) >> _temperatureHalfBit[i]) & 0x1;
|
||||
}
|
||||
|
||||
SourceNct67Xxd source = (SourceNct67Xxd)ReadByte(_temperatureSourceRegister[i]);
|
||||
temperatureSourceMask |= 1L << (byte)source;
|
||||
|
||||
float? temperature = 0.5f * value;
|
||||
if (temperature > 125 || temperature < -55)
|
||||
temperature = null;
|
||||
|
||||
for (int j = 0; j < Temperatures.Length; j++)
|
||||
{
|
||||
if ((SourceNct67Xxd)_temperaturesSource[j] == source)
|
||||
Temperatures[j] = temperature;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int value = (sbyte)ReadByte(_temperatureRegister[i]);
|
||||
int half = (ReadByte((ushort)(_temperatureRegister[i] + 1)) >> 7) & 0x1;
|
||||
float temperature = value + (0.5f * half);
|
||||
Temperatures[i] = temperature;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < _alternateTemperatureRegister.Length; i++)
|
||||
{
|
||||
if (!_alternateTemperatureRegister[i].HasValue)
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine("Alternate temperature register for temperature {0}, {1:G} ({1:D}), skipped, because address is null.", i, _temperaturesSource[i]);
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((temperatureSourceMask & (1 << _temperaturesSource[i])) > 0)
|
||||
if ((temperatureSourceMask & (1L << (byte)(SourceNct67Xxd)_temperaturesSource[i])) > 0)
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine("Alternate temperature register for temperature {0}, {1:G} ({1:D}), at 0x{2:X3} skipped, because value already set.", i, _temperaturesSource[i], _alternateTemperatureRegister[i].Value);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
float? temperature = (sbyte)ReadByte(_alternateTemperatureRegister[i].Value);
|
||||
System.Diagnostics.Debug.WriteLine("Alternate temperature register for temperature {0}, {1:G} ({1:D}), at 0x{2:X3} final temperature: {3}.", i, _temperaturesSource[i], _alternateTemperatureRegister[i].Value, temperature);
|
||||
|
||||
if (temperature > 125 || temperature < -55)
|
||||
if (temperature > 125 || temperature <= 0)
|
||||
{
|
||||
temperature = null;
|
||||
System.Diagnostics.Debug.WriteLine("Alternate Temperature register for temperature {0}, {1:G} ({1:D}), discarded: Out of range.", i, _temperaturesSource[i]);
|
||||
}
|
||||
|
||||
Temperatures[i] = temperature;
|
||||
}
|
||||
@@ -825,7 +964,24 @@ namespace LibreHardwareMonitor.Hardware.Motherboard.Lpc
|
||||
AUXTIN1 = 4,
|
||||
AUXTIN2 = 5,
|
||||
AUXTIN3 = 6,
|
||||
PECI_0 = 16
|
||||
AUXTIN4 = 7,
|
||||
SMBUSMASTER0 = 8,
|
||||
SMBUSMASTER1 = 9,
|
||||
PECI_0 = 16,
|
||||
PECI_1 = 17,
|
||||
PCH_CHIP_CPU_MAX_TEMP = 18,
|
||||
PCH_CHIP_TEMP = 19,
|
||||
PCH_CPU_TEMP = 20,
|
||||
PCH_MCH_TEMP = 21,
|
||||
AGENT0_DIMM0 = 22,
|
||||
AGENT0_DIMM1 = 23,
|
||||
AGENT1_DIMM0 = 24,
|
||||
AGENT1_DIMM1 = 25,
|
||||
BYTE_TEMP0 = 26,
|
||||
BYTE_TEMP1 = 27,
|
||||
PECI_0_CAL = 28,
|
||||
PECI_1_CAL = 29,
|
||||
VIRTUAL_TEMP = 31
|
||||
}
|
||||
|
||||
[SuppressMessage("ReSharper", "InconsistentNaming")]
|
||||
|
||||
@@ -54,6 +54,7 @@ namespace LibreHardwareMonitor.Hardware.Motherboard
|
||||
ROG_ZENITH_EXTREME,
|
||||
TUF_X470_PLUS_GAMING,
|
||||
Z170_A,
|
||||
TUF_GAMING_B550M_PLUS_WIFI,
|
||||
|
||||
// DFI
|
||||
LP_BI_P45_T2RS_Elite,
|
||||
|
||||
@@ -2186,6 +2186,56 @@ namespace LibreHardwareMonitor.Hardware.Motherboard
|
||||
|
||||
break;
|
||||
}
|
||||
case Model.TUF_GAMING_B550M_PLUS_WIFI: //NCT6798D
|
||||
{
|
||||
v.Add(new Voltage("Vcore", 0));
|
||||
v.Add(new Voltage("Voltage #2", 1, true));
|
||||
v.Add(new Voltage("AVCC", 2, 34, 34));
|
||||
v.Add(new Voltage("+3.3V", 3, 34, 34));
|
||||
v.Add(new Voltage("Voltage #5", 4, true));
|
||||
v.Add(new Voltage("Voltage #6", 5, true));
|
||||
v.Add(new Voltage("Voltage #7", 6, true));
|
||||
v.Add(new Voltage("3VSB", 7, 34, 34));
|
||||
v.Add(new Voltage("VBat", 8, 34, 34));
|
||||
v.Add(new Voltage("VTT", 9));
|
||||
v.Add(new Voltage("Voltage #11", 10, true));
|
||||
v.Add(new Voltage("Voltage #12", 11, true));
|
||||
v.Add(new Voltage("Voltage #13", 12, true));
|
||||
v.Add(new Voltage("Voltage #14", 13, true));
|
||||
v.Add(new Voltage("Voltage #15", 14, true));
|
||||
t.Add(new Temperature("PECI 0", 0));
|
||||
t.Add(new Temperature("CPU", 1));
|
||||
t.Add(new Temperature("System", 2));
|
||||
t.Add(new Temperature("AUX 0", 3));
|
||||
t.Add(new Temperature("AUX 1", 4));
|
||||
t.Add(new Temperature("AUX 2", 5));
|
||||
t.Add(new Temperature("AUX 3", 6));
|
||||
t.Add(new Temperature("AUX 4", 7));
|
||||
t.Add(new Temperature("SMBus 0", 8));
|
||||
t.Add(new Temperature("SMBus 1", 9));
|
||||
t.Add(new Temperature("PECI 1", 10));
|
||||
t.Add(new Temperature("PCH Chip CPU Max", 11));
|
||||
t.Add(new Temperature("PCH Chip", 12));
|
||||
t.Add(new Temperature("PCH CPU", 13));
|
||||
t.Add(new Temperature("PCH MCH", 14));
|
||||
t.Add(new Temperature("Agent 0 DIMM 0", 15));
|
||||
t.Add(new Temperature("Agent 0 DIMM 1", 16));
|
||||
t.Add(new Temperature("Agent 1 DIMM 0", 17));
|
||||
t.Add(new Temperature("Agent 1 DIMM 1", 18));
|
||||
t.Add(new Temperature("Device 0", 19));
|
||||
t.Add(new Temperature("Device 1", 20));
|
||||
t.Add(new Temperature("PECI 0 Calibrated", 21));
|
||||
t.Add(new Temperature("PECI 1 Calibrated", 22));
|
||||
t.Add(new Temperature("Virtual", 23));
|
||||
|
||||
for (int i = 0; i < superIO.Fans.Length; i++)
|
||||
f.Add(new Fan("Fan #" + (i + 1), i));
|
||||
|
||||
for (int i = 0; i < superIO.Controls.Length; i++)
|
||||
c.Add(new Ctrl("Fan Control #" + (i + 1), i));
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
v.Add(new Voltage("Vcore", 0));
|
||||
@@ -2272,11 +2322,12 @@ namespace LibreHardwareMonitor.Hardware.Motherboard
|
||||
v.Add(new Voltage("NB/SoC", 12));
|
||||
v.Add(new Voltage("DIMM", 13, 1, 1));
|
||||
//v.Add(new Voltage("Voltage #15", 14, false));
|
||||
t.Add(new Temperature("CPU", 0));
|
||||
t.Add(new Temperature("CPU (PECI)", 1));
|
||||
//t.Add(new Temperature("CPU", 0));
|
||||
t.Add(new Temperature("CPU", 1));
|
||||
t.Add(new Temperature("System", 2));
|
||||
t.Add(new Temperature("VRM MOS", 3));
|
||||
t.Add(new Temperature("PCH", 5));
|
||||
t.Add(new Temperature("SMBus 0", 8));
|
||||
f.Add(new Fan("Pump Fan", 0));
|
||||
f.Add(new Fan("CPU Fan", 1));
|
||||
f.Add(new Fan("System Fan #1", 2));
|
||||
|
||||
Reference in New Issue
Block a user