namespace HardwareMonitorStatusWindow.Service; public class Sensor { public required SensorType Type { get; set; } public required string Identifier { get; set; } public required string Name { get; set; } public required float? Value { get; set; } internal static Sensor Create(LibreHardwareMonitor.Hardware.ISensor sensor) { return new Sensor { Type = MapSensorType(sensor.SensorType), Name = sensor.Name, Identifier = sensor.Identifier.ToString(), Value = sensor.Value }; } private static SensorType MapSensorType(LibreHardwareMonitor.Hardware.SensorType sensorType) { return sensorType switch { LibreHardwareMonitor.Hardware.SensorType.Voltage => SensorType.Voltage, LibreHardwareMonitor.Hardware.SensorType.Current => SensorType.Current, LibreHardwareMonitor.Hardware.SensorType.Power => SensorType.Power, LibreHardwareMonitor.Hardware.SensorType.Clock => SensorType.Clock, LibreHardwareMonitor.Hardware.SensorType.Temperature => SensorType.Temperature, LibreHardwareMonitor.Hardware.SensorType.Load => SensorType.Load, LibreHardwareMonitor.Hardware.SensorType.Frequency => SensorType.Frequency, LibreHardwareMonitor.Hardware.SensorType.Fan => SensorType.Fan, LibreHardwareMonitor.Hardware.SensorType.Flow => SensorType.Flow, LibreHardwareMonitor.Hardware.SensorType.Control => SensorType.Control, LibreHardwareMonitor.Hardware.SensorType.Level => SensorType.Level, LibreHardwareMonitor.Hardware.SensorType.Factor => SensorType.Factor, LibreHardwareMonitor.Hardware.SensorType.Data => SensorType.Data, LibreHardwareMonitor.Hardware.SensorType.SmallData => SensorType.SmallData, LibreHardwareMonitor.Hardware.SensorType.Throughput => SensorType.Throughput, LibreHardwareMonitor.Hardware.SensorType.TimeSpan => SensorType.TimeSpan, LibreHardwareMonitor.Hardware.SensorType.Timing => SensorType.Timing, LibreHardwareMonitor.Hardware.SensorType.Energy => SensorType.Energy, LibreHardwareMonitor.Hardware.SensorType.Noise => SensorType.Noise, LibreHardwareMonitor.Hardware.SensorType.Conductivity => SensorType.Conductivity, LibreHardwareMonitor.Hardware.SensorType.Humidity => SensorType.Humidity, _ => throw new ArgumentOutOfRangeException(nameof(sensorType), sensorType, null) }; } }