moel@64: /* moel@64: moel@64: Version: MPL 1.1/GPL 2.0/LGPL 2.1 moel@64: moel@64: The contents of this file are subject to the Mozilla Public License Version moel@64: 1.1 (the "License"); you may not use this file except in compliance with moel@64: the License. You may obtain a copy of the License at moel@64: moel@64: http://www.mozilla.org/MPL/ moel@64: moel@64: Software distributed under the License is distributed on an "AS IS" basis, moel@64: WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License moel@64: for the specific language governing rights and limitations under the License. moel@64: moel@64: The Original Code is the Open Hardware Monitor code. moel@64: moel@64: The Initial Developer of the Original Code is moel@64: Michael Möller . moel@64: Portions created by the Initial Developer are Copyright (C) 2009-2010 moel@64: the Initial Developer. All Rights Reserved. moel@64: moel@64: Contributor(s): moel@64: moel@64: Alternatively, the contents of this file may be used under the terms of moel@64: either the GNU General Public License Version 2 or later (the "GPL"), or moel@64: the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), moel@64: in which case the provisions of the GPL or the LGPL are applicable instead moel@64: of those above. If you wish to allow use of your version of this file only moel@64: under the terms of either the GPL or the LGPL, and not to allow others to moel@64: use your version of this file under the terms of the MPL, indicate your moel@64: decision by deleting the provisions above and replace them with the notice moel@64: and other provisions required by the GPL or the LGPL. If you do not delete moel@64: the provisions above, a recipient may use your version of this file under moel@64: the terms of any one of the MPL, the GPL or the LGPL. moel@64: moel@64: */ moel@64: moel@64: using System; moel@64: using System.Collections.Generic; moel@64: using System.Drawing; moel@64: using System.Text; moel@64: using OpenHardwareMonitor.Hardware.LPC; moel@64: moel@64: namespace OpenHardwareMonitor.Hardware.Mainboard { moel@64: public class Mainboard : IHardware { moel@64: private SMBIOS smbios; moel@64: private string name; moel@64: private Image icon; moel@64: moel@130: private LPCIO lpcio; moel@130: private IHardware[] superIOHardware; moel@64: moel@64: public Mainboard() { moel@64: this.smbios = new SMBIOS(); moel@76: moel@76: if (smbios.Board != null) { moel@76: if (smbios.Board.ProductName != null moel@76: && smbios.Board.ProductName != "") { moel@126: if (smbios.Board.Manufacturer == Manufacturer.Unknown) moel@76: this.name = smbios.Board.ProductName; moel@76: else moel@76: this.name = smbios.Board.Manufacturer + " " + moel@76: smbios.Board.ProductName; moel@76: } else { moel@76: this.name = smbios.Board.Manufacturer.ToString(); moel@76: } moel@64: } else { moel@126: this.name = Manufacturer.Unknown.ToString(); moel@64: } moel@76: moel@64: this.icon = Utilities.EmbeddedResources.GetImage("mainboard.png"); moel@130: this.lpcio = new LPCIO(); moel@130: ISuperIO[] superIO = lpcio.SuperIO; moel@130: superIOHardware = new IHardware[superIO.Length]; moel@130: for (int i = 0; i < superIO.Length; i++) moel@130: superIOHardware[i] = new SuperIOHardware(superIO[i], moel@130: smbios.Board != null ? smbios.Board.Manufacturer : moel@130: Manufacturer.Unknown, smbios.Board != null ? smbios.Board.Model : moel@130: Model.Unknown); moel@64: } moel@64: moel@64: public string Name { moel@64: get { return name; } moel@64: } moel@64: moel@109: public Identifier Identifier { moel@109: get { return new Identifier("mainboard"); } moel@64: } moel@64: moel@64: public Image Icon { moel@64: get { return icon; } moel@64: } moel@64: moel@64: public string GetReport() { moel@64: StringBuilder r = new StringBuilder(); moel@64: moel@64: r.AppendLine("Mainboard"); moel@64: r.AppendLine(); moel@64: r.Append(smbios.GetReport()); moel@64: moel@130: r.Append(lpcio.GetReport()); moel@67: moel@64: return r.ToString(); moel@64: } moel@64: moel@64: public void Update() { } moel@64: moel@110: public void Close() { } moel@64: moel@64: public IHardware[] SubHardware { moel@130: get { return superIOHardware; } moel@64: } moel@64: moel@64: public ISensor[] Sensors { moel@64: get { return new ISensor[0]; } moel@64: } moel@64: moel@64: #pragma warning disable 67 moel@64: public event SensorEventHandler SensorAdded; moel@64: public event SensorEventHandler SensorRemoved; moel@64: #pragma warning restore 67 moel@110: moel@110: public void Accept(IVisitor visitor) { moel@110: visitor.VisitHardware(this); moel@110: } moel@110: moel@110: public void Traverse(IVisitor visitor) { moel@130: foreach (IHardware hardware in superIOHardware) moel@110: hardware.Accept(visitor); moel@110: } moel@64: } moel@64: }