mirror of
https://github.com/tinygo-org/drivers.git
synced 2026-08-17 05:13:23 +00:00
fix requested changes by @aykevl
This commit is contained in:
@@ -3,7 +3,15 @@ package drivers
|
|||||||
// I2C represents an I2C bus. It is notably implemented by the
|
// I2C represents an I2C bus. It is notably implemented by the
|
||||||
// machine.I2C type.
|
// machine.I2C type.
|
||||||
type I2C interface {
|
type I2C interface {
|
||||||
// ReadRegister(addr uint8, r uint8, buf []byte) error
|
// Tx performs a [I²C] transaction with address addr.
|
||||||
// WriteRegister(addr uint8, r uint8, buf []byte) error
|
// Most I2C peripherals have some sort of register mapping scheme to allow
|
||||||
|
// users to interact with them:
|
||||||
|
//
|
||||||
|
// bus.Tx(addr, []byte{reg}, buf) // Reads register reg into buf.
|
||||||
|
// bus.Tx(addr, append([]byte{reg}, buf...), nil) // Writes buf into register reg.
|
||||||
|
//
|
||||||
|
// The semantics of most I2C transactions require that the w write buffer be non-empty.
|
||||||
|
//
|
||||||
|
// [I²C]: https://en.wikipedia.org/wiki/I%C2%B2C
|
||||||
Tx(addr uint16, w, r []byte) error
|
Tx(addr uint16, w, r []byte) error
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -5,10 +5,10 @@ const MaxRegisters = 255
|
|||||||
|
|
||||||
type I2CDevice interface {
|
type I2CDevice interface {
|
||||||
// ReadRegister implements I2C.ReadRegister.
|
// ReadRegister implements I2C.ReadRegister.
|
||||||
ReadRegister(r uint8, buf []byte) error
|
readRegister(r uint8, buf []byte) error
|
||||||
|
|
||||||
// WriteRegister implements I2C.WriteRegister.
|
// WriteRegister implements I2C.WriteRegister.
|
||||||
WriteRegister(r uint8, buf []byte) error
|
writeRegister(r uint8, buf []byte) error
|
||||||
|
|
||||||
// Tx implements I2C.Tx
|
// Tx implements I2C.Tx
|
||||||
Tx(w, r []byte) error
|
Tx(w, r []byte) error
|
||||||
|
|||||||
+4
-4
@@ -33,7 +33,7 @@ func (d *I2CDevice16) Addr() uint8 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ReadRegister implements I2C.ReadRegister.
|
// ReadRegister implements I2C.ReadRegister.
|
||||||
func (d *I2CDevice16) ReadRegister(r uint8, buf []byte) error {
|
func (d *I2CDevice16) readRegister(r uint8, buf []byte) error {
|
||||||
if d.Err != nil {
|
if d.Err != nil {
|
||||||
return d.Err
|
return d.Err
|
||||||
}
|
}
|
||||||
@@ -54,7 +54,7 @@ func (d *I2CDevice16) ReadRegister(r uint8, buf []byte) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// WriteRegister implements I2C.WriteRegister.
|
// WriteRegister implements I2C.WriteRegister.
|
||||||
func (d *I2CDevice16) WriteRegister(r uint8, buf []byte) error {
|
func (d *I2CDevice16) writeRegister(r uint8, buf []byte) error {
|
||||||
if d.Err != nil {
|
if d.Err != nil {
|
||||||
return d.Err
|
return d.Err
|
||||||
}
|
}
|
||||||
@@ -80,11 +80,11 @@ func (bus *I2CDevice16) Tx(w, r []byte) error {
|
|||||||
bus.c.Fatalf("i2c mock: need a write byte")
|
bus.c.Fatalf("i2c mock: need a write byte")
|
||||||
return nil
|
return nil
|
||||||
case 1:
|
case 1:
|
||||||
return bus.ReadRegister(w[0], r)
|
return bus.readRegister(w[0], r)
|
||||||
default:
|
default:
|
||||||
if len(r) > 0 || len(w) == 1 {
|
if len(r) > 0 || len(w) == 1 {
|
||||||
bus.c.Fatalf("i2c mock: unsupported lengths in Tx(%d, %d)", len(w), len(r))
|
bus.c.Fatalf("i2c mock: unsupported lengths in Tx(%d, %d)", len(w), len(r))
|
||||||
}
|
}
|
||||||
return bus.WriteRegister(w[0], w[1:])
|
return bus.writeRegister(w[0], w[1:])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -34,7 +34,7 @@ func (d *I2CDevice8) Addr() uint8 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ReadRegister implements I2C.ReadRegister.
|
// ReadRegister implements I2C.ReadRegister.
|
||||||
func (d *I2CDevice8) ReadRegister(r uint8, buf []byte) error {
|
func (d *I2CDevice8) readRegister(r uint8, buf []byte) error {
|
||||||
if d.Err != nil {
|
if d.Err != nil {
|
||||||
return d.Err
|
return d.Err
|
||||||
}
|
}
|
||||||
@@ -47,7 +47,7 @@ func (d *I2CDevice8) ReadRegister(r uint8, buf []byte) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// WriteRegister implements I2C.WriteRegister.
|
// WriteRegister implements I2C.WriteRegister.
|
||||||
func (d *I2CDevice8) WriteRegister(r uint8, buf []byte) error {
|
func (d *I2CDevice8) writeRegister(r uint8, buf []byte) error {
|
||||||
if d.Err != nil {
|
if d.Err != nil {
|
||||||
return d.Err
|
return d.Err
|
||||||
}
|
}
|
||||||
@@ -63,12 +63,12 @@ func (bus *I2CDevice8) Tx(w, r []byte) error {
|
|||||||
bus.c.Fatalf("i2c mock: need a write byte")
|
bus.c.Fatalf("i2c mock: need a write byte")
|
||||||
return nil
|
return nil
|
||||||
case 1:
|
case 1:
|
||||||
return bus.ReadRegister(w[0], r)
|
return bus.readRegister(w[0], r)
|
||||||
default:
|
default:
|
||||||
if len(r) > 0 || len(w) == 1 {
|
if len(r) > 0 || len(w) == 1 {
|
||||||
bus.c.Fatalf("i2c mock: unsupported lengths in Tx(%d, %d)", len(w), len(r))
|
bus.c.Fatalf("i2c mock: unsupported lengths in Tx(%d, %d)", len(w), len(r))
|
||||||
}
|
}
|
||||||
return bus.WriteRegister(w[0], w[1:])
|
return bus.writeRegister(w[0], w[1:])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -50,7 +50,7 @@ func (d *I2CDeviceCmd) Addr() uint8 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ReadRegister implements I2C.ReadRegister.
|
// ReadRegister implements I2C.ReadRegister.
|
||||||
func (d *I2CDeviceCmd) ReadRegister(r uint8, buf []byte) error {
|
func (d *I2CDeviceCmd) readRegister(r uint8, buf []byte) error {
|
||||||
if d.Err != nil {
|
if d.Err != nil {
|
||||||
return d.Err
|
return d.Err
|
||||||
}
|
}
|
||||||
@@ -59,7 +59,7 @@ func (d *I2CDeviceCmd) ReadRegister(r uint8, buf []byte) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// WriteRegister implements I2C.WriteRegister.
|
// WriteRegister implements I2C.WriteRegister.
|
||||||
func (d *I2CDeviceCmd) WriteRegister(r uint8, buf []byte) error {
|
func (d *I2CDeviceCmd) writeRegister(r uint8, buf []byte) error {
|
||||||
if d.Err != nil {
|
if d.Err != nil {
|
||||||
return d.Err
|
return d.Err
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -38,12 +38,12 @@ func (bus *I2CBus) NewDevice(addr uint8) *I2CDevice8 {
|
|||||||
|
|
||||||
// ReadRegister implements I2C.ReadRegister.
|
// ReadRegister implements I2C.ReadRegister.
|
||||||
func (bus *I2CBus) ReadRegister(addr uint8, r uint8, buf []byte) error {
|
func (bus *I2CBus) ReadRegister(addr uint8, r uint8, buf []byte) error {
|
||||||
return bus.FindDevice(addr).ReadRegister(r, buf)
|
return bus.FindDevice(addr).readRegister(r, buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
// WriteRegister implements I2C.WriteRegister.
|
// WriteRegister implements I2C.WriteRegister.
|
||||||
func (bus *I2CBus) WriteRegister(addr uint8, r uint8, buf []byte) error {
|
func (bus *I2CBus) WriteRegister(addr uint8, r uint8, buf []byte) error {
|
||||||
return bus.FindDevice(addr).WriteRegister(r, buf)
|
return bus.FindDevice(addr).writeRegister(r, buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tx implements I2C.Tx.
|
// Tx implements I2C.Tx.
|
||||||
|
|||||||
Reference in New Issue
Block a user