chore: add charger disable wrapper (#23735)
This commit is contained in:
parent
d2549d7892
commit
a3af19a023
2 changed files with 26 additions and 12 deletions
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue