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() }