diff --git a/api/api.go b/api/api.go index 45525086b..0d05c52d2 100644 --- a/api/api.go +++ b/api/api.go @@ -133,7 +133,7 @@ type Vehicle interface { IconDescriber FeatureDescriber PhaseDescriber - Title() string + TitleDescriber SetTitle(string) Identifiers() []string OnIdentified() ActionConfig @@ -208,6 +208,11 @@ type FeatureDescriber interface { Features() []Feature } +// TitleDescriber optionally provides an title +type TitleDescriber interface { + GetTitle() string +} + // CsvWriter converts to csv type CsvWriter interface { WriteCsv(context.Context, io.Writer) error diff --git a/api/mock.go b/api/mock.go index 7a00eeb17..b969e77b0 100644 --- a/api/mock.go +++ b/api/mock.go @@ -502,6 +502,20 @@ func (mr *MockVehicleMockRecorder) Features() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Features", reflect.TypeOf((*MockVehicle)(nil).Features)) } +// GetTitle mocks base method. +func (m *MockVehicle) GetTitle() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetTitle") + ret0, _ := ret[0].(string) + return ret0 +} + +// GetTitle indicates an expected call of GetTitle. +func (mr *MockVehicleMockRecorder) GetTitle() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTitle", reflect.TypeOf((*MockVehicle)(nil).GetTitle)) +} + // Icon mocks base method. func (m *MockVehicle) Icon() string { m.ctrl.T.Helper() @@ -585,20 +599,6 @@ func (mr *MockVehicleMockRecorder) Soc() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Soc", reflect.TypeOf((*MockVehicle)(nil).Soc)) } -// Title mocks base method. -func (m *MockVehicle) Title() string { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Title") - ret0, _ := ret[0].(string) - return ret0 -} - -// Title indicates an expected call of Title. -func (mr *MockVehicleMockRecorder) Title() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Title", reflect.TypeOf((*MockVehicle)(nil).Title)) -} - // MockChargeRater is a mock of ChargeRater interface. type MockChargeRater struct { ctrl *gomock.Controller diff --git a/cmd/dump.go b/cmd/dump.go index 7334273c5..a99337e52 100644 --- a/cmd/dump.go +++ b/cmd/dump.go @@ -118,7 +118,7 @@ func runDump(cmd *cobra.Command, args []string) { } for _, v := range site.Vehicles().Instances() { - d.DumpWithHeader(fmt.Sprintf("vehicle: %s", v.Title()), v) + d.DumpWithHeader(fmt.Sprintf("vehicle: %s", v.GetTitle()), v) } for id, lpI := range site.Loadpoints() { diff --git a/cmd/setup.go b/cmd/setup.go index fcb2f961c..13a08307c 100644 --- a/cmd/setup.go +++ b/cmd/setup.go @@ -383,7 +383,7 @@ func vehicleInstance(cc config.Named) (api.Vehicle, error) { } // ensure vehicle config has title - if instance.Title() == "" { + if instance.GetTitle() == "" { //lint:ignore SA1019 as Title is safe on ascii instance.SetTitle(strings.Title(cc.Name)) } diff --git a/core/coordinator/coordinator.go b/core/coordinator/coordinator.go index 6793c3b56..092c25925 100644 --- a/core/coordinator/coordinator.go +++ b/core/coordinator/coordinator.go @@ -144,7 +144,7 @@ func (c *Coordinator) identifyVehicleByStatus(available []api.Vehicle) api.Vehic continue } - c.log.DEBUG.Printf("vehicle status: %s (%s)", status, vehicle.Title()) + c.log.DEBUG.Printf("vehicle status: %s (%s)", status, vehicle.GetTitle()) // vehicle is plugged or charging, so it should be the right one if status == api.StatusB || status == api.StatusC { diff --git a/core/coordinator/coordinator_test.go b/core/coordinator/coordinator_test.go index 5af8eec15..ce5016840 100644 --- a/core/coordinator/coordinator_test.go +++ b/core/coordinator/coordinator_test.go @@ -37,8 +37,8 @@ func TestVehicleDetectByStatus(t *testing.T) { log := util.NewLogger("foo") vehicles := []api.Vehicle{v1, v2} - v1.MockVehicle.EXPECT().Title().Return("v1").AnyTimes() - v2.MockVehicle.EXPECT().Title().Return("v2").AnyTimes() + v1.MockVehicle.EXPECT().GetTitle().Return("v1").AnyTimes() + v2.MockVehicle.EXPECT().GetTitle().Return("v2").AnyTimes() v1.MockVehicle.EXPECT().Identifiers().Return(nil).AnyTimes() v2.MockVehicle.EXPECT().Identifiers().Return([]string{"it's me"}).AnyTimes() diff --git a/core/loadpoint.go b/core/loadpoint.go index 4192e334b..429efbe42 100644 --- a/core/loadpoint.go +++ b/core/loadpoint.go @@ -1090,7 +1090,7 @@ func (lp *Loadpoint) updateChargerStatus() (bool, error) { for _, v := range lp.availableVehicles() { if slices.Contains(v.Features(), api.WelcomeCharge) { welcomeCharge = true - lp.log.DEBUG.Printf("welcome charge: %s", v.Title()) + lp.log.DEBUG.Printf("welcome charge: %s", v.GetTitle()) break } } diff --git a/core/loadpoint_session.go b/core/loadpoint_session.go index 10116f93d..77b78df62 100644 --- a/core/loadpoint_session.go +++ b/core/loadpoint_session.go @@ -34,7 +34,7 @@ func (lp *Loadpoint) createSession() { lp.session = lp.db.New(lp.chargeMeterTotal()) if vehicle := lp.GetVehicle(); vehicle != nil { - lp.session.Vehicle = vehicle.Title() + lp.session.Vehicle = vehicle.GetTitle() } else if lp.chargerHasFeature(api.IntegratedDevice) { lp.session.Vehicle = lp.GetTitle() } diff --git a/core/loadpoint_vehicle.go b/core/loadpoint_vehicle.go index c1652a22f..18dce88b6 100644 --- a/core/loadpoint_vehicle.go +++ b/core/loadpoint_vehicle.go @@ -115,12 +115,12 @@ func (lp *Loadpoint) setActiveVehicle(v api.Vehicle) { from := "unknown" if lp.vehicle != nil { lp.coordinator.Release(lp.vehicle) - from = lp.vehicle.Title() + from = lp.vehicle.GetTitle() } to := "unknown" if v != nil { lp.coordinator.Acquire(v) - to = v.Title() + to = v.GetTitle() } lp.vehicle = v @@ -141,7 +141,7 @@ func (lp *Loadpoint) setActiveVehicle(v api.Vehicle) { lp.socEstimator = soc.NewEstimator(lp.log, lp.charger, v, estimate) lp.publish(keys.VehicleName, vehicle.Settings(lp.log, v).Name()) - lp.publish(keys.VehicleTitle, v.Title()) + lp.publish(keys.VehicleTitle, v.GetTitle()) if mode, ok := v.OnIdentified().GetMode(); ok { lp.SetMode(mode) @@ -165,7 +165,7 @@ func (lp *Loadpoint) setActiveVehicle(v api.Vehicle) { lp.updateSession(func(session *session.Session) { var title string if v != nil { - title = v.Title() + title = v.GetTitle() } lp.session.Vehicle = title diff --git a/core/loadpoint_vehicle_test.go b/core/loadpoint_vehicle_test.go index 4c68145e3..1905c1d2b 100644 --- a/core/loadpoint_vehicle_test.go +++ b/core/loadpoint_vehicle_test.go @@ -17,7 +17,7 @@ import ( ) func expectVehiclePublish(vehicle *api.MockVehicle) { - vehicle.EXPECT().Title().Return("target").AnyTimes() + vehicle.EXPECT().GetTitle().Return("target").AnyTimes() vehicle.EXPECT().Capacity().AnyTimes() vehicle.EXPECT().Icon().AnyTimes() vehicle.EXPECT().Features().AnyTimes() @@ -156,7 +156,7 @@ func TestDefaultVehicle(t *testing.T) { current := 66.6 dflt := api.NewMockVehicle(ctrl) - dflt.EXPECT().Title().Return("default").AnyTimes() + dflt.EXPECT().GetTitle().Return("default").AnyTimes() dflt.EXPECT().Icon().Return("").AnyTimes() dflt.EXPECT().Capacity().AnyTimes() dflt.EXPECT().Phases().AnyTimes() @@ -166,7 +166,7 @@ func TestDefaultVehicle(t *testing.T) { }).AnyTimes() vehicle := api.NewMockVehicle(ctrl) - vehicle.EXPECT().Title().Return("target").AnyTimes() + vehicle.EXPECT().GetTitle().Return("target").AnyTimes() vehicle.EXPECT().Icon().Return("").AnyTimes() vehicle.EXPECT().Capacity().AnyTimes() vehicle.EXPECT().Phases().AnyTimes() @@ -184,7 +184,7 @@ func TestDefaultVehicle(t *testing.T) { if v == nil { return "" } - return v.Title() + return v.GetTitle() } // non-default vehicle identified diff --git a/core/site.go b/core/site.go index e2a851673..d4e22bc69 100644 --- a/core/site.go +++ b/core/site.go @@ -375,7 +375,7 @@ func (site *Site) DumpConfig() { if vehicles := site.Vehicles().Instances(); len(vehicles) > 1 { for _, v := range vehicles { if _, ok := v.(api.ChargeState); !ok && len(v.Identifiers()) == 0 { - site.log.WARN.Printf("vehicle '%s' does not support automatic detection", v.Title()) + site.log.WARN.Printf("vehicle '%s' does not support automatic detection", v.GetTitle()) } } } diff --git a/core/site_vehicles.go b/core/site_vehicles.go index a20384c50..570e0f031 100644 --- a/core/site_vehicles.go +++ b/core/site_vehicles.go @@ -49,7 +49,7 @@ func (site *Site) publishVehicles() { ac := instance.OnIdentified() res[v.Name()] = vehicleStruct{ - Title: instance.Title(), + Title: instance.GetTitle(), Icon: instance.Icon(), Capacity: instance.Capacity(), Phases: instance.Phases(), diff --git a/push/hub.go b/push/hub.go index 54266f25f..ff6b65b57 100644 --- a/push/hub.go +++ b/push/hub.go @@ -84,7 +84,7 @@ func (h *Hub) apply(ev Event, tmpl string) (string, error) { attr["vehiclePlanTime"], _, attr["vehiclePlanSoc"] = v.GetPlanSoc() instance := v.Instance() - attr["vehicleTitle"] = instance.Title() + attr["vehicleTitle"] = instance.GetTitle() attr["vehicleIcon"] = instance.Icon() attr["vehicleCapacity"] = instance.Capacity() } diff --git a/server/http_loadpoint_handler.go b/server/http_loadpoint_handler.go index f1486acad..a905670c3 100644 --- a/server/http_loadpoint_handler.go +++ b/server/http_loadpoint_handler.go @@ -268,7 +268,7 @@ func vehicleSelectHandler(site site.API, lp loadpoint.API) http.HandlerFunc { res := struct { Vehicle string `json:"vehicle"` }{ - Vehicle: v.Title(), + Vehicle: v.GetTitle(), } jsonResult(w, res) diff --git a/server/influxdb.go b/server/influxdb.go index fb395161f..cd612a723 100644 --- a/server/influxdb.go +++ b/server/influxdb.go @@ -167,7 +167,7 @@ func (m *Influx) Run(site site.API, in <-chan util.Param) { tags["loadpoint"] = lp.GetTitle() if v := lp.GetVehicle(); v != nil { - tags["vehicle"] = v.Title() + tags["vehicle"] = v.GetTitle() } } diff --git a/vehicle/embed.go b/vehicle/embed.go index e4259490f..e97ffcd60 100644 --- a/vehicle/embed.go +++ b/vehicle/embed.go @@ -25,8 +25,8 @@ func (v *embed) fromVehicle(title string, capacity float64) { } } -// Title implements the api.Vehicle interface -func (v *embed) Title() string { +// GetTitle implements the api.Vehicle interface +func (v *embed) GetTitle() string { return v.Title_ }