# HG changeset patch # User moel.mich # Date 1304179438 0 # Node ID 35788ddd1825c0c3e43f439efa2d67f317e46d1a # Parent 5a18725d2c20ad703f74feb88abcfbacd57c394f Fixed Issue 199. diff -r 5a18725d2c20 -r 35788ddd1825 GUI/HardwareNode.cs --- a/GUI/HardwareNode.cs Sat Apr 23 14:18:02 2011 +0000 +++ b/GUI/HardwareNode.cs Sat Apr 30 16:03:58 2011 +0000 @@ -16,7 +16,7 @@ The Initial Developer of the Original Code is Michael Möller . - Portions created by the Initial Developer are Copyright (C) 2009-2010 + Portions created by the Initial Developer are Copyright (C) 2009-2011 the Initial Developer. All Rights Reserved. Contributor(s): @@ -50,7 +50,7 @@ private List typeNodes = new List(); public HardwareNode(IHardware hardware, PersistentSettings settings, - UnitManager unitManager) : base(hardware.Name) + UnitManager unitManager) : base() { this.settings = settings; this.unitManager = unitManager; @@ -73,6 +73,11 @@ hardware.SensorRemoved += new SensorEventHandler(SensorRemoved); } + public override string Text { + get { return hardware.Name; } + set { hardware.Name = value; } + } + public IHardware Hardware { get { return hardware; } } diff -r 5a18725d2c20 -r 35788ddd1825 GUI/MainForm.Designer.cs --- a/GUI/MainForm.Designer.cs Sat Apr 23 14:18:02 2011 +0000 +++ b/GUI/MainForm.Designer.cs Sat Apr 30 16:03:58 2011 +0000 @@ -102,7 +102,7 @@ this.hddMenuItem = new System.Windows.Forms.MenuItem(); this.helpMenuItem = new System.Windows.Forms.MenuItem(); this.aboutMenuItem = new System.Windows.Forms.MenuItem(); - this.sensorContextMenu = new System.Windows.Forms.ContextMenu(); + this.treeContextMenu = new System.Windows.Forms.ContextMenu(); this.saveFileDialog = new System.Windows.Forms.SaveFileDialog(); this.timer = new System.Windows.Forms.Timer(this.components); this.splitContainer = new OpenHardwareMonitor.GUI.SplitContainerAdv(); @@ -517,7 +517,7 @@ private System.Windows.Forms.MenuItem hddMenuItem; private System.Windows.Forms.MenuItem minTrayMenuItem; private System.Windows.Forms.MenuItem separatorMenuItem; - private System.Windows.Forms.ContextMenu sensorContextMenu; + private System.Windows.Forms.ContextMenu treeContextMenu; private System.Windows.Forms.MenuItem startMinMenuItem; private System.Windows.Forms.MenuItem startupMenuItem; private System.Windows.Forms.SaveFileDialog saveFileDialog; diff -r 5a18725d2c20 -r 35788ddd1825 GUI/MainForm.cs --- a/GUI/MainForm.cs Sat Apr 23 14:18:02 2011 +0000 +++ b/GUI/MainForm.cs Sat Apr 30 16:03:58 2011 +0000 @@ -16,7 +16,7 @@ The Initial Developer of the Original Code is Michael Möller . - Portions created by the Initial Developer are Copyright (C) 2009-2010 + Portions created by the Initial Developer are Copyright (C) 2009-2011 the Initial Developer. All Rights Reserved. Contributor(s): Paul Werelds @@ -317,7 +317,8 @@ CancelEventArgs e) { e.Cancel = !(treeView.CurrentNode != null && - treeView.CurrentNode.Tag is SensorNode); + (treeView.CurrentNode.Tag is SensorNode || + treeView.CurrentNode.Tag is HardwareNode)); } private void nodeCheckBox_IsVisibleValueNeeded(object sender, @@ -403,7 +404,7 @@ } private void treeView_Click(object sender, EventArgs e) { - + MouseEventArgs m = e as MouseEventArgs; if (m == null || m.Button != MouseButtons.Right) return; @@ -415,35 +416,35 @@ if (info.Node != null) { SensorNode node = info.Node.Tag as SensorNode; if (node != null && node.Sensor != null) { - sensorContextMenu.MenuItems.Clear(); + treeContextMenu.MenuItems.Clear(); if (node.Sensor.Parameters.Length > 0) { MenuItem item = new MenuItem("Parameters..."); item.Click += delegate(object obj, EventArgs args) { ShowParameterForm(node.Sensor); }; - sensorContextMenu.MenuItems.Add(item); + treeContextMenu.MenuItems.Add(item); } if (nodeTextBoxText.EditEnabled) { MenuItem item = new MenuItem("Rename"); item.Click += delegate(object obj, EventArgs args) { nodeTextBoxText.BeginEdit(); }; - sensorContextMenu.MenuItems.Add(item); + treeContextMenu.MenuItems.Add(item); } if (node.IsVisible) { MenuItem item = new MenuItem("Hide"); item.Click += delegate(object obj, EventArgs args) { node.IsVisible = false; }; - sensorContextMenu.MenuItems.Add(item); + treeContextMenu.MenuItems.Add(item); } else { MenuItem item = new MenuItem("Unhide"); item.Click += delegate(object obj, EventArgs args) { node.IsVisible = true; }; - sensorContextMenu.MenuItems.Add(item); + treeContextMenu.MenuItems.Add(item); } - sensorContextMenu.MenuItems.Add(new MenuItem("-")); + treeContextMenu.MenuItems.Add(new MenuItem("-")); { MenuItem item = new MenuItem("Show in Tray"); item.Checked = systemTray.Contains(node.Sensor); @@ -453,7 +454,7 @@ else systemTray.Add(node.Sensor, true); }; - sensorContextMenu.MenuItems.Add(item); + treeContextMenu.MenuItems.Add(item); } if (gadget != null) { MenuItem item = new MenuItem("Show in Gadget"); @@ -465,10 +466,10 @@ gadget.Add(node.Sensor); } }; - sensorContextMenu.MenuItems.Add(item); + treeContextMenu.MenuItems.Add(item); } if (node.Sensor.Control != null) { - sensorContextMenu.MenuItems.Add(new MenuItem("-")); + treeContextMenu.MenuItems.Add(new MenuItem("-")); IControl control = node.Sensor.Control; MenuItem controlItem = new MenuItem("Control"); MenuItem defaultItem = new MenuItem("Default"); @@ -477,13 +478,12 @@ defaultItem.Click += delegate(object obj, EventArgs args) { control.SetDefault(); }; - MenuItem manualItem = new MenuItem("Manual"); + MenuItem manualItem = new MenuItem("Manual"); controlItem.MenuItems.Add(manualItem); manualItem.Checked = control.ControlMode == ControlMode.Software; for (int i = 0; i <= 100; i += 5) { if (i <= control.MaxSoftwareValue && - i >= control.MinSoftwareValue) - { + i >= control.MinSoftwareValue) { MenuItem item = new MenuItem(i + " %"); manualItem.MenuItems.Add(item); item.Checked = control.ControlMode == ControlMode.Software && @@ -494,10 +494,25 @@ }; } } - sensorContextMenu.MenuItems.Add(controlItem); + treeContextMenu.MenuItems.Add(controlItem); } - sensorContextMenu.Show(treeView, new Point(m.X, m.Y)); + treeContextMenu.Show(treeView, new Point(m.X, m.Y)); + } + + HardwareNode hardwareNode = info.Node.Tag as HardwareNode; + if (hardwareNode != null && hardwareNode.Hardware != null) { + treeContextMenu.MenuItems.Clear(); + + if (nodeTextBoxText.EditEnabled) { + MenuItem item = new MenuItem("Rename"); + item.Click += delegate(object obj, EventArgs args) { + nodeTextBoxText.BeginEdit(); + }; + treeContextMenu.MenuItems.Add(item); + } + + treeContextMenu.Show(treeView, new Point(m.X, m.Y)); } } } diff -r 5a18725d2c20 -r 35788ddd1825 Hardware/ATI/ATIGPU.cs --- a/Hardware/ATI/ATIGPU.cs Sat Apr 23 14:18:02 2011 +0000 +++ b/Hardware/ATI/ATIGPU.cs Sat Apr 30 16:03:58 2011 +0000 @@ -16,7 +16,7 @@ The Initial Developer of the Original Code is Michael Möller . - Portions created by the Initial Developer are Copyright (C) 2009-2010 + Portions created by the Initial Developer are Copyright (C) 2009-2011 the Initial Developer. All Rights Reserved. Contributor(s): @@ -41,7 +41,6 @@ namespace OpenHardwareMonitor.Hardware.ATI { internal sealed class ATIGPU : Hardware { - private readonly string name; private readonly int adapterIndex; private readonly int busNumber; private readonly int deviceNumber; @@ -59,8 +58,9 @@ public ATIGPU(string name, int adapterIndex, int busNumber, int deviceNumber, ISettings settings) + : base(name, new Identifier("atigpu", + adapterIndex.ToString(CultureInfo.InvariantCulture)), settings) { - this.name = name; this.adapterIndex = adapterIndex; this.busNumber = busNumber; this.deviceNumber = deviceNumber; @@ -133,16 +133,6 @@ public int DeviceNumber { get { return deviceNumber; } } - public override string Name { - get { return name; } - } - - public override Identifier Identifier { - get { - return new Identifier("atigpu", - adapterIndex.ToString(CultureInfo.InvariantCulture)); - } - } public override HardwareType HardwareType { get { return HardwareType.GpuAti; } diff -r 5a18725d2c20 -r 35788ddd1825 Hardware/CPU/GenericCPU.cs --- a/Hardware/CPU/GenericCPU.cs Sat Apr 23 14:18:02 2011 +0000 +++ b/Hardware/CPU/GenericCPU.cs Sat Apr 30 16:03:58 2011 +0000 @@ -54,7 +54,6 @@ protected readonly int processorIndex; protected readonly int coreCount; - protected readonly string name; private readonly bool hasModelSpecificRegisters; @@ -79,7 +78,10 @@ return "CPU Core #" + (i + 1); } - public GenericCPU(int processorIndex, CPUID[][] cpuid, ISettings settings) { + public GenericCPU(int processorIndex, CPUID[][] cpuid, ISettings settings) + : base(cpuid[0][0].Name, CreateIdentifier(cpuid[0][0].Vendor, + processorIndex), settings) + { this.cpuid = cpuid; this.vendor = cpuid[0][0].Vendor; @@ -89,8 +91,7 @@ this.stepping = cpuid[0][0].Stepping; this.processorIndex = processorIndex; - this.coreCount = cpuid.Length; - this.name = cpuid[0][0].Name; + this.coreCount = cpuid.Length; // check if processor has MSRs if (cpuid[0][0].Data.GetLength(0) > 1 @@ -143,6 +144,19 @@ timeStampCounterFrequency = estimatedTimeStampCounterFrequency; } + private static Identifier CreateIdentifier(Vendor vendor, + int processorIndex) + { + string s; + switch (vendor) { + case Vendor.AMD: s = "amdcpu"; break; + case Vendor.Intel: s = "intelcpu"; break; + default: s = "genericcpu"; break; + } + return new Identifier(s, + processorIndex.ToString(CultureInfo.InvariantCulture)); + } + private static double EstimateTimeStampCounterFrequency() { // preload the function EstimateTimeStampCounterFrequency(0); @@ -230,23 +244,6 @@ return r.ToString(); } - public override Identifier Identifier { - get { - string s; - switch (vendor) { - case Vendor.AMD: s = "amdcpu"; break; - case Vendor.Intel: s = "intelcpu"; break; - default: s = "genericcpu"; break; - } - return new Identifier(s, - processorIndex.ToString(CultureInfo.InvariantCulture)); - } - } - - public override string Name { - get { return name; } - } - public override HardwareType HardwareType { get { return HardwareType.CPU; } } diff -r 5a18725d2c20 -r 35788ddd1825 Hardware/HDD/HDD.cs --- a/Hardware/HDD/HDD.cs Sat Apr 23 14:18:02 2011 +0000 +++ b/Hardware/HDD/HDD.cs Sat Apr 30 16:03:58 2011 +0000 @@ -40,11 +40,10 @@ using System.Globalization; namespace OpenHardwareMonitor.Hardware.HDD { - internal class HDD : IHardware { + internal class HDD : Hardware { private const int UPDATE_DIVIDER = 30; // update only every 30s - private readonly string name; private readonly IntPtr handle; private readonly int drive; private int count; @@ -57,9 +56,9 @@ public HDD(string name, IntPtr handle, int drive, SMART.AttributeID temperatureID, SMART.AttributeID lifeID, - ISettings settings) + ISettings settings) : base(name, new Identifier("hdd", + drive.ToString(CultureInfo.InvariantCulture)), settings) { - this.name = name; this.handle = handle; this.drive = drive; this.count = 0; @@ -78,30 +77,11 @@ Update(); } - public string Name { - get { return name; } - } - - public Identifier Identifier { - get { - return new Identifier("hdd", - drive.ToString(CultureInfo.InvariantCulture)); - } - } - - public HardwareType HardwareType { + public override HardwareType HardwareType { get { return HardwareType.HDD; } } - public IHardware[] SubHardware { - get { return new IHardware[0]; } - } - - public virtual IHardware Parent { - get { return null; } - } - - public ISensor[] Sensors { + public override ISensor[] Sensors { get { if (lifeID != SMART.AttributeID.None) return new ISensor[] { lifeSensor }; @@ -113,11 +93,7 @@ } } - public string GetReport() { - return null; - } - - public void Update() { + public override void Update() { if (count == 0) { SMART.DriveAttribute[] attributes = SMART.ReadSmart(handle, drive); @@ -151,18 +127,7 @@ SMART.CloseHandle(handle); } - #pragma warning disable 67 - public event SensorEventHandler SensorAdded; - public event SensorEventHandler SensorRemoved; - #pragma warning restore 67 - - public void Accept(IVisitor visitor) { - if (visitor == null) - throw new ArgumentNullException("visitor"); - visitor.VisitHardware(this); - } - - public void Traverse(IVisitor visitor) { + public override void Traverse(IVisitor visitor) { foreach (ISensor sensor in Sensors) sensor.Accept(visitor); } diff -r 5a18725d2c20 -r 35788ddd1825 Hardware/Hardware.cs --- a/Hardware/Hardware.cs Sat Apr 23 14:18:02 2011 +0000 +++ b/Hardware/Hardware.cs Sat Apr 30 16:03:58 2011 +0000 @@ -16,7 +16,7 @@ The Initial Developer of the Original Code is Michael Möller . - Portions created by the Initial Developer are Copyright (C) 2009-2010 + Portions created by the Initial Developer are Copyright (C) 2009-2011 the Initial Developer. All Rights Reserved. Contributor(s): @@ -41,7 +41,19 @@ namespace OpenHardwareMonitor.Hardware { internal abstract class Hardware : IHardware { - private readonly ListSet active = new ListSet(); + private readonly Identifier identifier; + protected readonly string name; + private string customName; + protected readonly ISettings settings; + protected readonly ListSet active = new ListSet(); + + public Hardware(string name, Identifier identifier, ISettings settings) { + this.settings = settings; + this.identifier = identifier; + this.name = name; + this.customName = settings.GetValue( + new Identifier(Identifier, "name").ToString(), name); + } public IHardware[] SubHardware { get { return new IHardware[0]; } @@ -51,29 +63,48 @@ get { return null; } } - public ISensor[] Sensors { + public virtual ISensor[] Sensors { get { return active.ToArray(); } } - protected void ActivateSensor(ISensor sensor) { + protected virtual void ActivateSensor(ISensor sensor) { if (active.Add(sensor)) if (SensorAdded != null) SensorAdded(sensor); } - protected void DeactivateSensor(ISensor sensor) { + protected virtual void DeactivateSensor(ISensor sensor) { if (active.Remove(sensor)) if (SensorRemoved != null) SensorRemoved(sensor); } + public string Name { + get { + return customName; + } + set { + if (!string.IsNullOrEmpty(value)) + customName = value; + else + customName = name; + settings.SetValue(new Identifier(Identifier, "name").ToString(), + customName); + } + } + + public Identifier Identifier { + get { + return identifier; + } + } + #pragma warning disable 67 public event SensorEventHandler SensorAdded; public event SensorEventHandler SensorRemoved; #pragma warning restore 67 - public abstract string Name { get; } - public abstract Identifier Identifier { get; } + public abstract HardwareType HardwareType { get; } public virtual string GetReport() { @@ -88,7 +119,7 @@ visitor.VisitHardware(this); } - public void Traverse(IVisitor visitor) { + public virtual void Traverse(IVisitor visitor) { foreach (ISensor sensor in active) sensor.Accept(visitor); } diff -r 5a18725d2c20 -r 35788ddd1825 Hardware/Heatmaster/Heatmaster.cs --- a/Hardware/Heatmaster/Heatmaster.cs Sat Apr 23 14:18:02 2011 +0000 +++ b/Hardware/Heatmaster/Heatmaster.cs Sat Apr 30 16:03:58 2011 +0000 @@ -134,8 +134,10 @@ return WriteField(device, field, '"' + value + '"'); } - public Heatmaster(string portName, ISettings settings) { - + public Heatmaster(string portName, ISettings settings) + : base("Heatmaster", new Identifier("heatmaster", + portName.TrimStart(new [] {'/'}).ToLowerInvariant()), settings) + { this.portName = portName; try { serialPort = new SerialPort(portName, 38400, Parity.None, 8, @@ -209,17 +211,6 @@ get { return HardwareType.Heatmaster; } } - public override Identifier Identifier { - get { - return new Identifier("heatmaster", - serialPort.PortName.TrimStart(new [] {'/'}).ToLowerInvariant()); - } - } - - public override string Name { - get { return "Heatmaster"; } - } - private void ProcessUpdateLine(string line) { Match match = Regex.Match(line, @">\[0:(\d+)\]([0-9:\|-]+)"); if (match.Success) { diff -r 5a18725d2c20 -r 35788ddd1825 Hardware/IHardware.cs --- a/Hardware/IHardware.cs Sat Apr 23 14:18:02 2011 +0000 +++ b/Hardware/IHardware.cs Sat Apr 30 16:03:58 2011 +0000 @@ -16,7 +16,7 @@ The Initial Developer of the Original Code is Michael Möller . - Portions created by the Initial Developer are Copyright (C) 2009-2010 + Portions created by the Initial Developer are Copyright (C) 2009-2011 the Initial Developer. All Rights Reserved. Contributor(s): @@ -52,7 +52,7 @@ public interface IHardware : IElement { - string Name { get; } + string Name { get; set; } Identifier Identifier { get; } HardwareType HardwareType { get; } diff -r 5a18725d2c20 -r 35788ddd1825 Hardware/Mainboard/Mainboard.cs --- a/Hardware/Mainboard/Mainboard.cs Sat Apr 23 14:18:02 2011 +0000 +++ b/Hardware/Mainboard/Mainboard.cs Sat Apr 30 16:03:58 2011 +0000 @@ -16,7 +16,7 @@ The Initial Developer of the Original Code is Michael Möller . - Portions created by the Initial Developer are Copyright (C) 2009-2010 + Portions created by the Initial Developer are Copyright (C) 2009-2011 the Initial Developer. All Rights Reserved. Contributor(s): @@ -43,12 +43,14 @@ internal class Mainboard : IHardware { private readonly SMBIOS smbios; private readonly string name; - + private string customName; + private readonly ISettings settings; private readonly LPCIO lpcio; private readonly LMSensors lmSensors; private readonly IHardware[] superIOHardware; public Mainboard(ISettings settings) { + this.settings = settings; this.smbios = new SMBIOS(); if (smbios.Board != null) { @@ -65,6 +67,9 @@ this.name = Manufacturer.Unknown.ToString(); } + this.customName = settings.GetValue( + new Identifier(Identifier, "name").ToString(), name); + ISuperIO[] superIO; int p = (int)Environment.OSVersion.Platform; if ((p == 4) || (p == 128)) { @@ -84,7 +89,17 @@ } public string Name { - get { return name; } + get { + return customName; + } + set { + if (!string.IsNullOrEmpty(value)) + customName = value; + else + customName = name; + settings.SetValue(new Identifier(Identifier, "name").ToString(), + customName); + } } public Identifier Identifier { diff -r 5a18725d2c20 -r 35788ddd1825 Hardware/Mainboard/SuperIOHardware.cs --- a/Hardware/Mainboard/SuperIOHardware.cs Sat Apr 23 14:18:02 2011 +0000 +++ b/Hardware/Mainboard/SuperIOHardware.cs Sat Apr 30 16:03:58 2011 +0000 @@ -46,7 +46,6 @@ private readonly Mainboard mainboard; private readonly ISuperIO superIO; - private readonly string name; private readonly List voltages = new List(); private readonly List temperatures = new List(); @@ -68,10 +67,12 @@ public SuperIOHardware(Mainboard mainboard, ISuperIO superIO, Manufacturer manufacturer, Model model, ISettings settings) + : base(ChipName.GetName(superIO.Chip), new Identifier("lpc", + superIO.Chip.ToString().ToLower(CultureInfo.InvariantCulture)), + settings) { this.mainboard = mainboard; this.superIO = superIO; - this.name = ChipName.GetName(superIO.Chip); this.readVoltage = (index) => superIO.Voltages[index]; this.readTemperature = (index) => superIO.Temperatures[index]; @@ -843,13 +844,6 @@ } } - public override Identifier Identifier { - get { - return new Identifier("lpc", - superIO.Chip.ToString().ToLower(CultureInfo.InvariantCulture)); - } - } - public override HardwareType HardwareType { get { return HardwareType.SuperIO; } } @@ -858,9 +852,6 @@ get { return mainboard; } } - public override string Name { - get { return name; } - } public override string GetReport() { return superIO.GetReport(); diff -r 5a18725d2c20 -r 35788ddd1825 Hardware/Nvidia/NvidiaGPU.cs --- a/Hardware/Nvidia/NvidiaGPU.cs Sat Apr 23 14:18:02 2011 +0000 +++ b/Hardware/Nvidia/NvidiaGPU.cs Sat Apr 30 16:03:58 2011 +0000 @@ -16,7 +16,7 @@ The Initial Developer of the Original Code is Michael Möller . - Portions created by the Initial Developer are Copyright (C) 2009-2010 + Portions created by the Initial Developer are Copyright (C) 2009-2011 the Initial Developer. All Rights Reserved. Contributor(s): @@ -42,7 +42,6 @@ namespace OpenHardwareMonitor.Hardware.Nvidia { internal class NvidiaGPU : Hardware { - private readonly string name; private readonly int adapterIndex; private readonly NvPhysicalGpuHandle handle; private readonly NvDisplayHandle? displayHandle; @@ -56,13 +55,9 @@ public NvidiaGPU(int adapterIndex, NvPhysicalGpuHandle handle, NvDisplayHandle? displayHandle, ISettings settings) + : base(GetName(handle), new Identifier("nvidiagpu", + adapterIndex.ToString(CultureInfo.InvariantCulture)), settings) { - string gpuName; - if (NVAPI.NvAPI_GPU_GetFullName(handle, out gpuName) == NvStatus.OK) { - this.name = "NVIDIA " + gpuName.Trim(); - } else { - this.name = "NVIDIA"; - } this.adapterIndex = adapterIndex; this.handle = handle; this.displayHandle = displayHandle; @@ -110,14 +105,12 @@ control = new Sensor("GPU Fan", 0, SensorType.Control, this, settings); } - public override string Name { - get { return name; } - } - - public override Identifier Identifier { - get { - return new Identifier("nvidiagpu", - adapterIndex.ToString(CultureInfo.InvariantCulture)); + private static string GetName(NvPhysicalGpuHandle handle) { + string gpuName; + if (NVAPI.NvAPI_GPU_GetFullName(handle, out gpuName) == NvStatus.OK) { + return "NVIDIA " + gpuName.Trim(); + } else { + return "NVIDIA"; } } diff -r 5a18725d2c20 -r 35788ddd1825 Hardware/TBalancer/TBalancer.cs --- a/Hardware/TBalancer/TBalancer.cs Sat Apr 23 14:18:02 2011 +0000 +++ b/Hardware/TBalancer/TBalancer.cs Sat Apr 30 16:03:58 2011 +0000 @@ -16,7 +16,7 @@ The Initial Developer of the Original Code is Michael Möller . - Portions created by the Initial Developer are Copyright (C) 2009-2010 + Portions created by the Initial Developer are Copyright (C) 2009-2011 the Initial Developer. All Rights Reserved. Contributor(s): @@ -41,9 +41,8 @@ using System.Text; namespace OpenHardwareMonitor.Hardware.TBalancer { - internal class TBalancer : IHardware { + internal class TBalancer : Hardware { - private readonly ISettings settings; private readonly int portIndex; private readonly byte protocolVersion; private readonly Sensor[] digitalTemperatures = new Sensor[8]; @@ -55,7 +54,6 @@ private readonly Sensor[] miniNGTemperatures = new Sensor[4]; private readonly Sensor[] miniNGFans = new Sensor[4]; private readonly Sensor[] miniNGControls = new Sensor[4]; - private readonly List active = new List(); private readonly List deactivating = new List(); private FT_HANDLE handle; @@ -66,10 +64,12 @@ public const byte ENDFLAG = 254; private delegate void MethodDelegate(); - private readonly MethodDelegate alternativeRequest; + private readonly MethodDelegate alternativeRequest; - public TBalancer(int portIndex, byte protocolVersion, ISettings settings) { - this.settings = settings; + public TBalancer(int portIndex, byte protocolVersion, ISettings settings) + : base("T-Balancer bigNG", new Identifier("bigng", + portIndex.ToString(CultureInfo.InvariantCulture)), settings) + { this.portIndex = portIndex; this.protocolVersion = protocolVersion; @@ -123,21 +123,15 @@ Update(); } - private void ActivateSensor(Sensor sensor) { + protected override void ActivateSensor(ISensor sensor) { deactivating.Remove(sensor); - if (!active.Contains(sensor)) { - active.Add(sensor); - if (SensorAdded != null) - SensorAdded(sensor); - } - } + base.ActivateSensor(sensor); + } - private void DeactivateSensor(Sensor sensor) { + protected override void DeactivateSensor(ISensor sensor) { if (deactivating.Contains(sensor)) { - active.Remove(sensor); deactivating.Remove(sensor); - if (SensorRemoved != null) - SensorRemoved(sensor); + base.DeactivateSensor(sensor); } else if (active.Contains(sensor)) { deactivating.Add(sensor); } @@ -265,34 +259,11 @@ } } - public HardwareType HardwareType { + public override HardwareType HardwareType { get { return HardwareType.TBalancer; } } - public string Name { - get { return "T-Balancer bigNG"; } - } - - public Identifier Identifier { - get { - return new Identifier("bigng", - this.portIndex.ToString(CultureInfo.InvariantCulture)); - } - } - - public IHardware[] SubHardware { - get { return new IHardware[0]; } - } - - public virtual IHardware Parent { - get { return null; } - } - - public ISensor[] Sensors { - get { return active.ToArray(); } - } - - public string GetReport() { + public override string GetReport() { StringBuilder r = new StringBuilder(); r.AppendLine("T-Balancer bigNG"); @@ -359,7 +330,7 @@ FTD2XX.FT_Purge(handle, FT_PURGE.FT_PURGE_ALL); } - public void Update() { + public override void Update() { while (FTD2XX.BytesToRead(handle) >= 285) ReadData(); if (FTD2XX.BytesToRead(handle) == 1) @@ -373,15 +344,5 @@ FTD2XX.FT_Close(handle); } - public event SensorEventHandler SensorAdded; - public event SensorEventHandler SensorRemoved; - - public void Accept(IVisitor visitor) { - if (visitor == null) - throw new ArgumentNullException("visitor"); - visitor.VisitHardware(this); - } - - public void Traverse(IVisitor visitor) { } } } diff -r 5a18725d2c20 -r 35788ddd1825 Properties/AssemblyVersion.cs --- a/Properties/AssemblyVersion.cs Sat Apr 23 14:18:02 2011 +0000 +++ b/Properties/AssemblyVersion.cs Sat Apr 30 16:03:58 2011 +0000 @@ -37,5 +37,5 @@ using System.Reflection; -[assembly: AssemblyVersion("0.3.0.0")] -[assembly: AssemblyInformationalVersion("0.3.0 Beta")] \ No newline at end of file +[assembly: AssemblyVersion("0.3.0.1")] +[assembly: AssemblyInformationalVersion("0.3.0.1 Alpha")] \ No newline at end of file