package temperature import "log" type Sensor struct { Name string Path string Filter EWMAFilter accErrors int } func NewSensor(name, path string, weight float64) Sensor { return Sensor{ Name: name, Path: path, Filter: NewEWMAFilter(weight), } } func (p *Sensor) Update(value int64) float64 { p.accErrors = 0 degrees := float64(value) / 1000 return p.Filter.Update(degrees) } func (p *Sensor) Fail() error { p.accErrors++ if p.accErrors > 60 { log.Fatalf("Thermal sensor read of %v failed 60 times in a row -- terminating", p.Name) } return nil }