mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-19 12:04:03 +00:00
simulator: fix I2C support
- Add ReadRegister and WriteRegister (because they're still used by
some packages).
- Fix out-of-bounds panic in I2C.Tx when either w or r has a length of
zero (or is nil).
This commit is contained in:
committed by
Ron Evans
parent
2b3b870bfe
commit
441dfc98d7
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
//go:build atmega || nrf || sam || stm32 || fe310 || k210 || rp2040 || mimxrt1062 || (esp32c3 && !m5stamp_c3)
|
//go:build !baremetal || atmega || nrf || sam || stm32 || fe310 || k210 || rp2040 || mimxrt1062 || (esp32c3 && !m5stamp_c3)
|
||||||
|
|
||||||
package machine
|
package machine
|
||||||
|
|
||||||
|
|||||||
@@ -150,7 +150,17 @@ func (i2c *I2C) SetBaudRate(br uint32) error {
|
|||||||
|
|
||||||
// Tx does a single I2C transaction at the specified address.
|
// Tx does a single I2C transaction at the specified address.
|
||||||
func (i2c *I2C) Tx(addr uint16, w, r []byte) error {
|
func (i2c *I2C) Tx(addr uint16, w, r []byte) error {
|
||||||
i2cTransfer(i2c.Bus, &w[0], len(w), &r[0], len(r))
|
var wptr, rptr *byte
|
||||||
|
var wlen, rlen int
|
||||||
|
if len(w) != 0 {
|
||||||
|
wptr = &w[0]
|
||||||
|
wlen = len(w)
|
||||||
|
}
|
||||||
|
if len(r) != 0 {
|
||||||
|
rptr = &r[0]
|
||||||
|
rlen = len(r)
|
||||||
|
}
|
||||||
|
i2cTransfer(i2c.Bus, wptr, wlen, rptr, rlen)
|
||||||
// TODO: do something with the returned error code.
|
// TODO: do something with the returned error code.
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user