1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/Hardware/HDD/SSDMicron.cs Sun Jul 08 15:24:44 2012 +0000
1.3 @@ -0,0 +1,51 @@
1.4 +/*
1.5 +
1.6 + This Source Code Form is subject to the terms of the Mozilla Public
1.7 + License, v. 2.0. If a copy of the MPL was not distributed with this
1.8 + file, You can obtain one at http://mozilla.org/MPL/2.0/.
1.9 +
1.10 + Copyright (C) 2012 Michael Möller <mmoeller@openhardwaremonitor.org>
1.11 +
1.12 +*/
1.13 +
1.14 +namespace OpenHardwareMonitor.Hardware.HDD {
1.15 + using System.Collections.Generic;
1.16 +
1.17 + [NamePrefix(""), RequireSmart(0xAA), RequireSmart(0xAB), RequireSmart(0xAC),
1.18 + RequireSmart(0xAD), RequireSmart(0xAE), RequireSmart(0xCA)]
1.19 + internal class SSDMicron : AbstractHarddrive {
1.20 +
1.21 + private static readonly IEnumerable<SmartAttribute> smartAttributes =
1.22 + new List<SmartAttribute> {
1.23 +
1.24 + new SmartAttribute(0x01, SmartNames.ReadErrorRate, RawToInt),
1.25 + new SmartAttribute(0x05, SmartNames.ReallocatedSectorsCount, RawToInt),
1.26 + new SmartAttribute(0x09, SmartNames.PowerOnHours, RawToInt),
1.27 + new SmartAttribute(0x0C, SmartNames.PowerCycleCount, RawToInt),
1.28 + new SmartAttribute(0xAA, SmartNames.NewFailingBlockCount, RawToInt),
1.29 + new SmartAttribute(0xAB, SmartNames.ProgramFailCount, RawToInt),
1.30 + new SmartAttribute(0xAC, SmartNames.EraseFailCount, RawToInt),
1.31 + new SmartAttribute(0xAD, SmartNames.WearLevelingCount, RawToInt),
1.32 + new SmartAttribute(0xAE, SmartNames.UnexpectedPowerLossCount, RawToInt),
1.33 + new SmartAttribute(0xB5, SmartNames.Non4kAlignedAccess,
1.34 + (byte[] raw, byte value) => { return 6e4f * ((raw[5] << 8) | raw[4]); }),
1.35 + new SmartAttribute(0xB7, SmartNames.SataDownshiftErrorCount, RawToInt),
1.36 + new SmartAttribute(0xBB, SmartNames.ReportedUncorrectableErrors, RawToInt),
1.37 + new SmartAttribute(0xBC, SmartNames.CommandTimeout, RawToInt),
1.38 + new SmartAttribute(0xBD, SmartNames.FactoryBadBlockCount, RawToInt),
1.39 + new SmartAttribute(0xC4, SmartNames.ReallocationEventCount, RawToInt),
1.40 + new SmartAttribute(0xC5, SmartNames.CurrentPendingSectorCount),
1.41 + new SmartAttribute(0xC6, SmartNames.OffLineUncorrectableErrorCount, RawToInt),
1.42 + new SmartAttribute(0xC7, SmartNames.UltraDmaCrcErrorCount, RawToInt),
1.43 + new SmartAttribute(0xCA, SmartNames.RemainingLife,
1.44 + (byte[] raw, byte value) => { return 100 - RawToInt(raw, value); },
1.45 + SensorType.Level, 0),
1.46 + new SmartAttribute(0xCE, SmartNames.WriteErrorRate,
1.47 + (byte[] raw, byte value) => { return 6e4f * ((raw[1] << 8) | raw[0]); }),
1.48 + };
1.49 +
1.50 + public SSDMicron(ISmart smart, string name, string firmwareRevision,
1.51 + int index, ISettings settings)
1.52 + : base(smart, name, firmwareRevision, index, smartAttributes, settings) {}
1.53 + }
1.54 +}