chore: add charger disable wrapper (#23735)

This commit is contained in:
andig 2025-09-21 12:34:57 +02:00 • committed by GitHub
parent d2549d7892
commit a3af19a023
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 26 additions and 12 deletions

View file

@ -81,3 +81,25 @@ func verifyEnabled(c api.Charger, enabled bool) (bool, error) {
// always treat charging as enabled
return status == api.StatusC, err
}
// whenDisabled disables charger before executing fun()
func whenDisabled(wb api.Charger, fun func() error) error {
enabled, err := wb.Enabled()
if err != nil {
return err
}
if !enabled {
return fun()
}
if err := wb.Enable(false); err != nil {
return err
}
if err := fun(); err != nil {
return err
}
return wb.Enable(true)
}

View file

@ -286,18 +286,10 @@ func (wb *MennekesCompact) phases1p3p(phases int) error {
u = 1
}
// temporarily disable charger during phase switching
if en, err := wb.Enabled(); err == nil && en {
if err := wb.Enable(false); err != nil {
return err
}
defer wb.Enable(true)
}
_, err := wb.conn.WriteSingleRegister(mennekesRegRequestedPhases, u)
return err
return whenDisabled(wb, func() error {
_, err := wb.conn.WriteSingleRegister(mennekesRegRequestedPhases, u)
return err
})
}
var _ api.Diagnosis = (*MennekesCompact)(nil)