Translation.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. using System;
  2. namespace OhmGraphite
  3. {
  4. /// <summary>
  5. /// Insulate ourselves from hardware monitor's API changes so that our metric names / values
  6. /// don't unexpectedly change when a user updates OhmGraphite and their dashboard breaks
  7. /// </summary>
  8. public enum SensorType
  9. {
  10. Voltage, // V
  11. Current, // A
  12. Clock, // MHz
  13. Temperature, // °C
  14. Load, // %
  15. Frequency, // Hz
  16. Fan, // RPM
  17. Flow, // L/h
  18. Control, // %
  19. Level, // %
  20. Factor, // 1
  21. Power, // W
  22. Data, // GB = 2^30 Bytes
  23. SmallData, // MB = 2^20 Bytes
  24. Throughput, // B/s
  25. TimeSpan, // Seconds
  26. Energy, // milliwatt-hour (mWh)
  27. Noise, // dBA
  28. Humidity, // %
  29. }
  30. /// <summary>
  31. /// Insulate ourselves from hardware monitor's API changes so that our metric names / values
  32. /// don't unexpectedly change when a user updates OhmGraphite and their dashboard breaks
  33. /// </summary>
  34. public enum HardwareType
  35. {
  36. Mainboard,
  37. SuperIO,
  38. CPU,
  39. RAM,
  40. GpuNvidia,
  41. GpuAti,
  42. GpuIntel,
  43. Cooler,
  44. HDD,
  45. NIC,
  46. PSU,
  47. EmbeddedController,
  48. Battery,
  49. }
  50. public static class TranslationExtension
  51. {
  52. public static SensorType ToOwnSensor(this LibreHardwareMonitor.Hardware.SensorType s)
  53. {
  54. switch (s)
  55. {
  56. case LibreHardwareMonitor.Hardware.SensorType.Voltage:
  57. return SensorType.Voltage;
  58. case LibreHardwareMonitor.Hardware.SensorType.Current:
  59. return SensorType.Current;
  60. case LibreHardwareMonitor.Hardware.SensorType.Clock:
  61. return SensorType.Clock;
  62. case LibreHardwareMonitor.Hardware.SensorType.Temperature:
  63. return SensorType.Temperature;
  64. case LibreHardwareMonitor.Hardware.SensorType.Load:
  65. return SensorType.Load;
  66. case LibreHardwareMonitor.Hardware.SensorType.Frequency:
  67. return SensorType.Frequency;
  68. case LibreHardwareMonitor.Hardware.SensorType.Fan:
  69. return SensorType.Fan;
  70. case LibreHardwareMonitor.Hardware.SensorType.Flow:
  71. return SensorType.Flow;
  72. case LibreHardwareMonitor.Hardware.SensorType.Control:
  73. return SensorType.Control;
  74. case LibreHardwareMonitor.Hardware.SensorType.Level:
  75. return SensorType.Level;
  76. case LibreHardwareMonitor.Hardware.SensorType.Factor:
  77. return SensorType.Factor;
  78. case LibreHardwareMonitor.Hardware.SensorType.Power:
  79. return SensorType.Power;
  80. case LibreHardwareMonitor.Hardware.SensorType.Data:
  81. return SensorType.Data;
  82. case LibreHardwareMonitor.Hardware.SensorType.SmallData:
  83. return SensorType.SmallData;
  84. case LibreHardwareMonitor.Hardware.SensorType.Throughput:
  85. return SensorType.Throughput;
  86. case LibreHardwareMonitor.Hardware.SensorType.TimeSpan:
  87. return SensorType.TimeSpan;
  88. case LibreHardwareMonitor.Hardware.SensorType.Energy:
  89. return SensorType.Energy;
  90. case LibreHardwareMonitor.Hardware.SensorType.Noise:
  91. return SensorType.Noise;
  92. case LibreHardwareMonitor.Hardware.SensorType.Humidity:
  93. return SensorType.Humidity;
  94. default:
  95. throw new ArgumentOutOfRangeException(nameof(s), s, "unexpected hardware monitor sensor translation");
  96. }
  97. }
  98. public static HardwareType ToOwnHardware(this LibreHardwareMonitor.Hardware.HardwareType s)
  99. {
  100. switch (s)
  101. {
  102. case LibreHardwareMonitor.Hardware.HardwareType.Motherboard:
  103. return HardwareType.Mainboard;
  104. case LibreHardwareMonitor.Hardware.HardwareType.SuperIO:
  105. return HardwareType.SuperIO;
  106. case LibreHardwareMonitor.Hardware.HardwareType.Cpu:
  107. return HardwareType.CPU;
  108. case LibreHardwareMonitor.Hardware.HardwareType.Memory:
  109. return HardwareType.RAM;
  110. case LibreHardwareMonitor.Hardware.HardwareType.GpuNvidia:
  111. return HardwareType.GpuNvidia;
  112. case LibreHardwareMonitor.Hardware.HardwareType.GpuAmd:
  113. return HardwareType.GpuAti;
  114. case LibreHardwareMonitor.Hardware.HardwareType.GpuIntel:
  115. return HardwareType.GpuIntel;
  116. case LibreHardwareMonitor.Hardware.HardwareType.Cooler:
  117. return HardwareType.Cooler;
  118. case LibreHardwareMonitor.Hardware.HardwareType.Storage:
  119. return HardwareType.HDD;
  120. case LibreHardwareMonitor.Hardware.HardwareType.Network:
  121. return HardwareType.NIC;
  122. case LibreHardwareMonitor.Hardware.HardwareType.Psu:
  123. return HardwareType.PSU;
  124. case LibreHardwareMonitor.Hardware.HardwareType.EmbeddedController:
  125. return HardwareType.EmbeddedController;
  126. case LibreHardwareMonitor.Hardware.HardwareType.Battery:
  127. return HardwareType.Battery;
  128. default:
  129. throw new ArgumentOutOfRangeException(nameof(s), s, "unexpected hardware monitor hardware translation");
  130. }
  131. }
  132. }
  133. }