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 IntelReader struct {
|
|
temperatureDriver driver.TemperatureDriver
|
|
powerDriver driver.PowerDriver
|
|
clockDriver driver.ClockDriver
|
|
}
|
|
|
|
func NewIntelReader() (*IntelReader, error) {
|
|
temperatureDriver := driver.NewHwmonDriver([]string{"coretemp"})
|
|
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 &IntelReader{
|
|
temperatureDriver: temperatureDriver,
|
|
powerDriver: powerDriver,
|
|
clockDriver: clockDriver,
|
|
}, nil
|
|
}
|
|
|
|
func (r *IntelReader) ReadTemperatureSensors() ([]driver.TemperatureSensor, error) {
|
|
return r.temperatureDriver.ReadTemperatureSensors()
|
|
}
|
|
|
|
func (r *IntelReader) ReadPowerSensors() ([]driver.PowerSensor, error) {
|
|
return r.powerDriver.ReadPowerSensors()
|
|
}
|
|
|
|
func (r *IntelReader) ReadClockSensors() ([]driver.ClockSensor, error) {
|
|
return r.clockDriver.ReadClockSensors()
|
|
}
|