Hardware/HDD/SSDIntel.cs
author StephaneLenclud
Sun, 03 Feb 2013 18:01:50 +0100
branchMiniDisplay
changeset 433 090259cfd699
parent 344 3145aadca3d2
permissions -rw-r--r--
Adding SoundGraphDisplay and SensorFrontView classes.
They were respectively based on SystemTray and SensorNotifyIcon.
SoundGraphDisplay is now able to load iMONDisplay.dll providing it lives on your PATH.
Adding option to sensor context menu for adding it into FrontView.
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
}