package econetgrpc import ( "google.golang.org/protobuf/types/known/timestamppb" pb "gitea.libretechconsulting.com/rmcguire/econet-exporter/api/econet/v1alpha1" "gitea.libretechconsulting.com/rmcguire/econet-exporter/pkg/econet/econetclient" ) func deviceToProto(d *econetclient.Device) *pb.Device { return &pb.Device{ SerialNumber: d.SerialNumber, DeviceId: d.DeviceID, FriendlyName: d.FriendlyName, Type: d.Type, GenericType: d.GenericType, Connected: d.Connected, WifiSignal: int32(d.WiFiSignal), Mode: d.Mode, Enabled: d.Enabled, Running: d.Running, RunningState: d.RunningState, Setpoint: int32(d.Setpoint), SetpointMin: int32(d.SetpointMin), SetpointMax: int32(d.SetpointMax), HotWaterAvailability: int32(d.HotWaterAvailability), AlertCount: int32(d.AlertCount), Away: d.Away, LastUpdated: timestamppb.New(d.LastUpdated), SupportedModes: supportedModes(d.SupportedModes()), } } // supportedModes maps the device's mode slugs to proto enums, dropping any that // aren't settable (e.g. "unknown"). func supportedModes(slugs []string) []pb.Mode { out := make([]pb.Mode, 0, len(slugs)) for _, slug := range slugs { if m, ok := modeFromSlug(slug); ok { out = append(out, m) } } return out }