Translation.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  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. Conductivity, // µS/cm
  30. }
  31. /// <summary>
  32. /// Insulate ourselves from hardware monitor's API changes so that our metric names / values
  33. /// don't unexpectedly change when a user updates OhmGraphite and their dashboard breaks
  34. /// </summary>
  35. public enum HardwareType
  36. {
  37. Mainboard,
  38. SuperIO,
  39. CPU,
  40. RAM,
  41. GpuNvidia,
  42. GpuAti,
  43. GpuIntel,
  44. Cooler,
  45. HDD,
  46. NIC,
  47. PSU,
  48. EmbeddedController,
  49. Battery,
  50. }
  51. public static class TranslationExtension
  52. {
  53. public static SensorType ToOwnSensor(this LibreHardwareMonitor.Hardware.SensorType s)
  54. {
  55. switch (s)
  56. {
  57. case LibreHardwareMonitor.Hardware.SensorType.Voltage:
  58. return SensorType.Voltage;
  59. case LibreHardwareMonitor.Hardware.SensorType.Current:
  60. return SensorType.Current;
  61. case LibreHardwareMonitor.Hardware.SensorType.Clock:
  62. return SensorType.Clock;
  63. case LibreHardwareMonitor.Hardware.SensorType.Temperature:
  64. return SensorType.Temperature;
  65. case LibreHardwareMonitor.Hardware.SensorType.Load:
  66. return SensorType.Load;
  67. case LibreHardwareMonitor.Hardware.SensorType.Frequency:
  68. return SensorType.Frequency;
  69. case LibreHardwareMonitor.Hardware.SensorType.Fan:
  70. return SensorType.Fan;
  71. case LibreHardwareMonitor.Hardware.SensorType.Flow:
  72. return SensorType.Flow;
  73. case LibreHardwareMonitor.Hardware.SensorType.Control:
  74. return SensorType.Control;
  75. case LibreHardwareMonitor.Hardware.SensorType.Level:
  76. return SensorType.Level;
  77. case LibreHardwareMonitor.Hardware.SensorType.Factor:
  78. return SensorType.Factor;
  79. case LibreHardwareMonitor.Hardware.SensorType.Power:
  80. return SensorType.Power;
  81. case LibreHardwareMonitor.Hardware.SensorType.Data:
  82. return SensorType.Data;
  83. case LibreHardwareMonitor.Hardware.SensorType.SmallData:
  84. return SensorType.SmallData;
  85. case LibreHardwareMonitor.Hardware.SensorType.Throughput:
  86. return SensorType.Throughput;
  87. case LibreHardwareMonitor.Hardware.SensorType.TimeSpan:
  88. return SensorType.TimeSpan;
  89. case LibreHardwareMonitor.Hardware.SensorType.Energy:
  90. return SensorType.Energy;
  91. case LibreHardwareMonitor.Hardware.SensorType.Noise:
  92. return SensorType.Noise;
  93. case LibreHardwareMonitor.Hardware.SensorType.Humidity:
  94. return SensorType.Humidity;
  95. case LibreHardwareMonitor.Hardware.SensorType.Conductivity:
  96. return SensorType.Conductivity;
  97. default:
  98. throw new ArgumentOutOfRangeException(nameof(s), s, "unexpected hardware monitor sensor translation");
  99. }
  100. }
  101. public static HardwareType ToOwnHardware(this LibreHardwareMonitor.Hardware.HardwareType s)
  102. {
  103. switch (s)
  104. {
  105. case LibreHardwareMonitor.Hardware.HardwareType.Motherboard:
  106. return HardwareType.Mainboard;
  107. case LibreHardwareMonitor.Hardware.HardwareType.SuperIO:
  108. return HardwareType.SuperIO;
  109. case LibreHardwareMonitor.Hardware.HardwareType.Cpu:
  110. return HardwareType.CPU;
  111. case LibreHardwareMonitor.Hardware.HardwareType.Memory:
  112. return HardwareType.RAM;
  113. case LibreHardwareMonitor.Hardware.HardwareType.GpuNvidia:
  114. return HardwareType.GpuNvidia;
  115. case LibreHardwareMonitor.Hardware.HardwareType.GpuAmd:
  116. return HardwareType.GpuAti;
  117. case LibreHardwareMonitor.Hardware.HardwareType.GpuIntel:
  118. return HardwareType.GpuIntel;
  119. case LibreHardwareMonitor.Hardware.HardwareType.Cooler:
  120. return HardwareType.Cooler;
  121. case LibreHardwareMonitor.Hardware.HardwareType.Storage:
  122. return HardwareType.HDD;
  123. case LibreHardwareMonitor.Hardware.HardwareType.Network:
  124. return HardwareType.NIC;
  125. case LibreHardwareMonitor.Hardware.HardwareType.Psu:
  126. return HardwareType.PSU;
  127. case LibreHardwareMonitor.Hardware.HardwareType.EmbeddedController:
  128. return HardwareType.EmbeddedController;
  129. case LibreHardwareMonitor.Hardware.HardwareType.Battery:
  130. return HardwareType.Battery;
  131. default:
  132. throw new ArgumentOutOfRangeException(nameof(s), s, "unexpected hardware monitor hardware translation");
  133. }
  134. }
  135. }
  136. }