EEBus: unregister ski (#19331)

This commit is contained in:
andig 2025-03-03 11:55:08 +01:00 • committed by GitHub
parent 2a7bc7b1f4
commit 4425e7d316
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 21 additions and 3 deletions

View file

@ -96,7 +96,8 @@ func NewEEBus(ctx context.Context, ski, ip string, hasMeter, hasChargedEnergy, v
}
if err := c.Wait(ctx); err != nil {
return c, err
eebus.Instance.UnregisterDevice(ski, c)
return nil, err
}
if hasMeter {

View file

@ -106,7 +106,8 @@ func NewEEBus(ctx context.Context, ski string, limits Limits, root api.Circuit)
}
if err := c.Wait(ctx); err != nil {
return c, err
eebus.Instance.UnregisterDevice(ski, c)
return nil, err
}
// scenarios

View file

@ -65,7 +65,8 @@ func NewEEBus(ctx context.Context, ski, ip string, timeout time.Duration) (*EEBu
}
if err := c.Wait(ctx); err != nil {
return c, err
eebus.Instance.UnregisterDevice(ski, c)
return nil, err
}
return c, nil

View file

@ -5,6 +5,7 @@ import (
"errors"
"fmt"
"net"
"slices"
"strconv"
"sync"
"time"
@ -191,6 +192,20 @@ func (c *EEBus) RegisterDevice(ski, ip string, device Device) error {
return nil
}
func (c *EEBus) UnregisterDevice(ski string, device Device) {
ski = shiputil.NormalizeSKI(ski)
c.log.TRACE.Printf("unregistering ski: %s", ski)
c.service.UnregisterRemoteSKI(ski)
c.mux.Lock()
defer c.mux.Unlock()
if idx := slices.Index(c.clients[ski], device); idx != -1 {
c.clients[ski] = slices.Delete(c.clients[ski], idx, idx)
}
}
func (c *EEBus) Evse() *UseCasesEVSE {
return &c.evseUC
}