Hardware/HexStringArray.cs
author moel.mich
Sun, 08 May 2011 22:10:13 +0000
changeset 279 6bce967ba1b5
parent 272 037a2d66082f
child 344 3145aadca3d2
permissions -rw-r--r--
Fixed the bus and core clock reading on AMD family 10h model Ah CPUs. The new "Core Performance Boost" feature of these CPUs resulted in very low accuracy of the bus speed (and as a consequence also an inaccurate TSC multiplier). This fixed Issue 205.
moel@165
     1
/*
moel@165
     2
  
moel@165
     3
  Version: MPL 1.1/GPL 2.0/LGPL 2.1
moel@165
     4
moel@165
     5
  The contents of this file are subject to the Mozilla Public License Version
moel@165
     6
  1.1 (the "License"); you may not use this file except in compliance with
moel@165
     7
  the License. You may obtain a copy of the License at
moel@165
     8
 
moel@165
     9
  http://www.mozilla.org/MPL/
moel@165
    10
moel@165
    11
  Software distributed under the License is distributed on an "AS IS" basis,
moel@165
    12
  WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
moel@165
    13
  for the specific language governing rights and limitations under the License.
moel@165
    14
moel@165
    15
  The Original Code is the Open Hardware Monitor code.
moel@165
    16
moel@165
    17
  The Initial Developer of the Original Code is 
moel@165
    18
  Michael Möller <m.moeller@gmx.ch>.
moel@277
    19
  Portions created by the Initial Developer are Copyright (C) 2009-2011
moel@165
    20
  the Initial Developer. All Rights Reserved.
moel@165
    21
moel@165
    22
  Contributor(s):
moel@165
    23
moel@165
    24
  Alternatively, the contents of this file may be used under the terms of
moel@165
    25
  either the GNU General Public License Version 2 or later (the "GPL"), or
moel@165
    26
  the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
moel@165
    27
  in which case the provisions of the GPL or the LGPL are applicable instead
moel@165
    28
  of those above. If you wish to allow use of your version of this file only
moel@165
    29
  under the terms of either the GPL or the LGPL, and not to allow others to
moel@165
    30
  use your version of this file under the terms of the MPL, indicate your
moel@165
    31
  decision by deleting the provisions above and replace them with the notice
moel@165
    32
  and other provisions required by the GPL or the LGPL. If you do not delete
moel@165
    33
  the provisions above, a recipient may use your version of this file under
moel@165
    34
  the terms of any one of the MPL, the GPL or the LGPL.
moel@165
    35
 
moel@165
    36
*/
moel@165
    37
moel@165
    38
using System;
moel@165
    39
using System.Collections.Generic;
moel@165
    40
moel@165
    41
namespace OpenHardwareMonitor.Hardware {
moel@246
    42
  internal static class HexStringArray {
moel@165
    43
moel@246
    44
    public static byte Read(string s, ushort address) {
moel@246
    45
      string[] lines = s.Split(new[] { '\r', '\n' }, 
moel@246
    46
        StringSplitOptions.RemoveEmptyEntries);
moel@165
    47
moel@246
    48
      foreach (string line in lines) {
moel@277
    49
        string[] array = line.Split(new[] { ' ', '\t' }, 
moel@246
    50
          StringSplitOptions.RemoveEmptyEntries);
moel@272
    51
        if (array.Length == 0)
moel@272
    52
          continue; 
moel@246
    53
        if (Convert.ToInt32(array[0], 16) == (address & 0xFFF0)) 
moel@246
    54
          return Convert.ToByte(array[(address & 0x0F) + 1], 16);
moel@165
    55
      }
moel@165
    56
moel@246
    57
      throw new ArgumentException();
moel@165
    58
    }
moel@165
    59
  }
moel@165
    60
}