Files
compute-blade-agent/pkg/hal/hal_bcm283x_simulated.go
Matthias Riegler 0899ce4bbe chore: add golangci-lint
Signed-off-by: Matthias Riegler <matthias.riegler@ankorstore.com>
2023-07-19 20:27:27 +02:00

79 lines
1.8 KiB
Go

//go:build darwin
package hal
import (
"context"
"time"
"go.uber.org/zap"
)
// fails if SimulatedHal does not implement ComputeBladeHal
var _ ComputeBladeHal = &SimulatedHal{}
// ComputeBladeMock implements a mock for the ComputeBladeHal interface
type SimulatedHal struct {
logger *zap.Logger
}
func NewCm4Hal(opts ComputeBladeHalOpts) (ComputeBladeHal, error) {
logger := zap.L().Named("hal").Named("simulated-cm4")
logger.Warn("Using simulated hal")
computeModule.WithLabelValues("simulated").Set(1)
fanUnit.WithLabelValues("simulated").Set(1)
return &SimulatedHal{
logger: logger,
}, nil
}
func (m *SimulatedHal) Close() error {
return nil
}
func (m *SimulatedHal) SetFanSpeed(percent uint8) error {
m.logger.Info("SetFanSpeed", zap.Uint8("percent", percent))
fanSpeedTargetPercent.Set(float64(percent))
fanSpeed.Set(2500 * (float64(percent) / 100))
return nil
}
func (m *SimulatedHal) GetFanRPM() (float64, error) {
return 1337, nil
}
func (m *SimulatedHal) SetStealthMode(enabled bool) error {
if enabled {
stealthModeEnabled.Set(1)
} else {
stealthModeEnabled.Set(0)
}
m.logger.Info("SetStealthMode", zap.Bool("enabled", enabled))
return nil
}
func (m *SimulatedHal) GetPowerStatus() (PowerStatus, error) {
m.logger.Info("GetPowerStatus")
powerStatus.WithLabelValues("simulated").Set(1)
return PowerPoe802at, nil
}
func (m *SimulatedHal) WaitForEdgeButtonPress(ctx context.Context) error {
m.logger.Info("WaitForEdgeButtonPress")
select {
case <-ctx.Done():
return ctx.Err()
case <-time.After(5 * time.Second):
edgeButtonEventCount.Inc()
return nil
}
}
func (m *SimulatedHal) SetLed(idx uint, color LedColor) error {
ledColorChangeEventCount.Inc()
m.logger.Info("SetLed", zap.Uint("idx", idx), zap.Any("color", color))
return nil
}