DaheimLaden: fix firmware init (#33067)
This commit is contained in:
parent
6e121c778f
commit
c4fbffa55e
1 changed files with 26 additions and 20 deletions
|
|
@ -361,31 +361,37 @@ func (wb *DaheimLaden) getPhases() (int, error) {
|
|||
}
|
||||
|
||||
func (wb *DaheimLaden) checkStation() error {
|
||||
// first call for fw init
|
||||
if _, err := wb.conn.ReadHoldingRegisters(dlRegEvseMaxCurrent, 22); err != nil {
|
||||
return err
|
||||
}
|
||||
b, err := wb.conn.ReadHoldingRegisters(dlRegEvseMaxCurrent, 22)
|
||||
if err != nil {
|
||||
return api.ErrSponsorRequired
|
||||
}
|
||||
// station id starts (dlRegStationId-dlRegEvseMaxCurrent) registers into the block
|
||||
s, err := utf16BEBytesAsString(b[2*(dlRegStationId-dlRegEvseMaxCurrent):])
|
||||
if err != nil || s == "" {
|
||||
return api.ErrSponsorRequired
|
||||
}
|
||||
// map may still be zero right after the wake-up call- poll briefly until populated
|
||||
for range 5 {
|
||||
b, err := wb.conn.ReadHoldingRegisters(dlRegEvseMaxCurrent, 22)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, r := range s {
|
||||
if r < 0x20 || r > 0x7e {
|
||||
s, err := utf16BEBytesAsString(b[2*(dlRegStationId-dlRegEvseMaxCurrent):])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(s) == 0 {
|
||||
time.Sleep(200 * time.Millisecond)
|
||||
continue
|
||||
}
|
||||
|
||||
if strings.Contains(strings.ToLower(s), "heidelbridge") {
|
||||
return api.ErrSponsorRequired
|
||||
}
|
||||
|
||||
for _, r := range s {
|
||||
if r < 0x20 || r > 0x7e {
|
||||
return api.ErrSponsorRequired
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
if strings.Contains(strings.ToLower(s), "heidelbridge") {
|
||||
return api.ErrSponsorRequired
|
||||
}
|
||||
|
||||
return nil
|
||||
return api.ErrSponsorRequired
|
||||
}
|
||||
|
||||
var _ api.Diagnosis = (*DaheimLaden)(nil)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue