diff --git a/Modules/Sensors/main.swift b/Modules/Sensors/main.swift index 72726ddd..22de0050 100644 --- a/Modules/Sensors/main.swift +++ b/Modules/Sensors/main.swift @@ -61,9 +61,16 @@ public class Sensors: Module { return } + var list: [String] = [] + value!.forEach { (s: Sensor_t) in + if s.state { + list.append(s.formattedMiniValue) + } + } + self.popupView.usageCallback(value!) if let widget = self.widget as? SensorsWidget { - widget.setValues(value?.filter{ $0.state }.map{ $0.formattedMiniValue } ?? []) + widget.setValues(list) } } } diff --git a/Modules/Sensors/popup.swift b/Modules/Sensors/popup.swift index a149236c..089856ff 100644 --- a/Modules/Sensors/popup.swift +++ b/Modules/Sensors/popup.swift @@ -29,9 +29,11 @@ internal class Popup: NSView { return } - var types: [SensorType_t: Int] = [:] + var types: [SensorType_t] = [] values!.forEach { (s: Sensor_t) in - types[s.type] = (types[s.type] ?? 0) + 1 + if !types.contains(s.type) { + types.append(s.type) + } } self.subviews.forEach { (v: NSView) in @@ -39,22 +41,23 @@ internal class Popup: NSView { } var y: CGFloat = 0 - types.sorted{ $0.1 < $1.1 }.forEach { (t: (key: SensorType_t, value: Int)) in - let filtered = values!.filter{ $0.type == t.key } - var groups: [SensorGroup_t: Int] = [:] + types.reversed().forEach { (typ: SensorType_t) in + let filtered = values!.filter{ $0.type == typ } + var groups: [SensorGroup_t] = [] filtered.forEach { (s: Sensor_t) in - groups[s.group] = (groups[s.group] ?? 0) + 1 + if !groups.contains(s.group) { + groups.append(s.group) + } } let height: CGFloat = CGFloat((22*filtered.count)) + Constants.Popup.separatorHeight - let view: NSView = NSView(frame: NSRect(x: 0, y: y, width: self.frame.width, height: height)) - let separator = SeparatorView(t.key, origin: NSPoint(x: 0, y: view.frame.height - Constants.Popup.separatorHeight), width: self.frame.width) + let separator = SeparatorView(typ, origin: NSPoint(x: 0, y: view.frame.height - Constants.Popup.separatorHeight), width: self.frame.width) view.addSubview(separator) var i: CGFloat = 0 - groups.sorted{ $0.1 < $1.1 }.forEach { (g: (key: SensorGroup_t, value: Int)) in - filtered.reversed().filter{ $0.group == g.key }.forEach { (s: Sensor_t) in + groups.reversed().forEach { (group: SensorGroup_t) in + filtered.reversed().filter{ $0.group == group }.forEach { (s: Sensor_t) in self.list[s.key] = PopupRow(view, n: i, title: "\(s.name):", value: s.formattedValue) i += 1 } diff --git a/Modules/Sensors/readers.swift b/Modules/Sensors/readers.swift index 6ac9cc04..6fe9b441 100644 --- a/Modules/Sensors/readers.swift +++ b/Modules/Sensors/readers.swift @@ -27,21 +27,18 @@ internal class SensorsReader: Reader<[Sensor_t]> { available = available.filter({ (key: String) -> Bool in switch key.prefix(1) { case "T", "V", "P": - if SensorsDict[key] == nil { + if SensorsList.firstIndex(where: { $0.key == key }) == nil { os_log(.debug, "Missing sensor key %s on the list", key) } - return SensorsDict[key] != nil + return true default: return false } }) - available.forEach { (key: String) in - if var sensor = SensorsDict[key] { - sensor.value = smc.pointee.getValue(key) - if sensor.value != nil { - sensor.key = key - list.append(sensor) - } + SensorsList.forEach { (s: Sensor_t) in + if let idx = available.firstIndex(where: { $0 == s.key }) { + list.append(s) + available.remove(at: idx) } } diff --git a/Modules/Sensors/settings.swift b/Modules/Sensors/settings.swift index 438d9e9f..10c52daa 100644 --- a/Modules/Sensors/settings.swift +++ b/Modules/Sensors/settings.swift @@ -52,9 +52,11 @@ internal class Settings: NSView, Settings_v { } self.subviews.forEach{ $0.removeFromSuperview() } - var types: [SensorType_t: Int] = [:] + var types: [SensorType_t] = [] self.list.pointee.forEach { (s: Sensor_t) in - types[s.type] = (types[s.type] ?? 0) + 1 + if !types.contains(s.type) { + types.append(s.type) + } } let rowHeight: CGFloat = 30 @@ -71,15 +73,17 @@ internal class Settings: NSView, Settings_v { )) var y: CGFloat = 0 - types.sorted{ $0.1 < $1.1 }.forEach { (t: (key: SensorType_t, value: Int)) in - let filtered = self.list.pointee.filter{ $0.type == t.key } - var groups: [SensorGroup_t: Int] = [:] + types.reversed().forEach { (typ: SensorType_t) in + let filtered = self.list.pointee.filter{ $0.type == typ } + var groups: [SensorGroup_t] = [] filtered.forEach { (s: Sensor_t) in - groups[s.group] = (groups[s.group] ?? 0) + 1 + if !groups.contains(s.group) { + groups.append(s.group) + } } - groups.sorted{ $0.1 < $1.1 }.forEach { (g: (key: SensorGroup_t, value: Int)) in - filtered.reversed().filter{ $0.group == g.key }.forEach { (s: Sensor_t) in + groups.reversed().forEach { (group: SensorGroup_t) in + filtered.reversed().filter{ $0.group == group }.forEach { (s: Sensor_t) in let row: NSView = ToggleTitleRow( frame: NSRect(x: 0, y: y, width: view.frame.width, height: rowHeight), title: s.name, @@ -95,7 +99,7 @@ internal class Settings: NSView, Settings_v { } let rowTitleView: NSView = NSView(frame: NSRect(x: 0, y: y, width: view.frame.width, height: rowHeight)) - let rowTitle: NSTextField = LabelField(frame: NSRect(x: 0, y: (rowHeight-19)/2, width: view.frame.width, height: 19), t.key) + let rowTitle: NSTextField = LabelField(frame: NSRect(x: 0, y: (rowHeight-19)/2, width: view.frame.width, height: 19), typ) rowTitle.font = NSFont.systemFont(ofSize: 14, weight: .regular) rowTitle.textColor = .secondaryLabelColor rowTitle.alignment = .center diff --git a/Modules/Sensors/values.swift b/Modules/Sensors/values.swift index 57eba2f2..ed340f2b 100644 --- a/Modules/Sensors/values.swift +++ b/Modules/Sensors/values.swift @@ -30,8 +30,8 @@ enum SensorType: SensorType_t { struct Sensor_t { let store: Store = Store() + var key: String var name: String - var key: String = "" var group: SensorGroup_t var type: SensorType_t @@ -88,139 +88,139 @@ struct Sensor_t { } // List of keys: https://github.com/acidanthera/VirtualSMC/blob/master/Docs/SMCSensorKeys.txt -let SensorsDict: [String: Sensor_t] = [ +let SensorsList: [Sensor_t] = [ /// Temperature - "TA0P": Sensor_t(name: "Ambient 1", group: SensorGroup.Sensor.rawValue, type: SensorType.Temperature.rawValue), - "TA1P": Sensor_t(name: "Ambient 2", group: SensorGroup.Sensor.rawValue, type: SensorType.Temperature.rawValue), - "Th0H": Sensor_t(name: "Heatpipe 1", group: SensorGroup.Sensor.rawValue, type: SensorType.Temperature.rawValue), - "Th1H": Sensor_t(name: "Heatpipe 2", group: SensorGroup.Sensor.rawValue, type: SensorType.Temperature.rawValue), - "Th2H": Sensor_t(name: "Heatpipe 3", group: SensorGroup.Sensor.rawValue, type: SensorType.Temperature.rawValue), - "Th3H": Sensor_t(name: "Heatpipe 4", group: SensorGroup.Sensor.rawValue, type: SensorType.Temperature.rawValue), - "TZ0C": Sensor_t(name: "Termal zone 1", group: SensorGroup.Sensor.rawValue, type: SensorType.Temperature.rawValue), - "TZ1C": Sensor_t(name: "Termal zone 2", group: SensorGroup.Sensor.rawValue, type: SensorType.Temperature.rawValue), - - "TC0E": Sensor_t(name: "CPU 1", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC0F": Sensor_t(name: "CPU 2", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC0D": Sensor_t(name: "CPU die", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC0C": Sensor_t(name: "CPU core", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC0H": Sensor_t(name: "CPU heatsink", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC0P": Sensor_t(name: "CPU proximity", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TCAD": Sensor_t(name: "CPU package", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - - "TC0c": Sensor_t(name: "CPU core 1", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC1c": Sensor_t(name: "CPU core 2", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC2c": Sensor_t(name: "CPU core 3", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC3c": Sensor_t(name: "CPU core 4", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC4c": Sensor_t(name: "CPU core 5", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC5c": Sensor_t(name: "CPU core 6", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC6c": Sensor_t(name: "CPU core 7", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC7c": Sensor_t(name: "CPU core 8", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC8c": Sensor_t(name: "CPU core 9", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC9c": Sensor_t(name: "CPU core 10", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC10c": Sensor_t(name: "CPU core 11", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC11c": Sensor_t(name: "CPU core 12", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC12c": Sensor_t(name: "CPU core 13", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC13c": Sensor_t(name: "CPU core 14", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC14c": Sensor_t(name: "CPU core 15", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - "TC15c": Sensor_t(name: "CPU core 16", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), - - "TCGC": Sensor_t(name: "GPU Intel Graphics", group: SensorGroup.GPU.rawValue, type: SensorType.Temperature.rawValue), - "TG0D": Sensor_t(name: "GPU die", group: SensorGroup.GPU.rawValue, type: SensorType.Temperature.rawValue), - "TG0H": Sensor_t(name: "GPU heatsink", group: SensorGroup.GPU.rawValue, type: SensorType.Temperature.rawValue), - "TG0P": Sensor_t(name: "GPU proximity", group: SensorGroup.GPU.rawValue, type: SensorType.Temperature.rawValue), - - "Tm0P": Sensor_t(name: "Mainboard", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), - "Tp0P": Sensor_t(name: "Powerboard", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), - "TB1T": Sensor_t(name: "Battery", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), - "TW0P": Sensor_t(name: "Airport", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), - "TL0P": Sensor_t(name: "Display", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), - "TI0P": Sensor_t(name: "Thunderbold 1", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), - "TI1P": Sensor_t(name: "Thunderbold 2", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), - "TI2P": Sensor_t(name: "Thunderbold 3", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), - "TI3P": Sensor_t(name: "Thunderbold 4", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), - - "TN0D": Sensor_t(name: "Northbridge die", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), - "TN0H": Sensor_t(name: "Northbridge heatsink", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), - "TN0P": Sensor_t(name: "Northbridge proximity", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), - - /// Voltage - "VCAC": Sensor_t(name: "CPU IA", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), - "VCSC": Sensor_t(name: "CPU System Agent", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), - "VC0C": Sensor_t(name: "CPU Core 1", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), - "VC1C": Sensor_t(name: "CPU Core 2", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), - "VC2C": Sensor_t(name: "CPU Core 3", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), - "VC3C": Sensor_t(name: "CPU Core 4", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), - "VC4C": Sensor_t(name: "CPU Core 5", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), - "VC5C": Sensor_t(name: "CPU Core 6", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), - "VC6C": Sensor_t(name: "CPU Core 7", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), - "VC7C": Sensor_t(name: "CPU Core 8", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), - "VC8C": Sensor_t(name: "CPU Core 9", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), - "VC9C": Sensor_t(name: "CPU Core 10", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), - "VC10C": Sensor_t(name: "CPU Core 11", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), - "VC11C": Sensor_t(name: "CPU Core 12", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), - "VC12C": Sensor_t(name: "CPU Core 13", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), - "VC13C": Sensor_t(name: "CPU Core 14", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), - "VC14C": Sensor_t(name: "CPU Core 15", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), - "VC15C": Sensor_t(name: "CPU Core 16", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), - - "VCTC": Sensor_t(name: "GPU Intel Graphics", group: SensorGroup.GPU.rawValue, type: SensorType.Voltage.rawValue), - "VG0C": Sensor_t(name: "GPU", group: SensorGroup.GPU.rawValue, type: SensorType.Voltage.rawValue), - - "VM0R": Sensor_t(name: "Memory", group: SensorGroup.System.rawValue, type: SensorType.Voltage.rawValue), - "Vb0R": Sensor_t(name: "CMOS", group: SensorGroup.System.rawValue, type: SensorType.Voltage.rawValue), - - "VD0R": Sensor_t(name: "DC In", group: SensorGroup.Sensor.rawValue, type: SensorType.Voltage.rawValue), - "VP0R": Sensor_t(name: "12V rail", group: SensorGroup.Sensor.rawValue, type: SensorType.Voltage.rawValue), - "Vp0C": Sensor_t(name: "12V vcc", group: SensorGroup.Sensor.rawValue, type: SensorType.Voltage.rawValue), - "VV2S": Sensor_t(name: "3V", group: SensorGroup.Sensor.rawValue, type: SensorType.Voltage.rawValue), - "VR3R": Sensor_t(name: "3.3V", group: SensorGroup.Sensor.rawValue, type: SensorType.Voltage.rawValue), - "VV1S": Sensor_t(name: "5V", group: SensorGroup.Sensor.rawValue, type: SensorType.Voltage.rawValue), - "VV9S": Sensor_t(name: "12V", group: SensorGroup.Sensor.rawValue, type: SensorType.Voltage.rawValue), - "VeES": Sensor_t(name: "PCI 12V", group: SensorGroup.Sensor.rawValue, type: SensorType.Voltage.rawValue), - - /// Power - "PC0C": Sensor_t(name: "CPU Core", group: SensorGroup.CPU.rawValue, type: SensorType.Power.rawValue), - "PCAM": Sensor_t(name: "CPU Core (IMON)", group: SensorGroup.CPU.rawValue, type: SensorType.Power.rawValue), - "PCPC": Sensor_t(name: "CPU Package", group: SensorGroup.CPU.rawValue, type: SensorType.Power.rawValue), - "PCTR": Sensor_t(name: "CPU Total", group: SensorGroup.CPU.rawValue, type: SensorType.Power.rawValue), - "PCPT": Sensor_t(name: "CPU Package total", group: SensorGroup.CPU.rawValue, type: SensorType.Power.rawValue), - "PCPR": Sensor_t(name: "CPU Package total (SMC)", group: SensorGroup.CPU.rawValue, type: SensorType.Power.rawValue), - "PC0R": Sensor_t(name: "CPU Computing high side", group: SensorGroup.CPU.rawValue, type: SensorType.Power.rawValue), - "PC0G": Sensor_t(name: "CPU GFX", group: SensorGroup.CPU.rawValue, type: SensorType.Power.rawValue), - - "PCPG": Sensor_t(name: "GPU Intel Graphics", group: SensorGroup.GPU.rawValue, type: SensorType.Power.rawValue), - "PG0R": Sensor_t(name: "GPU", group: SensorGroup.GPU.rawValue, type: SensorType.Power.rawValue), - "PCGC": Sensor_t(name: "Intel GPU", group: SensorGroup.GPU.rawValue, type: SensorType.Power.rawValue), - "PCGM": Sensor_t(name: "Intel GPU (IMON)", group: SensorGroup.GPU.rawValue, type: SensorType.Power.rawValue), - - "PC3C": Sensor_t(name: "RAM", group: SensorGroup.Sensor.rawValue, type: SensorType.Power.rawValue), - "PPBR": Sensor_t(name: "Battery", group: SensorGroup.Sensor.rawValue, type: SensorType.Power.rawValue), - "PDTR": Sensor_t(name: "DC In", group: SensorGroup.Sensor.rawValue, type: SensorType.Power.rawValue), - "PSTR": Sensor_t(name: "System total", group: SensorGroup.Sensor.rawValue, type: SensorType.Power.rawValue), - - /// Frequency - "FRC0": Sensor_t(name: "CPU 1", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), - "FRC1": Sensor_t(name: "CPU 2", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), - "FRC2": Sensor_t(name: "CPU 3", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), - "FRC3": Sensor_t(name: "CPU 4", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), - "FRC4": Sensor_t(name: "CPU 5", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), - "FRC5": Sensor_t(name: "CPU 6", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), - "FRC6": Sensor_t(name: "CPU 7", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), - "FRC7": Sensor_t(name: "CPU 8", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), - "FRC8": Sensor_t(name: "CPU 9", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), - "FRC9": Sensor_t(name: "CPU 10", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), - "FRC10": Sensor_t(name: "CPU 11", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), - "FRC11": Sensor_t(name: "CPU 12", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), - "FRC12": Sensor_t(name: "CPU 13", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), - "FRC13": Sensor_t(name: "CPU 14", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), - "FRC14": Sensor_t(name: "CPU 15", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), - "FRC15": Sensor_t(name: "CPU 16", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), - - "CG0C": Sensor_t(name: "GPU", group: SensorGroup.GPU.rawValue, type: SensorType.Frequency.rawValue), - "CG0S": Sensor_t(name: "GPU shader", group: SensorGroup.GPU.rawValue, type: SensorType.Frequency.rawValue), - "CG0M": Sensor_t(name: "GPU memory", group: SensorGroup.GPU.rawValue, type: SensorType.Frequency.rawValue), + Sensor_t(key: "TA0P", name: "Ambient 1", group: SensorGroup.Sensor.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TA1P", name: "Ambient 2", group: SensorGroup.Sensor.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "Th0H", name: "Heatpipe 1", group: SensorGroup.Sensor.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "Th1H", name: "Heatpipe 2", group: SensorGroup.Sensor.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "Th2H", name: "Heatpipe 3", group: SensorGroup.Sensor.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "Th3H", name: "Heatpipe 4", group: SensorGroup.Sensor.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TZ0C", name: "Termal zone 1", group: SensorGroup.Sensor.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TZ1C", name: "Termal zone 2", group: SensorGroup.Sensor.rawValue, type: SensorType.Temperature.rawValue), + + Sensor_t(key: "TC0E", name: "CPU 1", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC0F", name: "CPU 2", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC0D", name: "CPU die", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC0C", name: "CPU core", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC0H", name: "CPU heatsink", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC0P", name: "CPU proximity", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TCAD", name: "CPU package", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + + Sensor_t(key: "TC0c", name: "CPU core 1", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC1c", name: "CPU core 2", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC2c", name: "CPU core 3", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC3c", name: "CPU core 4", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC4c", name: "CPU core 5", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC5c", name: "CPU core 6", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC6c", name: "CPU core 7", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC7c", name: "CPU core 8", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC8c", name: "CPU core 9", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC9c", name: "CPU core 10", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC10c", name: "CPU core 11", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC11c", name: "CPU core 12", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC12c", name: "CPU core 13", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC13c", name: "CPU core 14", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC14c", name: "CPU core 15", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TC15c", name: "CPU core 16", group: SensorGroup.CPU.rawValue, type: SensorType.Temperature.rawValue), + + Sensor_t(key: "TCGC", name: "GPU Intel Graphics", group: SensorGroup.GPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TG0D", name: "GPU die", group: SensorGroup.GPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TG0H", name: "GPU heatsink", group: SensorGroup.GPU.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TG0P", name: "GPU proximity", group: SensorGroup.GPU.rawValue, type: SensorType.Temperature.rawValue), + + Sensor_t(key: "Tm0P", name: "Mainboard", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "Tp0P", name: "Powerboard", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TB1T", name: "Battery", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TW0P", name: "Airport", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TL0P", name: "Display", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TI0P", name: "Thunderbold 1", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TI1P", name: "Thunderbold 2", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TI2P", name: "Thunderbold 3", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TI3P", name: "Thunderbold 4", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), + + Sensor_t(key: "TN0D", name: "Northbridge die", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TN0H", name: "Northbridge heatsink", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), + Sensor_t(key: "TN0P", name: "Northbridge proximity", group: SensorGroup.System.rawValue, type: SensorType.Temperature.rawValue), + + /// Voltage + Sensor_t(key: "VCAC", name: "CPU IA", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VCSC", name: "CPU System Agent", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VC0C", name: "CPU Core 1", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VC1C", name: "CPU Core 2", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VC2C", name: "CPU Core 3", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VC3C", name: "CPU Core 4", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VC4C", name: "CPU Core 5", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VC5C", name: "CPU Core 6", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VC6C", name: "CPU Core 7", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VC7C", name: "CPU Core 8", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VC8C", name: "CPU Core 9", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VC9C", name: "CPU Core 10", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VC10C", name: "CPU Core 11", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VC11C", name: "CPU Core 12", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VC12C", name: "CPU Core 13", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VC13C", name: "CPU Core 14", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VC14C", name: "CPU Core 15", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VC15C", name: "CPU Core 16", group: SensorGroup.CPU.rawValue, type: SensorType.Voltage.rawValue), + + Sensor_t(key: "VCTC", name: "GPU Intel Graphics", group: SensorGroup.GPU.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VG0C", name: "GPU", group: SensorGroup.GPU.rawValue, type: SensorType.Voltage.rawValue), + + Sensor_t(key: "VM0R", name: "Memory", group: SensorGroup.System.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "Vb0R", name: "CMOS", group: SensorGroup.System.rawValue, type: SensorType.Voltage.rawValue), + + Sensor_t(key: "VD0R", name: "DC In", group: SensorGroup.Sensor.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VP0R", name: "12V rail", group: SensorGroup.Sensor.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "Vp0C", name: "12V vcc", group: SensorGroup.Sensor.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VV2S", name: "3V", group: SensorGroup.Sensor.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VR3R", name: "3.3V", group: SensorGroup.Sensor.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VV1S", name: "5V", group: SensorGroup.Sensor.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VV9S", name: "12V", group: SensorGroup.Sensor.rawValue, type: SensorType.Voltage.rawValue), + Sensor_t(key: "VeES", name: "PCI 12V", group: SensorGroup.Sensor.rawValue, type: SensorType.Voltage.rawValue), + + /// Power + Sensor_t(key: "PC0C", name: "CPU Core", group: SensorGroup.CPU.rawValue, type: SensorType.Power.rawValue), + Sensor_t(key: "PCAM", name: "CPU Core (IMON)", group: SensorGroup.CPU.rawValue, type: SensorType.Power.rawValue), + Sensor_t(key: "PCPC", name: "CPU Package", group: SensorGroup.CPU.rawValue, type: SensorType.Power.rawValue), + Sensor_t(key: "PCTR", name: "CPU Total", group: SensorGroup.CPU.rawValue, type: SensorType.Power.rawValue), + Sensor_t(key: "PCPT", name: "CPU Package total", group: SensorGroup.CPU.rawValue, type: SensorType.Power.rawValue), + Sensor_t(key: "PCPR", name: "CPU Package total (SMC)", group: SensorGroup.CPU.rawValue, type: SensorType.Power.rawValue), + Sensor_t(key: "PC0R", name: "CPU Computing high side", group: SensorGroup.CPU.rawValue, type: SensorType.Power.rawValue), + Sensor_t(key: "PC0G", name: "CPU GFX", group: SensorGroup.CPU.rawValue, type: SensorType.Power.rawValue), + + Sensor_t(key: "PCPG", name: "GPU Intel Graphics", group: SensorGroup.GPU.rawValue, type: SensorType.Power.rawValue), + Sensor_t(key: "PG0R", name: "GPU", group: SensorGroup.GPU.rawValue, type: SensorType.Power.rawValue), + Sensor_t(key: "PCGC", name: "Intel GPU", group: SensorGroup.GPU.rawValue, type: SensorType.Power.rawValue), + Sensor_t(key: "PCGM", name: "Intel GPU (IMON)", group: SensorGroup.GPU.rawValue, type: SensorType.Power.rawValue), + Sensor_t(key: "PC3C", name: "RAM", group: SensorGroup.Sensor.rawValue, type: SensorType.Power.rawValue), + Sensor_t(key: "PPBR", name: "Battery", group: SensorGroup.Sensor.rawValue, type: SensorType.Power.rawValue), + Sensor_t(key: "PDTR", name: "DC In", group: SensorGroup.Sensor.rawValue, type: SensorType.Power.rawValue), + Sensor_t(key: "PSTR", name: "System total", group: SensorGroup.Sensor.rawValue, type: SensorType.Power.rawValue), + + /// Frequency + Sensor_t(key: "FRC0", name: "CPU 1", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), + Sensor_t(key: "FRC1", name: "CPU 2", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), + Sensor_t(key: "FRC2", name: "CPU 3", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), + Sensor_t(key: "FRC3", name: "CPU 4", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), + Sensor_t(key: "FRC4", name: "CPU 5", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), + Sensor_t(key: "FRC5", name: "CPU 6", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), + Sensor_t(key: "FRC6", name: "CPU 7", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), + Sensor_t(key: "FRC7", name: "CPU 8", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), + Sensor_t(key: "FRC8", name: "CPU 9", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), + Sensor_t(key: "FRC9", name: "CPU 10", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), + Sensor_t(key: "FRC10", name: "CPU 11", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), + Sensor_t(key: "FRC11", name: "CPU 12", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), + Sensor_t(key: "FRC12", name: "CPU 13", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), + Sensor_t(key: "FRC13", name: "CPU 14", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), + Sensor_t(key: "FRC14", name: "CPU 15", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), + Sensor_t(key: "FRC15", name: "CPU 16", group: SensorGroup.CPU.rawValue, type: SensorType.Frequency.rawValue), + + Sensor_t(key: "CG0C", name: "GPU", group: SensorGroup.GPU.rawValue, type: SensorType.Frequency.rawValue), + Sensor_t(key: "CG0S", name: "GPU shader", group: SensorGroup.GPU.rawValue, type: SensorType.Frequency.rawValue), + Sensor_t(key: "CG0M", name: "GPU memory", group: SensorGroup.GPU.rawValue, type: SensorType.Frequency.rawValue), + /// Battery - "B0AV": Sensor_t(name: "Voltage", group: SensorGroup.Sensor.rawValue, type: SensorType.Battery.rawValue), - "B0AC": Sensor_t(name: "Amperage", group: SensorGroup.Sensor.rawValue, type: SensorType.Battery.rawValue), + Sensor_t(key: "B0AV", name: "Voltage", group: SensorGroup.Sensor.rawValue, type: SensorType.Battery.rawValue), + Sensor_t(key: "B0AC", name: "Amperage", group: SensorGroup.Sensor.rawValue, type: SensorType.Battery.rawValue), ]