diff --git a/External/OxyPlot/OxyPlot/PlotModel/PlotModel.cs b/External/OxyPlot/OxyPlot/PlotModel/PlotModel.cs index 08effd7..50da5d4 100644 --- a/External/OxyPlot/OxyPlot/PlotModel/PlotModel.cs +++ b/External/OxyPlot/OxyPlot/PlotModel/PlotModel.cs @@ -310,6 +310,28 @@ namespace OxyPlot this.Subtitle = subtitle; } + public PlotModel(double dpiXscale, double dpiYscale) + : this() + { + this.PlotMargins = new OxyThickness(this.PlotMargins.Left * dpiXscale, + this.PlotMargins.Top * dpiYscale, + this.PlotMargins.Right * dpiXscale, + this.PlotMargins.Bottom * dpiYscale + ); + this.Padding = new OxyThickness(this.Padding.Left * dpiXscale, + this.Padding.Top * dpiYscale, + this.Padding.Right * dpiXscale, + this.Padding.Bottom * dpiYscale + ); + this.TitlePadding *= dpiXscale; + this.LegendSymbolLength *= dpiXscale; + this.LegendSymbolMargin *= dpiXscale; + this.LegendPadding *= dpiXscale; + this.LegendColumnSpacing *= dpiXscale; + this.LegendItemSpacing *= dpiXscale; + this.LegendMargin *= dpiXscale; + } + /// /// The synchronization root object. /// diff --git a/GUI/PlotPanel.cs b/GUI/PlotPanel.cs index b4b732f..c7cbbb3 100644 --- a/GUI/PlotPanel.cs +++ b/GUI/PlotPanel.cs @@ -35,11 +35,16 @@ namespace OpenHardwareMonitor.GUI { private UserOption stackedAxes; private DateTime now; + private float dpiX; + private float dpiY; + private double dpiXscale = 1; + private double dpiYscale = 1; public PlotPanel(PersistentSettings settings, UnitManager unitManager) { this.settings = settings; this.unitManager = unitManager; + this.SetDPI(); this.model = CreatePlotModel(); this.plot = new Plot(); @@ -168,7 +173,7 @@ namespace OpenHardwareMonitor.GUI { axes.Add(type, axis); } - var model = new PlotModel(); + var model = new PlotModel(this.dpiXscale, this.dpiYscale); model.Axes.Add(timeAxis); foreach (var axis in axes.Values) model.Axes.Add(axis); @@ -178,6 +183,30 @@ namespace OpenHardwareMonitor.GUI { return model; } + private void SetDPI() { + // https://msdn.microsoft.com/en-us/library/windows/desktop/dn469266(v=vs.85).aspx + const int _default_dpi = 96; + Graphics g = this.CreateGraphics(); + + try + { + this.dpiX = g.DpiX; + this.dpiY = g.DpiY; + } + finally + { + g.Dispose(); + } + if (dpiX > 0) + { + this.dpiXscale = dpiX / _default_dpi; + } + if (dpiY > 0) + { + this.dpiYscale = dpiY / _default_dpi; + } + } + public void SetSensors(List sensors, IDictionary colors) { this.model.Series.Clear(); diff --git a/Hardware/CPU/CPUID.cs b/Hardware/CPU/CPUID.cs index b219b6c..fed0aa5 100644 --- a/Hardware/CPU/CPUID.cs +++ b/Hardware/CPU/CPUID.cs @@ -12,14 +12,13 @@ using System; using System.Text; namespace OpenHardwareMonitor.Hardware.CPU { - - internal enum Vendor { + public enum Vendor { Unknown, Intel, AMD, } - internal class CPUID { + public class CPUID { private readonly int thread; diff --git a/Hardware/CPU/GenericCPU.cs b/Hardware/CPU/GenericCPU.cs index cfdc9b5..ecf91d4 100644 --- a/Hardware/CPU/GenericCPU.cs +++ b/Hardware/CPU/GenericCPU.cs @@ -17,7 +17,7 @@ using System.Text; using System.Threading; namespace OpenHardwareMonitor.Hardware.CPU { - internal class GenericCPU : Hardware { + public class GenericCPU : Hardware { protected readonly CPUID[][] cpuid; diff --git a/Hardware/CPU/IntelCPU.cs b/Hardware/CPU/IntelCPU.cs index 8f3eb3b..190ced7 100644 --- a/Hardware/CPU/IntelCPU.cs +++ b/Hardware/CPU/IntelCPU.cs @@ -29,7 +29,8 @@ namespace OpenHardwareMonitor.Hardware.CPU { Skylake, Airmont, KabyLake, - ApolloLake + ApolloLake, + CoffeeLake } private readonly Sensor[] coreTemperatures; @@ -187,6 +188,10 @@ namespace OpenHardwareMonitor.Hardware.CPU { case 0x5C: // Intel ApolloLake microarchitecture = Microarchitecture.ApolloLake; tjMax = GetTjMaxFromMSR(); + break; + case 0xAE: // Intel Core i5, i7 8xxxx (14nm++) + microarchitecture = Microarchitecture.CoffeeLake; + tjMax = GetTjMaxFromMSR(); break; default: microarchitecture = Microarchitecture.Unknown; @@ -237,7 +242,8 @@ namespace OpenHardwareMonitor.Hardware.CPU { case Microarchitecture.Skylake: case Microarchitecture.Airmont: case Microarchitecture.ApolloLake: - case Microarchitecture.KabyLake: { + case Microarchitecture.KabyLake: + case Microarchitecture.CoffeeLake: { uint eax, edx; if (Ring0.Rdmsr(MSR_PLATFORM_INFO, out eax, out edx)) { timeStampCounterMultiplier = (eax >> 8) & 0xff; @@ -421,7 +427,8 @@ namespace OpenHardwareMonitor.Hardware.CPU { case Microarchitecture.Silvermont: case Microarchitecture.Skylake: case Microarchitecture.ApolloLake: - case Microarchitecture.KabyLake: { + case Microarchitecture.KabyLake: + case Microarchitecture.CoffeeLake: { uint multiplier = (eax >> 8) & 0xff; coreClocks[i].Value = (float)(multiplier * newBusClock); } break; diff --git a/Hardware/HDD/AbstractHarddrive.cs b/Hardware/HDD/AbstractHarddrive.cs index ca687e8..0958e84 100644 --- a/Hardware/HDD/AbstractHarddrive.cs +++ b/Hardware/HDD/AbstractHarddrive.cs @@ -18,7 +18,7 @@ using System.Text; using OpenHardwareMonitor.Collections; namespace OpenHardwareMonitor.Hardware.HDD { - internal abstract class AbstractHarddrive : Hardware { + public abstract class AbstractHarddrive : Hardware { private const int UPDATE_DIVIDER = 30; // update only every 30s diff --git a/Hardware/HDD/DriveAttributeValue.cs b/Hardware/HDD/DriveAttributeValue.cs index 4ce5190..a478406 100644 --- a/Hardware/HDD/DriveAttributeValue.cs +++ b/Hardware/HDD/DriveAttributeValue.cs @@ -15,7 +15,7 @@ using System.Runtime.InteropServices; namespace OpenHardwareMonitor.Hardware.HDD { [StructLayout(LayoutKind.Sequential, Pack = 1)] - internal struct DriveAttributeValue { + public struct DriveAttributeValue { public byte Identifier; public short StatusFlags; public byte AttrValue; diff --git a/Hardware/HDD/DriveThresholdValue.cs b/Hardware/HDD/DriveThresholdValue.cs index 13bc46c..f6119d8 100644 --- a/Hardware/HDD/DriveThresholdValue.cs +++ b/Hardware/HDD/DriveThresholdValue.cs @@ -14,7 +14,7 @@ using System.Runtime.InteropServices; namespace OpenHardwareMonitor.Hardware.HDD { [StructLayout(LayoutKind.Sequential, Pack = 1)] - internal struct DriveThresholdValue { + public struct DriveThresholdValue { public byte Identifier; public byte Threshold; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)] diff --git a/Hardware/HDD/ISmart.cs b/Hardware/HDD/ISmart.cs index ac49b29..5afd64d 100644 --- a/Hardware/HDD/ISmart.cs +++ b/Hardware/HDD/ISmart.cs @@ -13,8 +13,7 @@ using System.Collections.Generic; namespace OpenHardwareMonitor.Hardware.HDD { - - internal interface ISmart { + public interface ISmart { IntPtr OpenDrive(int driveNumber); diff --git a/Hardware/HDD/SmartAttribute.cs b/Hardware/HDD/SmartAttribute.cs index 4c9b8c2..e06674a 100644 --- a/Hardware/HDD/SmartAttribute.cs +++ b/Hardware/HDD/SmartAttribute.cs @@ -14,7 +14,7 @@ using System.Collections.Generic; using OpenHardwareMonitor.Collections; namespace OpenHardwareMonitor.Hardware.HDD { - internal class SmartAttribute { + public class SmartAttribute { private RawValueConversion rawValueConversion; diff --git a/Hardware/HDD/SmartNames.cs b/Hardware/HDD/SmartNames.cs index 79753ad..07bba5a 100644 --- a/Hardware/HDD/SmartNames.cs +++ b/Hardware/HDD/SmartNames.cs @@ -13,7 +13,7 @@ namespace OpenHardwareMonitor.Hardware.HDD { /// /// Localization class for SMART attribute names. /// - internal static class SmartNames { + public static class SmartNames { public static string AirflowTemperature { get { return "Airflow Temperature"; } diff --git a/Hardware/Hardware.cs b/Hardware/Hardware.cs index bd28949..7b4fc87 100644 --- a/Hardware/Hardware.cs +++ b/Hardware/Hardware.cs @@ -12,7 +12,7 @@ using System; using OpenHardwareMonitor.Collections; namespace OpenHardwareMonitor.Hardware { - internal abstract class Hardware : IHardware { + public abstract class Hardware : IHardware { private readonly Identifier identifier; protected readonly string name; diff --git a/Hardware/LPC/Chip.cs b/Hardware/LPC/Chip.cs index 686cb74..92050c3 100644 --- a/Hardware/LPC/Chip.cs +++ b/Hardware/LPC/Chip.cs @@ -19,6 +19,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { F71862 = 0x0601, F71869 = 0x0814, F71869A = 0x1007, + F71878AD = 0x1106, F71882 = 0x0541, F71889AD = 0x1005, F71889ED = 0x0909, @@ -70,6 +71,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { case Chip.F71858: return "Fintek F71858"; case Chip.F71862: return "Fintek F71862"; case Chip.F71869: return "Fintek F71869"; + case Chip.F71878AD: return "Fintek F71878AD"; case Chip.F71869A: return "Fintek F71869A"; case Chip.F71882: return "Fintek F71882"; case Chip.F71889AD: return "Fintek F71889AD"; diff --git a/Hardware/LPC/F718XX.cs b/Hardware/LPC/F718XX.cs index b36806b..e737c6e 100644 --- a/Hardware/LPC/F718XX.cs +++ b/Hardware/LPC/F718XX.cs @@ -26,18 +26,27 @@ namespace OpenHardwareMonitor.Hardware.LPC { private const byte ADDRESS_REGISTER_OFFSET = 0x05; private const byte DATA_REGISTER_OFFSET = 0x06; + private const byte PWM_VALUES_OFFSET = 0x2D; + // Hardware Monitor Registers private const byte VOLTAGE_BASE_REG = 0x20; private const byte TEMPERATURE_CONFIG_REG = 0x69; private const byte TEMPERATURE_BASE_REG = 0x70; private readonly byte[] FAN_TACHOMETER_REG = new byte[] { 0xA0, 0xB0, 0xC0, 0xD0 }; + private readonly byte[] FAN_PWM_REG = + new byte[] { 0xA3, 0xB3, 0xC3, 0xD3 }; private byte ReadByte(byte register) { Ring0.WriteIoPort( (ushort)(address + ADDRESS_REGISTER_OFFSET), register); return Ring0.ReadIoPort((ushort)(address + DATA_REGISTER_OFFSET)); } + private void WriteByte(byte register, byte value) { + Ring0.WriteIoPort( + (ushort)(address + ADDRESS_REGISTER_OFFSET), register); + Ring0.WriteIoPort((ushort)(address + DATA_REGISTER_OFFSET), value); + } public byte? ReadGPIO(int index) { return null; @@ -45,7 +54,10 @@ namespace OpenHardwareMonitor.Hardware.LPC { public void WriteGPIO(int index, byte value) { } - public void SetControl(int index, byte? value) { } + public void SetControl(int index, byte? value) { + if(index < controls.Length) + WriteByte(FAN_PWM_REG[index], value ?? 128); + } public F718XX(Chip chip, ushort address) { this.address = address; @@ -54,7 +66,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { voltages = new float?[chip == Chip.F71858 ? 3 : 9]; temperatures = new float?[chip == Chip.F71808E ? 2 : 3]; fans = new float?[chip == Chip.F71882 || chip == Chip.F71858 ? 4 : 3]; - controls = new float?[0]; + controls = new float?[chip == Chip.F71878AD ? 3 : 0]; } public Chip Chip { get { return chip; } } @@ -145,7 +157,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { } break; } } - + for (int i = 0; i < fans.Length; i++) { int value = ReadByte(FAN_TACHOMETER_REG[i]) << 8; value |= ReadByte((byte)(FAN_TACHOMETER_REG[i] + 1)); @@ -155,6 +167,9 @@ namespace OpenHardwareMonitor.Hardware.LPC { else fans[i] = null; } + for (int i = 0; i < controls.Length; i++) { + controls[i] = (100*ReadByte((byte)(PWM_VALUES_OFFSET + i)))/256.0f; + } Ring0.ReleaseIsaBusMutex(); } diff --git a/Hardware/LPC/LMSensors.cs b/Hardware/LPC/LMSensors.cs index 677a809..57e07e3 100755 --- a/Hardware/LPC/LMSensors.cs +++ b/Hardware/LPC/LMSensors.cs @@ -46,7 +46,9 @@ namespace OpenHardwareMonitor.Hardware.LPC { case "f71882fg": lmChips.Add(new LMChip(Chip.F71882, path)); break; case "f71889a": - lmChips.Add(new LMChip(Chip.F71889AD, path)); break; + lmChips.Add(new LMChip(Chip.F71889AD, path)); break; + case "f71878ad": + lmChips.Add(new LMChip(Chip.F71878AD, path)); break; case "f71889ed": lmChips.Add(new LMChip(Chip.F71889ED, path)); break; case "f71889fg": diff --git a/Hardware/LPC/LPCIO.cs b/Hardware/LPC/LPCIO.cs index bbb79a2..53de239 100644 --- a/Hardware/LPC/LPCIO.cs +++ b/Hardware/LPC/LPCIO.cs @@ -115,6 +115,13 @@ namespace OpenHardwareMonitor.Hardware.LPC { logicalDeviceNumber = FINTEK_HARDWARE_MONITOR_LDN; break; } break; + case 0x11: + switch (revision) { + case 0x06: + chip = Chip.F71878AD; + logicalDeviceNumber = FINTEK_HARDWARE_MONITOR_LDN; + break; + } break; case 0x52: switch (revision) { case 0x17: @@ -306,6 +313,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { case Chip.F71858: case Chip.F71862: case Chip.F71869: + case Chip.F71878AD: case Chip.F71869A: case Chip.F71882: case Chip.F71889AD: diff --git a/Hardware/Mainboard/Identification.cs b/Hardware/Mainboard/Identification.cs index ef9e8fe..a190d05 100644 --- a/Hardware/Mainboard/Identification.cs +++ b/Hardware/Mainboard/Identification.cs @@ -181,6 +181,8 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { return Model.X38_DS5; case "X58A-UD3R": return Model.X58A_UD3R; + case "Z270 PC MATE": + return Model.Z270_PC_MATE; case "X79-UD3": return Model.X79_UD3; case "Z68A-D3H-B3": diff --git a/Hardware/Mainboard/Model.cs b/Hardware/Mainboard/Model.cs index f076fbb..67f15c7 100644 --- a/Hardware/Mainboard/Model.cs +++ b/Hardware/Mainboard/Model.cs @@ -40,6 +40,9 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { // ECS A890GXM_A, + // MSI + Z270_PC_MATE, + // EVGA X58_SLI_Classified, @@ -87,6 +90,6 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { FH67, // Unknown - Unknown + Unknown } } diff --git a/Hardware/Mainboard/SuperIOHardware.cs b/Hardware/Mainboard/SuperIOHardware.cs index e5fe79d..a847d16 100644 --- a/Hardware/Mainboard/SuperIOHardware.cs +++ b/Hardware/Mainboard/SuperIOHardware.cs @@ -214,7 +214,7 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { case Chip.F71889ED: case Chip.F71889F: case Chip.F71808E: - GetFintekConfiguration(superIO, manufacturer, model, v, t, f); + GetFintekConfiguration(superIO, manufacturer, model, v, t, f, c); break; case Chip.W83627EHF: @@ -969,7 +969,7 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { private static void GetFintekConfiguration(ISuperIO superIO, Manufacturer manufacturer, Model model, - IList v, IList t, IList f) + IList v, IList t, IList f, IList c) { switch (manufacturer) { case Manufacturer.EVGA: @@ -1023,6 +1023,9 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { t.Add(new Temperature("Temperature #" + (i + 1), i)); 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; } } @@ -1182,6 +1185,99 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { c.Add(new Ctrl("Chassis Fan #2", 2)); c.Add(new Ctrl("Chassis Fan #3", 3)); break; + default: + v.Add(new Voltage("CPU VCore", 0)); + v.Add(new Voltage("Voltage #2", 1, true)); + v.Add(new Voltage("AVCC", 2, 34, 34)); + v.Add(new Voltage("3VCC", 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("CPU Core", 0)); + t.Add(new Temperature("Temperature #1", 1)); + t.Add(new Temperature("Temperature #2", 2)); + t.Add(new Temperature("Temperature #3", 3)); + t.Add(new Temperature("Temperature #4", 4)); + t.Add(new Temperature("Temperature #5", 5)); + t.Add(new Temperature("Temperature #6", 6)); + 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; + } + break; + case Manufacturer.MSI: + switch (model) { + case Model.Z270_PC_MATE: // NCT6795D + v.Add(new Voltage("CPU VCore", 0)); + v.Add(new Voltage("+5V", 1, 4, 1)); + v.Add(new Voltage("AVCC", 2, 34, 34)); + v.Add(new Voltage("3VCC", 3, 34, 34)); + v.Add(new Voltage("+12V", 4, 11, 1)); + v.Add(new Voltage("Voltage #6", 5, true)); + v.Add(new Voltage("CPU I/O", 6)); + v.Add(new Voltage("3VSB", 7, 34, 34)); + v.Add(new Voltage("VTT", 9)); + v.Add(new Voltage("CPU SA", 10)); + v.Add(new Voltage("Voltage #12", 11, true)); + v.Add(new Voltage("PCH", 12)); + v.Add(new Voltage("DRAM", 13, 1, 1)); + v.Add(new Voltage("Voltage #15", 14, true)); + t.Add(new Temperature("CPU", 0)); + t.Add(new Temperature("Auxiliary", 1)); + t.Add(new Temperature("Motherboard", 2)); + f.Add(new Fan("Pump Fan", 0)); + f.Add(new Fan("CPU Fan", 1)); + f.Add(new Fan("System Fan #1", 2)); + f.Add(new Fan("System Fan #2", 3)); + f.Add(new Fan("System Fan #3", 4)); + f.Add(new Fan("System Fan #4", 5)); + c.Add(new Ctrl("Pump Fan", 0)); + c.Add(new Ctrl("CPU Fan", 1)); + c.Add(new Ctrl("System Fan #1", 2)); + c.Add(new Ctrl("System Fan #2", 3)); + c.Add(new Ctrl("System Fan #3", 4)); + c.Add(new Ctrl("System Fan #4", 5)); + break; + default: + v.Add(new Voltage("CPU VCore", 0)); + v.Add(new Voltage("Voltage #2", 1, true)); + v.Add(new Voltage("AVCC", 2, 34, 34)); + v.Add(new Voltage("3VCC", 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("CPU Core", 0)); + t.Add(new Temperature("Temperature #1", 1)); + t.Add(new Temperature("Temperature #2", 2)); + t.Add(new Temperature("Temperature #3", 3)); + t.Add(new Temperature("Temperature #4", 4)); + t.Add(new Temperature("Temperature #5", 5)); + t.Add(new Temperature("Temperature #6", 6)); + 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; + } + break; default: v.Add(new Voltage("CPU VCore", 0)); v.Add(new Voltage("Voltage #2", 1, true)); @@ -1210,36 +1306,6 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { for (int i = 0; i < superIO.Controls.Length; i++) c.Add(new Ctrl("Fan Control #" + (i + 1), i)); break; - } - break; - default: - v.Add(new Voltage("CPU VCore", 0)); - v.Add(new Voltage("Voltage #2", 1, true)); - v.Add(new Voltage("AVCC", 2, 34, 34)); - v.Add(new Voltage("3VCC", 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("CPU Core", 0)); - t.Add(new Temperature("Temperature #1", 1)); - t.Add(new Temperature("Temperature #2", 2)); - t.Add(new Temperature("Temperature #3", 3)); - t.Add(new Temperature("Temperature #4", 4)); - t.Add(new Temperature("Temperature #5", 5)); - t.Add(new Temperature("Temperature #6", 6)); - 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; } } diff --git a/Hardware/Parameter.cs b/Hardware/Parameter.cs index bbec69d..0d4c00c 100644 --- a/Hardware/Parameter.cs +++ b/Hardware/Parameter.cs @@ -12,8 +12,7 @@ using System; using System.Globalization; namespace OpenHardwareMonitor.Hardware { - - internal struct ParameterDescription { + public struct ParameterDescription { private readonly string name; private readonly string description; private readonly float defaultValue; diff --git a/Hardware/SMBIOS.cs b/Hardware/SMBIOS.cs index ea49a79..36f799e 100644 --- a/Hardware/SMBIOS.cs +++ b/Hardware/SMBIOS.cs @@ -16,7 +16,7 @@ using System.Text; namespace OpenHardwareMonitor.Hardware { - internal class SMBIOS { + public class SMBIOS { private readonly byte[] raw; private readonly Structure[] table;