Hardware/HDD/SSDIntel.cs
author moel.mich
Sun, 28 Oct 2012 11:34:53 +0000
changeset 385 8f16f03797f5
parent 344 3145aadca3d2
permissions -rw-r--r--
Fixed Issue 382.
moel@324
     1
/*
moel@324
     2
 
moel@344
     3
  This Source Code Form is subject to the terms of the Mozilla Public
moel@344
     4
  License, v. 2.0. If a copy of the MPL was not distributed with this
moel@344
     5
  file, You can obtain one at http://mozilla.org/MPL/2.0/.
moel@324
     6
 
moel@344
     7
  Copyright (C) 2009-2012 Michael Möller <mmoeller@openhardwaremonitor.org>
moel@344
     8
	Copyright (C) 2010 Paul Werelds
moel@344
     9
  Copyright (C) 2011 Roland Reinl <roland-reinl@gmx.de>
moel@344
    10
	
moel@324
    11
*/
moel@324
    12
moel@374
    13
using System.Collections.Generic;
moel@374
    14
using OpenHardwareMonitor.Collections;
moel@374
    15
moel@324
    16
namespace OpenHardwareMonitor.Hardware.HDD {
moel@374
    17
   
moel@324
    18
  [NamePrefix("INTEL SSD"), 
moel@324
    19
   RequireSmart(0xE1), RequireSmart(0xE8), RequireSmart(0xE9)]
moel@324
    20
  internal class SSDIntel : AbstractHarddrive {
moel@324
    21
moel@324
    22
    private static readonly IEnumerable<SmartAttribute> smartAttributes =
moel@324
    23
      new List<SmartAttribute> {
moel@324
    24
moel@328
    25
      new SmartAttribute(0x01, SmartNames.ReadErrorRate),
moel@328
    26
      new SmartAttribute(0x03, SmartNames.SpinUpTime),
moel@328
    27
      new SmartAttribute(0x04, SmartNames.StartStopCount, RawToInt),
moel@328
    28
      new SmartAttribute(0x05, SmartNames.ReallocatedSectorsCount),
moel@328
    29
      new SmartAttribute(0x09, SmartNames.PowerOnHours, RawToInt),
moel@328
    30
      new SmartAttribute(0x0C, SmartNames.PowerCycleCount, RawToInt),
moel@328
    31
      new SmartAttribute(0xAA, SmartNames.AvailableReservedSpace),
moel@328
    32
      new SmartAttribute(0xAB, SmartNames.ProgramFailCount),
moel@328
    33
      new SmartAttribute(0xAC, SmartNames.EraseFailCount),
moel@328
    34
      new SmartAttribute(0xB8, SmartNames.EndToEndError),
moel@328
    35
      new SmartAttribute(0xC0, SmartNames.UnsafeShutdownCount), 
moel@328
    36
      new SmartAttribute(0xE1, SmartNames.HostWrites, 
moel@374
    37
        (byte[] r, byte v, IReadOnlyArray<IParameter> p) 
moel@374
    38
          => { return RawToInt(r, v, p) / 0x20; }, 
moel@324
    39
        SensorType.Data, 0),
moel@328
    40
      new SmartAttribute(0xE8, SmartNames.RemainingLife, 
moel@324
    41
        null, SensorType.Level, 0),
moel@328
    42
      new SmartAttribute(0xE9, SmartNames.MediaWearOutIndicator),
moel@328
    43
      new SmartAttribute(0xF1, SmartNames.HostWrites,
moel@374
    44
        (byte[] r, byte v, IReadOnlyArray<IParameter> p) 
moel@374
    45
          => { return RawToInt(r, v, p) / 0x20; }, 
moel@324
    46
        SensorType.Data, 0),
moel@328
    47
      new SmartAttribute(0xF2, SmartNames.HostReads, 
moel@374
    48
        (byte[] r, byte v, IReadOnlyArray<IParameter> p) 
moel@374
    49
          => { return RawToInt(r, v, p) / 0x20; }, 
moel@324
    50
        SensorType.Data, 1),      
moel@324
    51
    };
moel@324
    52
moel@325
    53
    public SSDIntel(ISmart smart, string name, string firmwareRevision, 
moel@325
    54
      int index, ISettings settings)
moel@325
    55
      : base(smart, name, firmwareRevision, index, smartAttributes, settings) {}
moel@324
    56
  }
moel@324
    57
}