Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions adt7410/adt7410.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (
"time"

"tinygo.org/x/drivers"
"tinygo.org/x/drivers/internal/legacy"
)

type Error uint8
Expand Down Expand Up @@ -55,7 +54,7 @@ func (d *Device) Configure() (err error) {
// Connected returns whether sensor has been found.
func (d *Device) Connected() bool {
data := []byte{0}
legacy.ReadRegister(d.bus, uint8(d.Address), RegID, data)
d.bus.Tx(uint16(uint8(d.Address)), []byte{RegID}, data)
return data[0]&0xF8 == 0xC8
}

Expand All @@ -82,11 +81,11 @@ func (d *Device) writeByte(reg uint8, data byte) {
}

func (d *Device) readByte(reg uint8) byte {
legacy.ReadRegister(d.bus, d.Address, reg, d.buf)
d.bus.Tx(uint16(d.Address), []byte{reg}, d.buf)
return d.buf[0]
}

func (d *Device) readUint16(reg uint8) uint16 {
legacy.ReadRegister(d.bus, d.Address, reg, d.buf)
d.bus.Tx(uint16(d.Address), []byte{reg}, d.buf)
return uint16(d.buf[0])<<8 | uint16(d.buf[1])
}
2 changes: 1 addition & 1 deletion adxl345/adxl345.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ func (d *Device) ReadAcceleration() (x int32, y int32, z int32, err error) {
// from the adxl345.
func (d *Device) ReadRawAcceleration() (x int16, y int16, z int16) {
data := []byte{0, 0, 0, 0, 0, 0}
legacy.ReadRegister(d.bus, uint8(d.Address), REG_DATAX0, data)
d.bus.Tx(uint16(uint8(d.Address)), []byte{REG_DATAX0}, data)

x = readIntLE(data[0], data[1])
y = readIntLE(data[2], data[3])
Expand Down
34 changes: 17 additions & 17 deletions apds9960/apds9960.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ func New(bus drivers.I2C) Device {
// It does a "who am I" request and checks the response.
func (d *Device) Connected() bool {
data := []byte{0}
legacy.ReadRegister(d.bus, d.Address, APDS9960_ID_REG, data)
d.bus.Tx(uint16(d.Address), []byte{APDS9960_ID_REG}, data)
return data[0] == 0xAB
}

Expand Down Expand Up @@ -169,7 +169,7 @@ func (d *Device) ReadProximity() (proximity int32) {
return 0
}
data := []byte{0}
legacy.ReadRegister(d.bus, d.Address, APDS9960_PDATA_REG, data)
d.bus.Tx(uint16(d.Address), []byte{APDS9960_PDATA_REG}, data)
return 255 - int32(data[0])
}

Expand All @@ -196,14 +196,14 @@ func (d *Device) ReadColor() (r int32, g int32, b int32, clear int32) {
return
}
data := []byte{0, 0, 0, 0, 0, 0, 0, 0}
legacy.ReadRegister(d.bus, d.Address, APDS9960_CDATAL_REG, data[:1])
legacy.ReadRegister(d.bus, d.Address, APDS9960_CDATAH_REG, data[1:2])
legacy.ReadRegister(d.bus, d.Address, APDS9960_RDATAL_REG, data[2:3])
legacy.ReadRegister(d.bus, d.Address, APDS9960_RDATAH_REG, data[3:4])
legacy.ReadRegister(d.bus, d.Address, APDS9960_GDATAL_REG, data[4:5])
legacy.ReadRegister(d.bus, d.Address, APDS9960_GDATAH_REG, data[5:6])
legacy.ReadRegister(d.bus, d.Address, APDS9960_BDATAL_REG, data[6:7])
legacy.ReadRegister(d.bus, d.Address, APDS9960_BDATAH_REG, data[7:])
d.bus.Tx(uint16(d.Address), []byte{APDS9960_CDATAL_REG}, data[:1])
d.bus.Tx(uint16(d.Address), []byte{APDS9960_CDATAH_REG}, data[1:2])
d.bus.Tx(uint16(d.Address), []byte{APDS9960_RDATAL_REG}, data[2:3])
d.bus.Tx(uint16(d.Address), []byte{APDS9960_RDATAH_REG}, data[3:4])
d.bus.Tx(uint16(d.Address), []byte{APDS9960_GDATAL_REG}, data[4:5])
d.bus.Tx(uint16(d.Address), []byte{APDS9960_GDATAH_REG}, data[5:6])
d.bus.Tx(uint16(d.Address), []byte{APDS9960_BDATAL_REG}, data[6:7])
d.bus.Tx(uint16(d.Address), []byte{APDS9960_BDATAH_REG}, data[7:])
clear = int32(uint16(data[1])<<8 | uint16(data[0]))
r = int32(uint16(data[3])<<8 | uint16(data[2]))
g = int32(uint16(data[5])<<8 | uint16(data[4]))
Expand Down Expand Up @@ -235,13 +235,13 @@ func (d *Device) GestureAvailable() bool {
data := []byte{0, 0, 0, 0}

// check GVALID
legacy.ReadRegister(d.bus, d.Address, APDS9960_GSTATUS_REG, data[:1])
d.bus.Tx(uint16(d.Address), []byte{APDS9960_GSTATUS_REG}, data[:1])
if data[0]&0x01 == 0 {
return false
}

// get number of data sets available in FIFO
legacy.ReadRegister(d.bus, d.Address, APDS9960_GFLVL_REG, data[:1])
d.bus.Tx(uint16(d.Address), []byte{APDS9960_GFLVL_REG}, data[:1])
availableDataSets := data[0]
if availableDataSets == 0 {
return false
Expand All @@ -250,10 +250,10 @@ func (d *Device) GestureAvailable() bool {
// read up, down, left and right proximity data from FIFO
var dataSets [32][4]uint8
for i := uint8(0); i < availableDataSets; i++ {
legacy.ReadRegister(d.bus, d.Address, APDS9960_GFIFO_U_REG, data[:1])
legacy.ReadRegister(d.bus, d.Address, APDS9960_GFIFO_D_REG, data[1:2])
legacy.ReadRegister(d.bus, d.Address, APDS9960_GFIFO_L_REG, data[2:3])
legacy.ReadRegister(d.bus, d.Address, APDS9960_GFIFO_R_REG, data[3:4])
d.bus.Tx(uint16(d.Address), []byte{APDS9960_GFIFO_U_REG}, data[:1])
d.bus.Tx(uint16(d.Address), []byte{APDS9960_GFIFO_D_REG}, data[1:2])
d.bus.Tx(uint16(d.Address), []byte{APDS9960_GFIFO_L_REG}, data[2:3])
d.bus.Tx(uint16(d.Address), []byte{APDS9960_GFIFO_R_REG}, data[3:4])
for j := uint8(0); j < 4; j++ {
dataSets[i][j] = data[j]
}
Expand Down Expand Up @@ -395,7 +395,7 @@ func (d *Device) enable(cfg enableConfig) {

func (d *Device) readStatus(param string) bool {
data := []byte{0}
legacy.ReadRegister(d.bus, d.Address, APDS9960_STATUS_REG, data)
d.bus.Tx(uint16(d.Address), []byte{APDS9960_STATUS_REG}, data)

switch param {
case "CPSAT":
Expand Down
2 changes: 1 addition & 1 deletion as560x/i2c_register.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ func (r *i2cRegister) readShiftAndMask(bus drivers.I2C, deviceAddress uint8, shi
buf = buffer[:]
}
// Read the host register over I2C
err := legacy.ReadRegister(bus, deviceAddress, r.host.address, buf)
err := bus.Tx(uint16(deviceAddress), []byte{r.host.address}, buf)
if nil != err {
return 0, err
}
Expand Down
2 changes: 1 addition & 1 deletion axp192/axp192.go
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,6 @@ func (d *Device) write1Byte(reg, data uint8) {
}

func (d *Device) read8bit(reg uint8) uint8 {
legacy.ReadRegister(d.bus, d.Address, reg, d.buf[:1])
d.bus.Tx(uint16(d.Address), []byte{reg}, d.buf[:1])
return d.buf[0]
}
10 changes: 5 additions & 5 deletions bme280/bme280.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,19 +99,19 @@ func (d *Device) ConfigureWithSettings(config Config) {
}

var data [24]byte
err := legacy.ReadRegister(d.bus, uint8(d.Address), REG_CALIBRATION, data[:])
err := d.bus.Tx(uint16(uint8(d.Address)), []byte{REG_CALIBRATION}, data[:])
if err != nil {
return
}

var h1 [1]byte
err = legacy.ReadRegister(d.bus, uint8(d.Address), REG_CALIBRATION_H1, h1[:])
err = d.bus.Tx(uint16(uint8(d.Address)), []byte{REG_CALIBRATION_H1}, h1[:])
if err != nil {
return
}

var h2lsb [7]byte
err = legacy.ReadRegister(d.bus, uint8(d.Address), REG_CALIBRATION_H2LSB, h2lsb[:])
err = d.bus.Tx(uint16(uint8(d.Address)), []byte{REG_CALIBRATION_H2LSB}, h2lsb[:])
if err != nil {
return
}
Expand Down Expand Up @@ -154,7 +154,7 @@ func (d *Device) ConfigureWithSettings(config Config) {
// It does a "who am I" request and checks the response.
func (d *Device) Connected() bool {
data := []byte{0}
legacy.ReadRegister(d.bus, uint8(d.Address), WHO_AM_I, data)
d.bus.Tx(uint16(uint8(d.Address)), []byte{WHO_AM_I}, data)
return data[0] == CHIP_ID
}

Expand Down Expand Up @@ -261,7 +261,7 @@ func (d *Device) readData() (data [8]byte, err error) {
time.Sleep(d.measurementDelay())
}

err = legacy.ReadRegister(d.bus, uint8(d.Address), REG_PRESSURE, data[:])
err = d.bus.Tx(uint16(uint8(d.Address)), []byte{REG_PRESSURE}, data[:])
if err != nil {
println(err)
return
Expand Down
8 changes: 4 additions & 4 deletions bmp180/bmp180.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,15 @@ func New(bus drivers.I2C) Device {
// It does a "who am I" request and checks the response.
func (d *Device) Connected() bool {
data := []byte{0}
legacy.ReadRegister(d.bus, uint8(d.Address), WHO_AM_I, data)
d.bus.Tx(uint16(uint8(d.Address)), []byte{WHO_AM_I}, data)
return data[0] == CHIP_ID
}

// Configure sets up the device for communication and
// read the calibration coefficients.
func (d *Device) Configure() {
data := make([]byte, 22)
err := legacy.ReadRegister(d.bus, uint8(d.Address), AC1_MSB, data)
err := d.bus.Tx(uint16(uint8(d.Address)), []byte{AC1_MSB}, data)
if err != nil {
return
}
Expand Down Expand Up @@ -145,7 +145,7 @@ func (d *Device) rawTemp() (int32, error) {
legacy.WriteRegister(d.bus, uint8(d.Address), REG_CTRL, []byte{CMD_TEMP})
time.Sleep(5 * time.Millisecond)
data := make([]byte, 2)
err := legacy.ReadRegister(d.bus, uint8(d.Address), REG_TEMP_MSB, data)
err := d.bus.Tx(uint16(uint8(d.Address)), []byte{REG_TEMP_MSB}, data)
if err != nil {
return 0, err
}
Expand All @@ -164,7 +164,7 @@ func (d *Device) rawPressure(mode OversamplingMode) (int32, error) {
legacy.WriteRegister(d.bus, uint8(d.Address), REG_CTRL, []byte{CMD_PRESSURE + byte(mode<<6)})
time.Sleep(pauseForReading(mode))
data := make([]byte, 3)
err := legacy.ReadRegister(d.bus, uint8(d.Address), REG_PRESSURE_MSB, data)
err := d.bus.Tx(uint16(uint8(d.Address)), []byte{REG_PRESSURE_MSB}, data)
if err != nil {
return 0, err
}
Expand Down
15 changes: 12 additions & 3 deletions bmp388/bmp388.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"errors"

"tinygo.org/x/drivers"
"tinygo.org/x/drivers/internal/legacy"
)

var (
Expand Down Expand Up @@ -241,10 +240,20 @@ func (d *Device) configurationError() bool {

func (d *Device) readRegister(register byte, len int) (data []byte, err error) {
data = make([]byte, len)
err = legacy.ReadRegister(d.bus, d.Address, register, data)
err = d.bus.Tx(uint16(d.Address), []byte{register}, data)
return
}

func (d *Device) writeRegister(register byte, data byte) error {
return legacy.WriteRegister(d.bus, d.Address, register, []byte{data})
{
var (
bus drivers.I2C = d.bus
addr uint8 = d.Address
data []byte = []byte{data}
)
buf := make([]uint8, len(data)+1)
buf[0] = register
copy(buf[1:], data)
return bus.Tx(uint16(addr), buf, nil)
}
}
13 changes: 10 additions & 3 deletions cap1166/cap1166.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
"fmt"

"tinygo.org/x/drivers"
"tinygo.org/x/drivers/internal/legacy"
)

// DefaultAddress is the I2C address on the Display-o-Tron HAT.
Expand Down Expand Up @@ -197,11 +196,19 @@ func (d *Device) GraphOff() error {
}

func (d *Device) writeByte(reg, value uint8) error {
return legacy.WriteRegister(d.bus, d.Address, reg, []byte{value})
var (
bus drivers.I2C = d.bus
addr uint8 = d.Address
data []byte = []byte{value}
)
buf := make([]uint8, len(data)+1)
buf[0] = reg
copy(buf[1:], data)
return bus.Tx(uint16(addr), buf, nil)
}

func (d *Device) readByte(reg uint8) (uint8, error) {
buf := make([]byte, 1)
err := legacy.ReadRegister(d.bus, d.Address, reg, buf)
err := d.bus.Tx(uint16(d.Address), []byte{reg}, buf)
return buf[0], err
}
9 changes: 4 additions & 5 deletions ds1307/ds1307.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
"time"

"tinygo.org/x/drivers"
"tinygo.org/x/drivers/internal/legacy"
)

// Device wraps an I2C connection to a DS1307 device.
Expand Down Expand Up @@ -45,7 +44,7 @@ func (d *Device) SetTime(t time.Time) error {
// ReadTime returns the date and time
func (d *Device) ReadTime() (time.Time, error) {
data := make([]byte, 8)
err := legacy.ReadRegister(d.bus, d.Address, uint8(TimeDate), data)
err := d.bus.Tx(uint16(d.Address), []byte{uint8(TimeDate)}, data)
if err != nil {
return time.Time{}, err
}
Expand Down Expand Up @@ -106,7 +105,7 @@ func (d *Device) Read(data []uint8) (n int, err error) {
if int(d.AddressSRAM)+len(data)-1 > SRAMEndAddress {
return 0, errors.New("EOF")
}
err = legacy.ReadRegister(d.bus, d.Address, d.AddressSRAM, data)
err = d.bus.Tx(uint16(d.Address), []byte{d.AddressSRAM}, data)
if err != nil {
return 0, err
}
Expand All @@ -125,7 +124,7 @@ func (d *Device) SetOscillatorFrequency(sqw uint8) error {
// IsOscillatorRunning returns if the oscillator is running
func (d *Device) IsOscillatorRunning() bool {
data := []byte{0}
err := legacy.ReadRegister(d.bus, d.Address, uint8(TimeDate), data)
err := d.bus.Tx(uint16(d.Address), []byte{uint8(TimeDate)}, data)
if err != nil {
return false
}
Expand All @@ -135,7 +134,7 @@ func (d *Device) IsOscillatorRunning() bool {
// SetOscillatorRunning starts/stops internal oscillator by toggling halt bit
func (d *Device) SetOscillatorRunning(running bool) error {
data := make([]byte, 3)
err := legacy.ReadRegister(d.bus, d.Address, uint8(TimeDate), data)
err := d.bus.Tx(uint16(d.Address), []byte{uint8(TimeDate)}, data)
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion ft6336/ft6336.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,6 @@ func (d *Device) write1Byte(reg, data uint8) {
}

func (d *Device) read8bit(reg uint8) uint8 {
legacy.ReadRegister(d.bus, d.Address, reg, d.buf[:1])
d.bus.Tx(uint16(d.Address), []byte{reg}, d.buf[:1])
return d.buf[0]
}
15 changes: 12 additions & 3 deletions ina219/ina219.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package ina219

import (
"tinygo.org/x/drivers"
"tinygo.org/x/drivers/internal/legacy"
)

// An INA219 device.
Expand Down Expand Up @@ -186,7 +185,7 @@ func (d *Device) ReadConfig() (config Config, err error) {
func (d *Device) ReadRegister(reg uint8) (val int16, err error) {
buf := make([]byte, 2)

err = legacy.ReadRegister(d.bus, uint8(d.Address), reg, buf)
err = d.bus.Tx(uint16(uint8(d.Address)), []byte{reg}, buf)
if err != nil {
return
}
Expand All @@ -198,5 +197,15 @@ func (d *Device) ReadRegister(reg uint8) (val int16, err error) {
// Write to a register on the device.
func (d *Device) WriteRegister(reg uint8, val uint16) error {
buf := []byte{byte(val >> 8), byte(val & 0xff)}
return legacy.WriteRegister(d.bus, uint8(d.Address), reg, buf)
{
var (
bus drivers.I2C = d.bus
addr uint8 = uint8(d.Address)
data []byte = buf
)
buf := make([]uint8, len(data)+1)
buf[0] = reg
copy(buf[1:], data)
return bus.Tx(uint16(addr), buf, nil)
}
}
2 changes: 1 addition & 1 deletion ina260/ina260.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ func (d *Device) Power() int32 {
// Read a register
func (d *Device) ReadRegister(reg uint8) uint16 {
data := []byte{0, 0}
legacy.ReadRegister(d.bus, uint8(d.Address), reg, data)
d.bus.Tx(uint16(uint8(d.Address)), []byte{reg}, data)
return (uint16(data[0]) << 8) | uint16(data[1])
}

Expand Down
6 changes: 6 additions & 0 deletions internal/legacy/i2clegacy.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,16 @@ package legacy

import "tinygo.org/x/drivers"

// Deprecated: Use bus.Tx directly. Run tinygo fix to migrate callers.
//
//go:fix inline
func ReadRegister(bus drivers.I2C, addr uint8, reg uint8, data []byte) error {
return bus.Tx(uint16(addr), []byte{reg}, data)
}

// Deprecated: Use bus.Tx directly. Run tinygo fix to migrate callers.
//
//go:fix inline
func WriteRegister(bus drivers.I2C, addr uint8, reg uint8, data []byte) error {
buf := make([]uint8, len(data)+1)
buf[0] = reg
Expand Down
Loading
Loading