48 lines
1.2 KiB
Go
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()
|
|
}
|