From 938554f738911b87b50418f3dc7a5ee804527152 Mon Sep 17 00:00:00 2001 From: Serhiy Mytrovtsiy Date: Tue, 7 Mar 2023 20:54:35 +0100 Subject: [PATCH] feat: changed `Sensor` type to the `Fan` for the Fastest Fan. That allows showing RPM or percentage for the Fastest Fan based on the `Fan value` setting (#1335) --- Modules/Sensors/popup.swift | 2 +- Modules/Sensors/readers.swift | 9 +++++++-- Modules/Sensors/values.swift | 8 ++++---- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/Modules/Sensors/popup.swift b/Modules/Sensors/popup.swift index fa582fb4..25868c78 100644 --- a/Modules/Sensors/popup.swift +++ b/Modules/Sensors/popup.swift @@ -33,7 +33,7 @@ internal class Popup: NSStackView, Popup_p { } internal func setup(_ values: [Sensor_p]?) { - guard let fans = values?.filter({ $0.type == .fan }), + guard let fans = values?.filter({ $0.type == .fan && !$0.isComputed }), var sensors = values?.filter({ $0.type != .fan }) else { return } diff --git a/Modules/Sensors/readers.swift b/Modules/Sensors/readers.swift index 65a29cc3..8970d956 100644 --- a/Modules/Sensors/readers.swift +++ b/Modules/Sensors/readers.swift @@ -191,7 +191,12 @@ internal class SensorsReader: Reader<[Sensor_p]> { if !fanSensors.isEmpty && fanSensors.count > 1 { if let f = fanSensors.max(by: { $0.value < $1.value }) as? Fan { if let idx = self.list.firstIndex(where: { $0.key == "Fastest Fan" }) { - self.list[idx].value = (f.value*100)/f.maxSpeed + if var fan = self.list[idx] as? Fan { + fan.value = f.value + fan.minSpeed = f.minSpeed + fan.maxSpeed = f.maxSpeed + self.list[idx] = fan + } } } } @@ -244,7 +249,7 @@ internal class SensorsReader: Reader<[Sensor_p]> { } if !fanSensors.isEmpty && fanSensors.count > 1 { if let f = fanSensors.max(by: { $0.value < $1.value }) as? Fan { - list.append(Sensor(key: "Fastest Fan", name: "Fastest Fan", value: (f.value*100)/f.maxSpeed, group: .sensor, type: .fan, platforms: Platform.all, isComputed: true)) + list.append(Fan(id: -1, key: "Fastest Fan", name: "Fastest Fan", minSpeed: f.minSpeed, maxSpeed: f.maxSpeed, value: f.value, mode: .automatic, isComputed: true)) } } diff --git a/Modules/Sensors/values.swift b/Modules/Sensors/values.swift index 5891537d..8d632e76 100644 --- a/Modules/Sensors/values.swift +++ b/Modules/Sensors/values.swift @@ -74,7 +74,7 @@ internal struct Sensor: Sensor_p { case .current: return "A" case .fan: - return "%" + return "RPM" } } } @@ -126,7 +126,7 @@ internal struct Sensor: Sensor_p { let val = value >= 9.95 ? "\(Int(round(value)))" : String(format: "%.1f", value) return "\(val)\(unit)" case .fan: - return "\(Int(value))\(unit)" + return "\(Int(value))" } } } @@ -154,8 +154,8 @@ internal struct Fan: Sensor_p { let id: Int var key: String var name: String - let minSpeed: Double - let maxSpeed: Double + var minSpeed: Double + var maxSpeed: Double var value: Double var mode: FanMode