diff -r abed9987d993 -r de70c4468b36 Hardware/Computer.cs --- a/Hardware/Computer.cs Thu Jul 01 20:25:38 2010 +0000 +++ b/Hardware/Computer.cs Sat Jul 03 12:08:51 2010 +0000 @@ -125,25 +125,52 @@ writer.WriteLine(); } - private void ReportHardwareTree(IHardware hardware, TextWriter w, + private int CompareSensor(ISensor a, ISensor b) { + int c = a.SensorType.CompareTo(b.SensorType); + if (c == 0) + return a.Index.CompareTo(b.Index); + else + return c; + } + + private void ReportHardwareSensorTree(IHardware hardware, TextWriter w, string space) { w.WriteLine("{0}|", space); w.WriteLine("{0}+-+ {1} ({2})", space, hardware.Name, hardware.Identifier); - foreach (ISensor sensor in hardware.Sensors) { - w.WriteLine("{0}| +- {1} : {2} : {3} : {4}", - space, sensor.SensorType, sensor.Index, sensor.Name, + ISensor[] sensors = hardware.Sensors; + Array.Sort(sensors, CompareSensor); + foreach (ISensor sensor in sensors) { + w.WriteLine("{0}| +- {1}[{2}] : {3} : {4}", + space, sensor.SensorType, sensor.Index, string.Format(CultureInfo.InvariantCulture, "{0} : {1} : {2}", - sensor.Value, sensor.Min, sensor.Max)); - foreach (IParameter parameter in sensor.Parameters) { - w.WriteLine("{0}| +- {1} : {2} : {3}", - space, parameter.Name, parameter.IsDefault, - string.Format(CultureInfo.InvariantCulture, "{0} : {1}", - parameter.DefaultValue, parameter.Value)); + sensor.Value, sensor.Min, sensor.Max), sensor.Name); + } + foreach (IHardware subHardware in hardware.SubHardware) + ReportHardwareSensorTree(subHardware, w, "| "); + } + + private void ReportHardwareParameterTree(IHardware hardware, TextWriter w, + string space) { + w.WriteLine("{0}|", space); + w.WriteLine("{0}+-+ {1} ({2})", + space, hardware.Name, hardware.Identifier); + ISensor[] sensors = hardware.Sensors; + Array.Sort(sensors, CompareSensor); + foreach (ISensor sensor in sensors) { + if (sensor.Parameters.Length > 0) { + w.WriteLine("{0}| +- {1}[{2}] : {3}", + space, sensor.SensorType, sensor.Index, sensor.Name); + foreach (IParameter parameter in sensor.Parameters) { + w.WriteLine("{0}| +- {1} : {2}", + space, parameter.Name, + string.Format(CultureInfo.InvariantCulture, "{0} : {1}", + parameter.DefaultValue, parameter.Value)); + } } } foreach (IHardware subHardware in hardware.SubHardware) - ReportHardwareTree(subHardware, w, "| "); + ReportHardwareParameterTree(subHardware, w, "| "); } private void ReportHardware(IHardware hardware, TextWriter w) { @@ -180,9 +207,20 @@ w.WriteLine(); NewSection(w); + w.WriteLine("Sensors"); + w.WriteLine(); foreach (IGroup group in groups) { foreach (IHardware hardware in group.Hardware) - ReportHardwareTree(hardware, w, ""); + ReportHardwareSensorTree(hardware, w, ""); + } + w.WriteLine(); + + NewSection(w); + w.WriteLine("Parameters"); + w.WriteLine(); + foreach (IGroup group in groups) { + foreach (IHardware hardware in group.Hardware) + ReportHardwareParameterTree(hardware, w, ""); } w.WriteLine();