From 34d773fa90fab707a73869a1febbc58a6e971694 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=B6ller?= Date: Sun, 31 Jan 2010 22:00:31 +0000 Subject: [PATCH] Release version 0.1.6. Fixed F71882 temperature reading. Added error handling for ATI GPUs (ADL). Fixed sensor events. --- Hardware/ATI/ADL.cs | 2 +- Hardware/ATI/ATIGPU.cs | 63 +++++++++++++++++++++++++-------- Hardware/LPC/F71882.cs | 11 +++--- Hardware/LPC/IT87.cs | 6 ++-- Hardware/LPC/W83627DHG.cs | 6 ++-- Hardware/TBalancer/TBalancer.cs | 6 ++-- Properties/AssemblyInfo.cs | 4 +-- 7 files changed, 71 insertions(+), 27 deletions(-) diff --git a/Hardware/ATI/ADL.cs b/Hardware/ATI/ADL.cs index d66b215..00d4bbf 100644 --- a/Hardware/ATI/ADL.cs +++ b/Hardware/ATI/ADL.cs @@ -110,7 +110,7 @@ namespace OpenHardwareMonitor.Hardware.ATI { public const int ADL_MAX_DISPLAYS = 40; public const int ADL_MAX_DEVICENAME = 32; public const int ADL_OK = 0; - public const int ADL_FAIL = -1; + public const int ADL_ERR = -1; public const int ADL_DRIVER_OK = 0; public const int ADL_MAX_GLSYNC_PORTS = 8; public const int ADL_MAX_GLSYNC_PORT_LEDS = 8; diff --git a/Hardware/ATI/ATIGPU.cs b/Hardware/ATI/ATIGPU.cs index 0f9e462..20c709a 100644 --- a/Hardware/ATI/ATIGPU.cs +++ b/Hardware/ATI/ATIGPU.cs @@ -54,6 +54,8 @@ namespace OpenHardwareMonitor.Hardware.ATI { private Sensor memoryClock; private Sensor coreVoltage; + private List active = new List(); + public ATIGPU(string name, int adapterIndex, int busNumber, int deviceNumber) { @@ -92,10 +94,7 @@ namespace OpenHardwareMonitor.Hardware.ATI { } public ISensor[] Sensors { - get { - return new ISensor[] { coreVoltage, coreClock, memoryClock, temperature, - fan }; - } + get { return active.ToArray(); } } public string GetReport() { @@ -104,24 +103,60 @@ namespace OpenHardwareMonitor.Hardware.ATI { public void Update() { ADLTemperature adlt = new ADLTemperature(); - ADL.ADL_Overdrive5_Temperature_Get(adapterIndex, 0, ref adlt); - temperature.Value = 0.001f * adlt.Temperature; + if (ADL.ADL_Overdrive5_Temperature_Get(adapterIndex, 0, ref adlt) + == ADL.ADL_OK) + { + temperature.Value = 0.001f * adlt.Temperature; + ActivateSensor(temperature); + } else { + DeactivateSensor(temperature); + } ADLFanSpeedValue adlf = new ADLFanSpeedValue(); adlf.SpeedType = ADL.ADL_DL_FANCTRL_SPEED_TYPE_RPM; - ADL.ADL_Overdrive5_FanSpeed_Get(adapterIndex, 0, ref adlf); - fan.Value = adlf.FanSpeed; + if (ADL.ADL_Overdrive5_FanSpeed_Get(adapterIndex, 0, ref adlf) + == ADL.ADL_OK) + { + fan.Value = adlf.FanSpeed; + ActivateSensor(fan); + } else { + DeactivateSensor(fan); + } ADLPMActivity adlp = new ADLPMActivity(); - ADL.ADL_Overdrive5_CurrentActivity_Get(adapterIndex, ref adlp); - coreClock.Value = 0.01f * adlp.EngineClock; - memoryClock.Value = 0.01f * adlp.MemoryClock; - coreVoltage.Value = 0.001f * adlp.Vddc; + if (ADL.ADL_Overdrive5_CurrentActivity_Get(adapterIndex, ref adlp) + == ADL.ADL_OK) + { + coreClock.Value = 0.01f * adlp.EngineClock; + memoryClock.Value = 0.01f * adlp.MemoryClock; + coreVoltage.Value = 0.001f * adlp.Vddc; + ActivateSensor(coreClock); + ActivateSensor(memoryClock); + ActivateSensor(coreVoltage); + } else { + DeactivateSensor(coreClock); + DeactivateSensor(memoryClock); + DeactivateSensor(coreVoltage); + } + } + + private void ActivateSensor(Sensor sensor) { + if (!active.Contains(sensor)) { + active.Add(sensor); + if (SensorAdded != null) + SensorAdded(sensor); + } + } + + private void DeactivateSensor(Sensor sensor) { + if (active.Contains(sensor)) { + active.Remove(sensor); + if (SensorRemoved != null) + SensorRemoved(sensor); + } } - #pragma warning disable 67 public event SensorEventHandler SensorAdded; public event SensorEventHandler SensorRemoved; - #pragma warning restore 67 } } diff --git a/Hardware/LPC/F71882.cs b/Hardware/LPC/F71882.cs index e9ee7c9..4efabd9 100644 --- a/Hardware/LPC/F71882.cs +++ b/Hardware/LPC/F71882.cs @@ -146,9 +146,10 @@ namespace OpenHardwareMonitor.Hardware.LPC { } foreach (Sensor sensor in temperatures) { - int value = ReadByte((byte)(TEMPERATURE_BASE_REG + 2 * sensor.Index)); + sbyte value = (sbyte)ReadByte((byte)( + TEMPERATURE_BASE_REG + 2 * sensor.Index)); sensor.Value = value; - if (value < 254) + if (value < sbyte.MaxValue && value > 0) ActivateSensor(sensor); else DeactivateSensor(sensor); @@ -170,14 +171,16 @@ namespace OpenHardwareMonitor.Hardware.LPC { private void ActivateSensor(Sensor sensor) { if (!active.Contains(sensor)) { active.Add(sensor); - SensorAdded(sensor); + if (SensorAdded != null) + SensorAdded(sensor); } } private void DeactivateSensor(Sensor sensor) { if (active.Contains(sensor)) { active.Remove(sensor); - SensorRemoved(sensor); + if (SensorRemoved != null) + SensorRemoved(sensor); } } diff --git a/Hardware/LPC/IT87.cs b/Hardware/LPC/IT87.cs index 2070b0e..e977fdb 100644 --- a/Hardware/LPC/IT87.cs +++ b/Hardware/LPC/IT87.cs @@ -205,14 +205,16 @@ namespace OpenHardwareMonitor.Hardware.LPC { private void ActivateSensor(Sensor sensor) { if (!active.Contains(sensor)) { active.Add(sensor); - SensorAdded(sensor); + if (SensorAdded != null) + SensorAdded(sensor); } } private void DeactivateSensor(Sensor sensor) { if (active.Contains(sensor)) { active.Remove(sensor); - SensorRemoved(sensor); + if (SensorRemoved != null) + SensorRemoved(sensor); } } diff --git a/Hardware/LPC/W83627DHG.cs b/Hardware/LPC/W83627DHG.cs index d48fe05..90b445d 100644 --- a/Hardware/LPC/W83627DHG.cs +++ b/Hardware/LPC/W83627DHG.cs @@ -239,14 +239,16 @@ namespace OpenHardwareMonitor.Hardware.LPC { private void ActivateSensor(Sensor sensor) { if (!active.Contains(sensor)) { active.Add(sensor); - SensorAdded(sensor); + if (SensorAdded != null) + SensorAdded(sensor); } } private void DeactivateSensor(Sensor sensor) { if (active.Contains(sensor)) { active.Remove(sensor); - SensorRemoved(sensor); + if (SensorRemoved != null) + SensorRemoved(sensor); } } diff --git a/Hardware/TBalancer/TBalancer.cs b/Hardware/TBalancer/TBalancer.cs index 139fc27..278c545 100644 --- a/Hardware/TBalancer/TBalancer.cs +++ b/Hardware/TBalancer/TBalancer.cs @@ -81,7 +81,8 @@ namespace OpenHardwareMonitor.Hardware.TBalancer { deactivating.Remove(sensor); if (!active.Contains(sensor)) { active.Add(sensor); - SensorAdded(sensor); + if (SensorAdded != null) + SensorAdded(sensor); } } @@ -89,7 +90,8 @@ namespace OpenHardwareMonitor.Hardware.TBalancer { if (deactivating.Contains(sensor)) { active.Remove(sensor); deactivating.Remove(sensor); - SensorRemoved(sensor); + if (SensorRemoved != null) + SensorRemoved(sensor); } else if (active.Contains(sensor)) { deactivating.Add(sensor); } diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index a4a5c07..d56e095 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -69,5 +69,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.1.5.0")] -[assembly: AssemblyFileVersion("0.1.5.0")] +[assembly: AssemblyVersion("0.1.6.0")] +[assembly: AssemblyFileVersion("0.1.6.0")]