Files
2026-08-04 15:27:55 -07:00

48 lines
1.2 KiB
Go

package proc
import (
driver "finally-a-monolithic-linux-hw-monitor/app/cpu/drivers"
"fmt"
)
type AMDReader struct {
temperatureDriver driver.TemperatureDriver
powerDriver driver.PowerDriver
clockDriver driver.ClockDriver
}
func NewAMDReader() (*AMDReader, error) {
temperatureDriver := driver.NewHwmonDriver([]string{"k10temp", "zenpower"})
if temperatureDriver == nil {
return nil, fmt.Errorf("could not initialize hwmon temperature driver")
}
powerDriver := driver.NewRaplDriver()
if powerDriver == nil {
return nil, fmt.Errorf("could not initialize hwmon temperature driver")
}
clockDriver := driver.NewSysDriver()
if clockDriver == nil {
return nil, fmt.Errorf("could not initialize hwmon temperature driver")
}
return &AMDReader{
temperatureDriver: temperatureDriver,
powerDriver: powerDriver,
clockDriver: clockDriver,
}, nil
}
func (r *AMDReader) ReadTemperatureSensors() ([]driver.TemperatureSensor, error) {
return r.temperatureDriver.ReadTemperatureSensors()
}
func (r *AMDReader) ReadPowerSensors() ([]driver.PowerSensor, error) {
return r.powerDriver.ReadPowerSensors()
}
func (r *AMDReader) ReadClockSensors() ([]driver.ClockSensor, error) {
return r.clockDriver.ReadClockSensors()
}