diff --git a/internal/legacy/i2clegacy.go b/internal/legacy/i2clegacy.go index ace772772..86135dd0b 100644 --- a/internal/legacy/i2clegacy.go +++ b/internal/legacy/i2clegacy.go @@ -2,13 +2,18 @@ package legacy import "tinygo.org/x/drivers" +var i2cBuf []uint8 = make([]uint8, 1) + func ReadRegister(bus drivers.I2C, addr uint8, reg uint8, data []byte) error { - return bus.Tx(uint16(addr), []byte{reg}, data) + i2cBuf[0] = reg + return bus.Tx(uint16(addr), i2cBuf[:1], data) } func WriteRegister(bus drivers.I2C, addr uint8, reg uint8, data []byte) error { - buf := make([]uint8, len(data)+1) - buf[0] = reg - copy(buf[1:], data) - return bus.Tx(uint16(addr), buf, nil) + if len(i2cBuf) < 1+len(data) { + i2cBuf = make([]uint8, 1+len(data)) + } + i2cBuf[0] = reg + copy(i2cBuf[1:], data) + return bus.Tx(uint16(addr), i2cBuf[:1+len(data)], nil) }