1.1 --- a/Hardware/Nvidia/NvidiaGPU.cs Fri Feb 19 19:50:07 2010 +0000
1.2 +++ b/Hardware/Nvidia/NvidiaGPU.cs Sat Feb 20 19:51:10 2010 +0000
1.3 @@ -50,57 +50,45 @@
1.4 private Sensor[] temperatures;
1.5 private Sensor fan = null;
1.6
1.7 - private bool available;
1.8 + public NvidiaGPU(int adapterIndex, NvPhysicalGpuHandle handle) {
1.9 + string gpuName;
1.10 + if (NVAPI.NvAPI_GPU_GetFullName(handle, out gpuName) == NvStatus.OK) {
1.11 + this.name = "NVIDIA " + gpuName.Trim();
1.12 + } else {
1.13 + this.name = "NVIDIA";
1.14 + }
1.15 + this.icon = Utilities.EmbeddedResources.GetImage("nvidia.png");
1.16 + this.adapterIndex = adapterIndex;
1.17 + this.handle = handle;
1.18
1.19 - public NvidiaGPU(int adapterIndex, NvPhysicalGpuHandle handle) {
1.20 - try {
1.21 - string gpuName;
1.22 - if (NVAPI.NvAPI_GPU_GetFullName(handle, out gpuName) == NvStatus.OK) {
1.23 - this.name = "NVIDIA " + gpuName.Trim();
1.24 - } else {
1.25 - this.name = "NVIDIA";
1.26 + NvGPUThermalSettings settings = GetThermalSettings();
1.27 + temperatures = new Sensor[settings.Count];
1.28 + for (int i = 0; i < temperatures.Length; i++) {
1.29 + NvSensor sensor = settings.Sensor[i];
1.30 + string name;
1.31 + switch (sensor.Target) {
1.32 + case NvThermalTarget.BOARD: name = "GPU Board"; break;
1.33 + case NvThermalTarget.GPU: name = "GPU Core"; break;
1.34 + case NvThermalTarget.MEMORY: name = "GPU Memory"; break;
1.35 + case NvThermalTarget.POWER_SUPPLY: name = "GPU Power Supply"; break;
1.36 + case NvThermalTarget.UNKNOWN: name = "GPU Unknown"; break;
1.37 + default: name = "GPU"; break;
1.38 }
1.39 - this.icon = Utilities.EmbeddedResources.GetImage("nvidia.png");
1.40 - this.adapterIndex = adapterIndex;
1.41 - this.handle = handle;
1.42 + temperatures[i] = new Sensor(name, i, sensor.DefaultMaxTemp,
1.43 + SensorType.Temperature, this);
1.44 + ActivateSensor(temperatures[i]);
1.45 + }
1.46
1.47 - NvGPUThermalSettings settings = GetThermalSettings();
1.48 - temperatures = new Sensor[settings.Count];
1.49 - for (int i = 0; i < temperatures.Length; i++) {
1.50 - NvSensor sensor = settings.Sensor[i];
1.51 - string name;
1.52 - switch (sensor.Target) {
1.53 - case NvThermalTarget.BOARD: name = "GPU Board"; break;
1.54 - case NvThermalTarget.GPU: name = "GPU Core"; break;
1.55 - case NvThermalTarget.MEMORY: name = "GPU Memory"; break;
1.56 - case NvThermalTarget.POWER_SUPPLY: name = "GPU Power Supply"; break;
1.57 - case NvThermalTarget.UNKNOWN: name = "GPU Unknown"; break;
1.58 - default: name = "GPU"; break;
1.59 - }
1.60 - temperatures[i] = new Sensor(name, i, sensor.DefaultMaxTemp,
1.61 - SensorType.Temperature, this);
1.62 - ActivateSensor(temperatures[i]);
1.63 + int value;
1.64 + if (NVAPI.NvAPI_GPU_GetTachReading != null &&
1.65 + NVAPI.NvAPI_GPU_GetTachReading(handle, out value) == NvStatus.OK) {
1.66 + if (value > 0) {
1.67 + fan = new Sensor("GPU", 0, SensorType.Fan, this);
1.68 + ActivateSensor(fan);
1.69 }
1.70 -
1.71 - int value;
1.72 - if (NVAPI.NvAPI_GPU_GetTachReading != null &&
1.73 - NVAPI.NvAPI_GPU_GetTachReading(handle, out value) == NvStatus.OK) {
1.74 - if (value > 0) {
1.75 - fan = new Sensor("GPU", 0, SensorType.Fan, this);
1.76 - ActivateSensor(fan);
1.77 - }
1.78 - }
1.79 -
1.80 - available = temperatures.Length > 0 || fan != null;
1.81 - } catch (Exception e) {
1.82 - System.Windows.Forms.MessageBox.Show(e.Message + "\n" + e.StackTrace);
1.83 }
1.84 }
1.85
1.86 - public bool IsAvailable {
1.87 - get { return available; }
1.88 - }
1.89 -
1.90 public string Name {
1.91 get { return name; }
1.92 }