diff --git a/ModuleKit/reader.swift b/ModuleKit/reader.swift index 3647ac6c..bf7930be 100644 --- a/ModuleKit/reader.swift +++ b/ModuleKit/reader.swift @@ -67,8 +67,9 @@ open class Reader: ReaderInternal_p { private var history: [T]? = [] - public init() { + public init(popup: Bool = false) { self.log = OSLog(subsystem: Bundle.main.bundleIdentifier!, category: "\(T.self)") + self.popup = popup self.setup() diff --git a/Modules/CPU/main.swift b/Modules/CPU/main.swift index d7b9d872..402238f6 100644 --- a/Modules/CPU/main.swift +++ b/Modules/CPU/main.swift @@ -40,7 +40,7 @@ public class CPU: Module { } } - public init(_ smc: UnsafePointer) { + public init() { self.settingsView = Settings("CPU") self.popupView = Popup("CPU") @@ -52,10 +52,10 @@ public class CPU: Module { self.loadReader = LoadReader() self.processReader = ProcessReader() - self.temperatureReader = TemperatureReader(smc: smc) + self.temperatureReader = TemperatureReader(popup: true) #if arch(x86_64) - self.frequencyReader = FrequencyReader() + self.frequencyReader = FrequencyReader(popup: true) #endif self.settingsView.callback = { [unowned self] in diff --git a/Modules/CPU/readers.swift b/Modules/CPU/readers.swift index 9844ca54..ad7ff9a5 100644 --- a/Modules/CPU/readers.swift +++ b/Modules/CPU/readers.swift @@ -226,26 +226,18 @@ public class ProcessReader: Reader<[TopProcess]> { } public class TemperatureReader: Reader { - private let smc: UnsafePointer - - init(smc: UnsafePointer) { - self.smc = smc - super.init() - self.popup = true - } - public override func read() { var temperature: Double? = nil - if let value = self.smc.pointee.getValue("TC0D"), value < 110 { + if let value = SMC.shared.getValue("TC0D"), value < 110 { temperature = value - } else if let value = self.smc.pointee.getValue("TC0E"), value < 110 { + } else if let value = SMC.shared.getValue("TC0E"), value < 110 { temperature = value - } else if let value = self.smc.pointee.getValue("TC0F"), value < 110 { + } else if let value = SMC.shared.getValue("TC0F"), value < 110 { temperature = value - } else if let value = self.smc.pointee.getValue("TC0P"), value < 110 { + } else if let value = SMC.shared.getValue("TC0P"), value < 110 { temperature = value - } else if let value = self.smc.pointee.getValue("TC0H"), value < 110 { + } else if let value = SMC.shared.getValue("TC0H"), value < 110 { temperature = value } @@ -280,11 +272,6 @@ public class FrequencyReader: Reader { } } - override init() { - super.init() - self.popup = true - } - public override func setup() { guard self.isEnabled else { return } diff --git a/Modules/Fans/main.swift b/Modules/Fans/main.swift index ca0a984a..ce1a7716 100644 --- a/Modules/Fans/main.swift +++ b/Modules/Fans/main.swift @@ -35,17 +35,14 @@ public struct Fan { } public class Fans: Module { - private var smc: UnsafePointer - private var fansReader: FansReader private var settingsView: Settings private let popupView: Popup - public init(_ smc: UnsafePointer) { - self.smc = smc - self.fansReader = FansReader(smc) + public init() { + self.fansReader = FansReader() self.settingsView = Settings("Fans", list: &self.fansReader.list) - self.popupView = Popup(smc) + self.popupView = Popup() super.init( popup: self.popupView, @@ -75,7 +72,7 @@ public class Fans: Module { } public override func isAvailable() -> Bool { - return smc.pointee.getValue("FNum") != nil && smc.pointee.getValue("FNum") != 0 && !self.fansReader.list.isEmpty + return SMC.shared.getValue("FNum") != nil && SMC.shared.getValue("FNum") != 0 && !self.fansReader.list.isEmpty } private func checkIfNoSensorsEnabled() { diff --git a/Modules/Fans/popup.swift b/Modules/Fans/popup.swift index d3073541..266435f8 100644 --- a/Modules/Fans/popup.swift +++ b/Modules/Fans/popup.swift @@ -16,12 +16,9 @@ import StatsKit internal class Popup: NSStackView, Popup_p { public var sizeCallback: ((NSSize) -> Void)? = nil - private var smc: UnsafePointer private var list: [Int: FanView] = [:] - public init(_ smc: UnsafePointer) { - self.smc = smc - + public init() { super.init(frame: NSRect(x: 0, y: 0, width: Constants.Popup.width, height: 0)) self.orientation = .vertical @@ -34,7 +31,7 @@ internal class Popup: NSStackView, Popup_p { internal func setup(_ values: [Fan]) { values.forEach { (f: Fan) in - let view = FanView(f, smc: self.smc, width: self.frame.width, callback: self.recalculateHeight) + let view = FanView(f, width: self.frame.width, callback: self.recalculateHeight) self.list[f.id] = view self.addArrangedSubview(view) } @@ -66,7 +63,6 @@ internal class Popup: NSStackView, Popup_p { internal class FanView: NSStackView { public var sizeCallback: (() -> Void) - private var smc: UnsafePointer private var fan: Fan private var ready: Bool = false @@ -78,9 +74,8 @@ internal class FanView: NSStackView { private var controlView: NSView? = nil private var debouncer: DispatchWorkItem? = nil - public init(_ fan: Fan, smc: UnsafePointer, width: CGFloat, callback: @escaping (() -> Void)) { + public init(_ fan: Fan, width: CGFloat, callback: @escaping (() -> Void)) { self.fan = fan - self.smc = smc self.sizeCallback = callback let inset: CGFloat = 5 @@ -204,7 +199,7 @@ internal class FanView: NSStackView { buttons.callback = { [weak self] (mode: FanMode) in self?.fan.mode = mode if let fan = self?.fan { - self?.smc.pointee.setFanMode(fan.id, mode: mode) + SMC.shared.setFanMode(fan.id, mode: mode) } self?.toggleMode() } @@ -295,7 +290,7 @@ internal class FanView: NSStackView { let task = DispatchWorkItem { [weak self] in DispatchQueue.global(qos: .userInteractive).async { [weak self] in if let id = self?.fan.id { - self?.smc.pointee.setFanSpeed(id, speed: Int(value)) + SMC.shared.setFanSpeed(id, speed: Int(value)) } DispatchQueue.main.async { field.textColor = .systemBlue diff --git a/Modules/Fans/readers.swift b/Modules/Fans/readers.swift index f20322b7..95548bb8 100644 --- a/Modules/Fans/readers.swift +++ b/Modules/Fans/readers.swift @@ -15,14 +15,12 @@ import StatsKit import os.log internal class FansReader: Reader<[Fan]> { - private var smc: UnsafePointer internal var list: [Fan] = [] - init(_ smc: UnsafePointer) { - self.smc = smc + init() { super.init() - guard let count = smc.pointee.getValue("FNum") else { + guard let count = SMC.shared.getValue("FNum") else { return } os_log(.debug, log: self.log, "Found %.0f fans", count) @@ -30,10 +28,10 @@ internal class FansReader: Reader<[Fan]> { for i in 0.. { public override func read() { for i in 0.. FanMode { - let fansMode: Int = Int(self.smc.pointee.getValue("FS! ") ?? 0) + let fansMode: Int = Int(SMC.shared.getValue("FS! ") ?? 0) var mode: FanMode = .automatic if fansMode == 0 { diff --git a/Modules/GPU/main.swift b/Modules/GPU/main.swift index a7c182fc..322d532d 100644 --- a/Modules/GPU/main.swift +++ b/Modules/GPU/main.swift @@ -62,8 +62,6 @@ public struct GPUs: value_t { } public class GPU: Module { - private let smc: UnsafePointer? - private var infoReader: InfoReader? = nil private var settingsView: Settings private var popupView: Popup = Popup() @@ -76,8 +74,7 @@ public class GPU: Module { } } - public init(_ smc: UnsafePointer) { - self.smc = smc + public init() { self.settingsView = Settings("GPU") super.init( @@ -87,7 +84,6 @@ public class GPU: Module { guard self.available else { return } self.infoReader = InfoReader() - self.infoReader?.smc = smc self.selectedGPU = Store.shared.string(key: "\(self.config.name)_gpu", defaultValue: self.selectedGPU) self.infoReader?.callbackHandler = { [unowned self] value in diff --git a/Modules/GPU/reader.swift b/Modules/GPU/reader.swift index a09706db..4467c980 100644 --- a/Modules/GPU/reader.swift +++ b/Modules/GPU/reader.swift @@ -27,8 +27,6 @@ let vendors: [Data: String] = [ ] internal class InfoReader: Reader { - internal var smc: UnsafePointer? = nil - private var gpus: GPUs = GPUs() private var devices: [device] = [] @@ -115,7 +113,7 @@ internal class InfoReader: Reader { type = .discrete if temperature == nil || temperature == 0 { - if let tmp = self.smc?.pointee.getValue("TGDD"), tmp != 128 { + if let tmp = SMC.shared.getValue("TGDD"), tmp != 128 { temperature = Int(tmp) } } @@ -124,7 +122,7 @@ internal class InfoReader: Reader { type = .integrated if temperature == nil || temperature == 0 { - if let tmp = self.smc?.pointee.getValue("TCGC"), tmp != 128 { + if let tmp = SMC.shared.getValue("TCGC"), tmp != 128 { temperature = Int(tmp) } } diff --git a/Modules/Sensors/main.swift b/Modules/Sensors/main.swift index 21fb4c1e..ea3b79a6 100644 --- a/Modules/Sensors/main.swift +++ b/Modules/Sensors/main.swift @@ -18,8 +18,8 @@ public class Sensors: Module { private let popupView: Popup = Popup() private var settingsView: Settings - public init(_ smc: UnsafePointer) { - self.sensorsReader = SensorsReader(smc) + public init() { + self.sensorsReader = SensorsReader() self.settingsView = Settings("Sensors", list: &self.sensorsReader.list) super.init( diff --git a/Modules/Sensors/readers.swift b/Modules/Sensors/readers.swift index f84e0b07..5616faca 100644 --- a/Modules/Sensors/readers.swift +++ b/Modules/Sensors/readers.swift @@ -16,14 +16,11 @@ import os.log internal class SensorsReader: Reader<[Sensor_t]> { internal var list: [Sensor_t] = [] - private var smc: UnsafePointer - init(_ smc: UnsafePointer) { - self.smc = smc - + init() { super.init() - var available: [String] = self.smc.pointee.getAllKeys() + var available: [String] = SMC.shared.getAllKeys() var list: [Sensor_t] = [] available = available.filter({ (key: String) -> Bool in @@ -56,7 +53,7 @@ internal class SensorsReader: Reader<[Sensor_t]> { } for (index, sensor) in list.enumerated().reversed() { - if let newValue = self.smc.pointee.getValue(sensor.key) { + if let newValue = SMC.shared.getValue(sensor.key) { // Remove the temperature sensor, if SMC report more that 110 C degree. if sensor.type == SensorType.Temperature.rawValue && newValue > 110 { list.remove(at: index) @@ -74,7 +71,7 @@ internal class SensorsReader: Reader<[Sensor_t]> { public override func read() { for i in 0.. kern_return_t{ return IOServiceClose(conn) }