Roll display print loop

This commit is contained in:
Gregor Riepl 2021-05-05 23:13:02 +02:00
parent f165807ec5
commit 11a0f85c9f

View file

@ -28,16 +28,10 @@ func (c *Can) DisplayWrite(line int, a []byte) error {
default: default:
return errors.New("Invalid line") return errors.New("Invalid line")
} }
// print in 3 chunks, as one frame is limited to 8 bytes // print in separate chunks, as one frame payload is limited to 7 bytes
// the display has only 16 characters per line, so we truncate there // the display has only 16 characters per line, so we truncate there
if len(a) > 0 { for i := 0; i < len(a) && i < 16; i += 7 {
return c.bus.Publish(DisplayCommand{addr, a[:7]}.Encode()) return c.bus.Publish(DisplayCommand{addr, a[i:i+7]}.Encode())
}
if len(a) > 7 {
return c.bus.Publish(DisplayCommand{addr, a[7:14]}.Encode())
}
if len(a) > 14 {
return c.bus.Publish(DisplayCommand{addr, a[14:16]}.Encode())
} }
return nil return nil
} }