diff --git a/adt7410/adt7410.go b/adt7410/adt7410.go index d71dca5..c055be0 100644 --- a/adt7410/adt7410.go +++ b/adt7410/adt7410.go @@ -7,6 +7,7 @@ import ( "time" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) type Error uint8 @@ -54,7 +55,7 @@ func (d *Device) Configure() (err error) { // Connected returns whether sensor has been found. func (d *Device) Connected() bool { data := []byte{0} - d.bus.ReadRegister(uint8(d.Address), RegID, data) + legacy.ReadRegister(d.bus, uint8(d.Address), RegID, data) return data[0]&0xF8 == 0xC8 } @@ -81,11 +82,11 @@ func (d *Device) writeByte(reg uint8, data byte) { } func (d *Device) readByte(reg uint8) byte { - d.bus.ReadRegister(d.Address, reg, d.buf) + legacy.ReadRegister(d.bus, d.Address, reg, d.buf) return d.buf[0] } func (d *Device) readUint16(reg uint8) uint16 { - d.bus.ReadRegister(d.Address, reg, d.buf) + legacy.ReadRegister(d.bus, d.Address, reg, d.buf) return uint16(d.buf[0])<<8 | uint16(d.buf[1]) } diff --git a/adxl345/adxl345.go b/adxl345/adxl345.go index 1969ba3..aa9e625 100644 --- a/adxl345/adxl345.go +++ b/adxl345/adxl345.go @@ -5,7 +5,10 @@ // Datasheet JP: http://www.analog.com/media/jp/technical-documentation/data-sheets/ADXL345_jp.pdf package adxl345 // import "tinygo.org/x/drivers/adxl345" -import "tinygo.org/x/drivers" +import ( + "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" +) type Range uint8 type Rate uint8 @@ -68,21 +71,21 @@ func New(bus drivers.I2C) Device { // Configure sets up the device for communication func (d *Device) Configure() { - d.bus.WriteRegister(uint8(d.Address), REG_BW_RATE, []byte{d.bwRate.toByte()}) - d.bus.WriteRegister(uint8(d.Address), REG_POWER_CTL, []byte{d.powerCtl.toByte()}) - d.bus.WriteRegister(uint8(d.Address), REG_DATA_FORMAT, []byte{d.dataFormat.toByte()}) + legacy.WriteRegister(d.bus, uint8(d.Address), REG_BW_RATE, []byte{d.bwRate.toByte()}) + legacy.WriteRegister(d.bus, uint8(d.Address), REG_POWER_CTL, []byte{d.powerCtl.toByte()}) + legacy.WriteRegister(d.bus, uint8(d.Address), REG_DATA_FORMAT, []byte{d.dataFormat.toByte()}) } // Halt stops the sensor, values will not updated func (d *Device) Halt() { d.powerCtl.measure = 0 - d.bus.WriteRegister(uint8(d.Address), REG_POWER_CTL, []byte{d.powerCtl.toByte()}) + legacy.WriteRegister(d.bus, uint8(d.Address), REG_POWER_CTL, []byte{d.powerCtl.toByte()}) } // Restart makes reading the sensor working again after a halt func (d *Device) Restart() { d.powerCtl.measure = 1 - d.bus.WriteRegister(uint8(d.Address), REG_POWER_CTL, []byte{d.powerCtl.toByte()}) + legacy.WriteRegister(d.bus, uint8(d.Address), REG_POWER_CTL, []byte{d.powerCtl.toByte()}) } // ReadAcceleration reads the current acceleration from the device and returns @@ -103,7 +106,7 @@ func (d *Device) ReadAcceleration() (x int32, y int32, z int32, err error) { // from the adxl345. func (d *Device) ReadRawAcceleration() (x int32, y int32, z int32) { data := []byte{0, 0, 0, 0, 0, 0} - d.bus.ReadRegister(uint8(d.Address), REG_DATAX0, data) + legacy.ReadRegister(d.bus, uint8(d.Address), REG_DATAX0, data) x = readIntLE(data[0], data[1]) y = readIntLE(data[2], data[3]) @@ -119,20 +122,20 @@ func (d *Device) UseLowPower(power bool) { } else { d.bwRate.lowPower = 0 } - d.bus.WriteRegister(uint8(d.Address), REG_BW_RATE, []byte{d.bwRate.toByte()}) + legacy.WriteRegister(d.bus, uint8(d.Address), REG_BW_RATE, []byte{d.bwRate.toByte()}) } // SetRate change the current rate of the sensor func (d *Device) SetRate(rate Rate) bool { d.bwRate.rate = rate & 0x0F - d.bus.WriteRegister(uint8(d.Address), REG_BW_RATE, []byte{d.bwRate.toByte()}) + legacy.WriteRegister(d.bus, uint8(d.Address), REG_BW_RATE, []byte{d.bwRate.toByte()}) return true } // SetRange change the current range of the sensor func (d *Device) SetRange(sensorRange Range) bool { d.dataFormat.sensorRange = sensorRange & 0x03 - d.bus.WriteRegister(uint8(d.Address), REG_DATA_FORMAT, []byte{d.dataFormat.toByte()}) + legacy.WriteRegister(d.bus, uint8(d.Address), REG_DATA_FORMAT, []byte{d.dataFormat.toByte()}) return true } diff --git a/amg88xx/amg88xx.go b/amg88xx/amg88xx.go index f60ed62..24463d4 100644 --- a/amg88xx/amg88xx.go +++ b/amg88xx/amg88xx.go @@ -8,6 +8,7 @@ import ( "time" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) // Device wraps an I2C connection to a AMG88xx device. @@ -48,7 +49,7 @@ func (d *Device) Configure(cfg Config) { // ReadPixels returns the 64 values (8x8 grid) of the sensor converted to millicelsius func (d *Device) ReadPixels(buffer *[64]int16) { - d.bus.ReadRegister(uint8(d.Address), PIXEL_OFFSET, d.data) + legacy.ReadRegister(d.bus, uint8(d.Address), PIXEL_OFFSET, d.data) for i := 0; i < 64; i++ { buffer[i] = int16((uint16(d.data[2*i+1]) << 8) | uint16(d.data[2*i])) if (buffer[i] & (1 << 11)) > 0 { // temperature negative @@ -61,17 +62,17 @@ func (d *Device) ReadPixels(buffer *[64]int16) { // SetPCTL sets the PCTL func (d *Device) SetPCTL(pctl uint8) { - d.bus.WriteRegister(uint8(d.Address), PCTL, []byte{pctl}) + legacy.WriteRegister(d.bus, uint8(d.Address), PCTL, []byte{pctl}) } // SetReset sets the reset value func (d *Device) SetReset(rst uint8) { - d.bus.WriteRegister(uint8(d.Address), RST, []byte{rst}) + legacy.WriteRegister(d.bus, uint8(d.Address), RST, []byte{rst}) } // SetFrameRate configures the frame rate func (d *Device) SetFrameRate(framerate uint8) { - d.bus.WriteRegister(uint8(d.Address), FPSC, []byte{framerate & 0x01}) + legacy.WriteRegister(d.bus, uint8(d.Address), FPSC, []byte{framerate & 0x01}) } // SetMovingAverageMode sets the moving average mode @@ -80,7 +81,7 @@ func (d *Device) SetMovingAverageMode(mode bool) { if mode { value = 1 } - d.bus.WriteRegister(uint8(d.Address), AVE, []byte{value << 5}) + legacy.WriteRegister(d.bus, uint8(d.Address), AVE, []byte{value << 5}) } // SetInterruptLevels sets the interrupt levels @@ -97,8 +98,8 @@ func (d *Device) SetInterruptLevelsHysteresis(high int16, low int16, hysteresis if high > 4095 { high = 4095 } - d.bus.WriteRegister(uint8(d.Address), INTHL, []byte{uint8(high & 0xFF)}) - d.bus.WriteRegister(uint8(d.Address), INTHL, []byte{uint8((high & 0xFF) >> 4)}) + legacy.WriteRegister(d.bus, uint8(d.Address), INTHL, []byte{uint8(high & 0xFF)}) + legacy.WriteRegister(d.bus, uint8(d.Address), INTHL, []byte{uint8((high & 0xFF) >> 4)}) low = low / PIXEL_TEMP_CONVERSION if low < -4095 { @@ -107,8 +108,8 @@ func (d *Device) SetInterruptLevelsHysteresis(high int16, low int16, hysteresis if low > 4095 { low = 4095 } - d.bus.WriteRegister(uint8(d.Address), INTHL, []byte{uint8(low & 0xFF)}) - d.bus.WriteRegister(uint8(d.Address), INTHL, []byte{uint8((low & 0xFF) >> 4)}) + legacy.WriteRegister(d.bus, uint8(d.Address), INTHL, []byte{uint8(low & 0xFF)}) + legacy.WriteRegister(d.bus, uint8(d.Address), INTHL, []byte{uint8((low & 0xFF) >> 4)}) hysteresis = hysteresis / PIXEL_TEMP_CONVERSION if hysteresis < -4095 { @@ -117,32 +118,32 @@ func (d *Device) SetInterruptLevelsHysteresis(high int16, low int16, hysteresis if hysteresis > 4095 { hysteresis = 4095 } - d.bus.WriteRegister(uint8(d.Address), INTHL, []byte{uint8(hysteresis & 0xFF)}) - d.bus.WriteRegister(uint8(d.Address), INTHL, []byte{uint8((hysteresis & 0xFF) >> 4)}) + legacy.WriteRegister(d.bus, uint8(d.Address), INTHL, []byte{uint8(hysteresis & 0xFF)}) + legacy.WriteRegister(d.bus, uint8(d.Address), INTHL, []byte{uint8((hysteresis & 0xFF) >> 4)}) } // EnableInterrupt enables the interrupt pin on the device func (d *Device) EnableInterrupt() { d.interruptEnable = 1 - d.bus.WriteRegister(uint8(d.Address), INTC, []byte{((uint8(d.interruptMode) << 1) | d.interruptEnable) & 0x03}) + legacy.WriteRegister(d.bus, uint8(d.Address), INTC, []byte{((uint8(d.interruptMode) << 1) | d.interruptEnable) & 0x03}) } // DisableInterrupt disables the interrupt pin on the device func (d *Device) DisableInterrupt() { d.interruptEnable = 0 - d.bus.WriteRegister(uint8(d.Address), INTC, []byte{((uint8(d.interruptMode) << 1) | d.interruptEnable) & 0x03}) + legacy.WriteRegister(d.bus, uint8(d.Address), INTC, []byte{((uint8(d.interruptMode) << 1) | d.interruptEnable) & 0x03}) } // SetInterruptMode sets the interrupt mode func (d *Device) SetInterruptMode(mode InterruptMode) { d.interruptMode = mode - d.bus.WriteRegister(uint8(d.Address), INTC, []byte{((uint8(d.interruptMode) << 1) | d.interruptEnable) & 0x03}) + legacy.WriteRegister(d.bus, uint8(d.Address), INTC, []byte{((uint8(d.interruptMode) << 1) | d.interruptEnable) & 0x03}) } // GetInterrupt reads the state of the triggered interrupts func (d *Device) GetInterrupt() []uint8 { data := make([]uint8, 8) - d.bus.ReadRegister(uint8(d.Address), INT_OFFSET, data) + legacy.ReadRegister(d.bus, uint8(d.Address), INT_OFFSET, data) return data } @@ -154,6 +155,6 @@ func (d *Device) ClearInterrupt() { // ReadThermistor reads the onboard thermistor func (d *Device) ReadThermistor() int16 { data := make([]uint8, 2) - d.bus.ReadRegister(uint8(d.Address), TTHL, data) + legacy.ReadRegister(d.bus, uint8(d.Address), TTHL, data) return (int16((uint16(data[1])<<8)|uint16(data[0])) * THERMISTOR_CONVERSION) / 10 } diff --git a/apds9960/apds9960.go b/apds9960/apds9960.go index ed523ef..27e5c98 100644 --- a/apds9960/apds9960.go +++ b/apds9960/apds9960.go @@ -8,6 +8,7 @@ import ( "time" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) // Device wraps an I2C connection to a APDS-9960 device. @@ -68,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} - d.bus.ReadRegister(d.Address, APDS9960_ID_REG, data) + legacy.ReadRegister(d.bus, d.Address, APDS9960_ID_REG, data) return data[0] == 0xAB } @@ -80,7 +81,7 @@ func (d *Device) GetMode() uint8 { // DisableAll turns off the device and all functions func (d *Device) DisableAll() { d.enable(enableConfig{}) - d.bus.WriteRegister(d.Address, APDS9960_GCONF4_REG, []byte{0x00}) + legacy.WriteRegister(d.bus, d.Address, APDS9960_GCONF4_REG, []byte{0x00}) d.mode = MODE_NONE d.gesture.detected = GESTURE_NONE } @@ -88,13 +89,13 @@ func (d *Device) DisableAll() { // SetProximityPulse sets proximity pulse length (4, 8, 16, 32) and count (1~64) // default: 16, 64 func (d *Device) SetProximityPulse(length, count uint8) { - d.bus.WriteRegister(d.Address, APDS9960_PPULSE_REG, []byte{getPulseLength(length)<<6 | getPulseCount(count)}) + legacy.WriteRegister(d.bus, d.Address, APDS9960_PPULSE_REG, []byte{getPulseLength(length)<<6 | getPulseCount(count)}) } // SetGesturePulse sets gesture pulse length (4, 8, 16, 32) and count (1~64) // default: 16, 64 func (d *Device) SetGesturePulse(length, count uint8) { - d.bus.WriteRegister(d.Address, APDS9960_GPULSE_REG, []byte{getPulseLength(length)<<6 | getPulseCount(count)}) + legacy.WriteRegister(d.bus, d.Address, APDS9960_GPULSE_REG, []byte{getPulseLength(length)<<6 | getPulseCount(count)}) } // SetADCIntegrationCycles sets ALS/color ADC internal integration cycles (1~256, 1 cycle = 2.78 ms) @@ -103,14 +104,14 @@ func (d *Device) SetADCIntegrationCycles(cycles uint16) { if cycles > 256 { cycles = 256 } - d.bus.WriteRegister(d.Address, APDS9960_ATIME_REG, []byte{uint8(256 - cycles)}) + legacy.WriteRegister(d.bus, d.Address, APDS9960_ATIME_REG, []byte{uint8(256 - cycles)}) } // SetGains sets proximity/gesture gain (1, 2, 4, 8x) and ALS/color gain (1, 4, 16, 64x) // default: 1, 1, 4 func (d *Device) SetGains(proximityGain, gestureGain, colorGain uint8) { - d.bus.WriteRegister(d.Address, APDS9960_CONTROL_REG, []byte{getProximityGain(proximityGain)<<2 | getALSGain(colorGain)}) - d.bus.WriteRegister(d.Address, APDS9960_GCONF2_REG, []byte{getProximityGain(gestureGain) << 5}) + legacy.WriteRegister(d.bus, d.Address, APDS9960_CONTROL_REG, []byte{getProximityGain(proximityGain)<<2 | getALSGain(colorGain)}) + legacy.WriteRegister(d.bus, d.Address, APDS9960_GCONF2_REG, []byte{getProximityGain(gestureGain) << 5}) } // LEDBoost sets proximity and gesture LED current level (100, 150, 200, 300 (%)) @@ -127,7 +128,7 @@ func (d *Device) LEDBoost(percent uint16) { case 300: v = 3 } - d.bus.WriteRegister(d.Address, APDS9960_CONFIG2_REG, []byte{0x01 | v<<4}) + legacy.WriteRegister(d.bus, d.Address, APDS9960_CONFIG2_REG, []byte{0x01 | v<<4}) } // Setthreshold sets threshold (0~255) for detecting gestures @@ -168,7 +169,7 @@ func (d *Device) ReadProximity() (proximity int32) { return 0 } data := []byte{0} - d.bus.ReadRegister(d.Address, APDS9960_PDATA_REG, data) + legacy.ReadRegister(d.bus, d.Address, APDS9960_PDATA_REG, data) return 255 - int32(data[0]) } @@ -195,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} - d.bus.ReadRegister(d.Address, APDS9960_CDATAL_REG, data[:1]) - d.bus.ReadRegister(d.Address, APDS9960_CDATAH_REG, data[1:2]) - d.bus.ReadRegister(d.Address, APDS9960_RDATAL_REG, data[2:3]) - d.bus.ReadRegister(d.Address, APDS9960_RDATAH_REG, data[3:4]) - d.bus.ReadRegister(d.Address, APDS9960_GDATAL_REG, data[4:5]) - d.bus.ReadRegister(d.Address, APDS9960_GDATAH_REG, data[5:6]) - d.bus.ReadRegister(d.Address, APDS9960_BDATAL_REG, data[6:7]) - d.bus.ReadRegister(d.Address, APDS9960_BDATAH_REG, data[7:]) + 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:]) 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])) @@ -234,13 +235,13 @@ func (d *Device) GestureAvailable() bool { data := []byte{0, 0, 0, 0} // check GVALID - d.bus.ReadRegister(d.Address, APDS9960_GSTATUS_REG, data[:1]) + legacy.ReadRegister(d.bus, d.Address, APDS9960_GSTATUS_REG, data[:1]) if data[0]&0x01 == 0 { return false } // get number of data sets available in FIFO - d.bus.ReadRegister(d.Address, APDS9960_GFLVL_REG, data[:1]) + legacy.ReadRegister(d.bus, d.Address, APDS9960_GFLVL_REG, data[:1]) availableDataSets := data[0] if availableDataSets == 0 { return false @@ -249,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++ { - d.bus.ReadRegister(d.Address, APDS9960_GFIFO_U_REG, data[:1]) - d.bus.ReadRegister(d.Address, APDS9960_GFIFO_D_REG, data[1:2]) - d.bus.ReadRegister(d.Address, APDS9960_GFIFO_L_REG, data[2:3]) - d.bus.ReadRegister(d.Address, APDS9960_GFIFO_R_REG, data[3:4]) + 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]) for j := uint8(0); j < 4; j++ { dataSets[i][j] = data[j] } @@ -385,7 +386,7 @@ func (d *Device) enable(cfg enableConfig) { } data := []byte{gen<<6 | pien<<5 | aien<<4 | wen<<3 | pen<<2 | aen<<1 | pon} - d.bus.WriteRegister(d.Address, APDS9960_ENABLE_REG, data) + legacy.WriteRegister(d.bus, d.Address, APDS9960_ENABLE_REG, data) if cfg.PON { time.Sleep(time.Millisecond * 10) @@ -394,7 +395,7 @@ func (d *Device) enable(cfg enableConfig) { func (d *Device) readStatus(param string) bool { data := []byte{0} - d.bus.ReadRegister(d.Address, APDS9960_STATUS_REG, data) + legacy.ReadRegister(d.bus, d.Address, APDS9960_STATUS_REG, data) switch param { case "CPSAT": diff --git a/as560x/i2c_register.go b/as560x/i2c_register.go index 2a232ab..9984a24 100644 --- a/as560x/i2c_register.go +++ b/as560x/i2c_register.go @@ -5,6 +5,7 @@ import ( "errors" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) // registerAttributes is a bitfield of attributes for a register @@ -94,7 +95,7 @@ func (r *i2cRegister) readShiftAndMask(bus drivers.I2C, deviceAddress uint8, shi buf = buffer[:] } // Read the host register over I2C - err := bus.ReadRegister(deviceAddress, r.host.address, buf) + err := legacy.ReadRegister(bus, deviceAddress, r.host.address, buf) if nil != err { return 0, err } diff --git a/axp192/axp192.go b/axp192/axp192.go index 9c342d1..3071b02 100644 --- a/axp192/axp192.go +++ b/axp192/axp192.go @@ -7,6 +7,7 @@ package axp192 // import "tinygo.org/x/drivers/axp192" import ( "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) type Error uint8 @@ -248,10 +249,10 @@ func (d *Device) SetLDOEnable(number uint8, state bool) { } func (d *Device) write1Byte(reg, data uint8) { - d.bus.WriteRegister(d.Address, reg, []byte{data}) + legacy.WriteRegister(d.bus, d.Address, reg, []byte{data}) } func (d *Device) read8bit(reg uint8) uint8 { - d.bus.ReadRegister(d.Address, reg, d.buf[:1]) + legacy.ReadRegister(d.bus, d.Address, reg, d.buf[:1]) return d.buf[0] } diff --git a/bme280/bme280.go b/bme280/bme280.go index ebad40f..f027f5a 100644 --- a/bme280/bme280.go +++ b/bme280/bme280.go @@ -10,6 +10,7 @@ import ( "time" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) // calibrationCoefficients reads at startup and stores the calibration coefficients @@ -98,19 +99,19 @@ func (d *Device) ConfigureWithSettings(config Config) { } var data [24]byte - err := d.bus.ReadRegister(uint8(d.Address), REG_CALIBRATION, data[:]) + err := legacy.ReadRegister(d.bus, uint8(d.Address), REG_CALIBRATION, data[:]) if err != nil { return } var h1 [1]byte - err = d.bus.ReadRegister(uint8(d.Address), REG_CALIBRATION_H1, h1[:]) + err = legacy.ReadRegister(d.bus, uint8(d.Address), REG_CALIBRATION_H1, h1[:]) if err != nil { return } var h2lsb [7]byte - err = d.bus.ReadRegister(uint8(d.Address), REG_CALIBRATION_H2LSB, h2lsb[:]) + err = legacy.ReadRegister(d.bus, uint8(d.Address), REG_CALIBRATION_H2LSB, h2lsb[:]) if err != nil { return } @@ -137,12 +138,12 @@ func (d *Device) ConfigureWithSettings(config Config) { d.Reset() - d.bus.WriteRegister(uint8(d.Address), CTRL_CONFIG, []byte{byte(d.Config.Period<<5) | byte(d.Config.IIR<<2)}) - d.bus.WriteRegister(uint8(d.Address), CTRL_HUMIDITY_ADDR, []byte{byte(d.Config.Humidity)}) + legacy.WriteRegister(d.bus, uint8(d.Address), CTRL_CONFIG, []byte{byte(d.Config.Period<<5) | byte(d.Config.IIR<<2)}) + legacy.WriteRegister(d.bus, uint8(d.Address), CTRL_HUMIDITY_ADDR, []byte{byte(d.Config.Humidity)}) // Normal mode, start measuring now if d.Config.Mode == ModeNormal { - d.bus.WriteRegister(uint8(d.Address), CTRL_MEAS_ADDR, []byte{ + legacy.WriteRegister(d.bus, uint8(d.Address), CTRL_MEAS_ADDR, []byte{ byte(d.Config.Temperature<<5) | byte(d.Config.Pressure<<2) | byte(d.Config.Mode)}) @@ -153,13 +154,13 @@ 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} - d.bus.ReadRegister(uint8(d.Address), WHO_AM_I, data) + legacy.ReadRegister(d.bus, uint8(d.Address), WHO_AM_I, data) return data[0] == CHIP_ID } // Reset the device func (d *Device) Reset() { - d.bus.WriteRegister(uint8(d.Address), CMD_RESET, []byte{0xB6}) + legacy.WriteRegister(d.bus, uint8(d.Address), CMD_RESET, []byte{0xB6}) } // SetMode can set the device to Sleep, Normal or Forced mode @@ -170,7 +171,7 @@ func (d *Device) Reset() { func (d *Device) SetMode(mode Mode) { d.Config.Mode = mode - d.bus.WriteRegister(uint8(d.Address), CTRL_MEAS_ADDR, []byte{ + legacy.WriteRegister(d.bus, uint8(d.Address), CTRL_MEAS_ADDR, []byte{ byte(d.Config.Temperature<<5) | byte(d.Config.Pressure<<2) | byte(d.Config.Mode)}) @@ -252,7 +253,7 @@ func readIntLE(msb byte, lsb byte) int16 { func (d *Device) readData() (data [8]byte, err error) { if d.Config.Mode == ModeForced { // Write the CTRL_MEAS register to trigger a measurement - d.bus.WriteRegister(uint8(d.Address), CTRL_MEAS_ADDR, []byte{ + legacy.WriteRegister(d.bus, uint8(d.Address), CTRL_MEAS_ADDR, []byte{ byte(d.Config.Temperature<<5) | byte(d.Config.Pressure<<2) | byte(d.Config.Mode)}) @@ -260,7 +261,7 @@ func (d *Device) readData() (data [8]byte, err error) { time.Sleep(d.measurementDelay()) } - err = d.bus.ReadRegister(uint8(d.Address), REG_PRESSURE, data[:]) + err = legacy.ReadRegister(d.bus, uint8(d.Address), REG_PRESSURE, data[:]) if err != nil { println(err) return diff --git a/bmp180/bmp180.go b/bmp180/bmp180.go index af93ee3..022aaf0 100644 --- a/bmp180/bmp180.go +++ b/bmp180/bmp180.go @@ -10,6 +10,7 @@ import ( "time" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) // OversamplingMode is the oversampling ratio of the pressure measurement. @@ -55,7 +56,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} - d.bus.ReadRegister(uint8(d.Address), WHO_AM_I, data) + legacy.ReadRegister(d.bus, uint8(d.Address), WHO_AM_I, data) return data[0] == CHIP_ID } @@ -63,7 +64,7 @@ func (d *Device) Connected() bool { // read the calibration coefficients. func (d *Device) Configure() { data := make([]byte, 22) - err := d.bus.ReadRegister(uint8(d.Address), AC1_MSB, data) + err := legacy.ReadRegister(d.bus, uint8(d.Address), AC1_MSB, data) if err != nil { return } @@ -141,10 +142,10 @@ func (d *Device) ReadAltitude() (int32, error) { // rawTemp returns the sensor's raw values of the temperature func (d *Device) rawTemp() (int32, error) { - d.bus.WriteRegister(uint8(d.Address), REG_CTRL, []byte{CMD_TEMP}) + legacy.WriteRegister(d.bus, uint8(d.Address), REG_CTRL, []byte{CMD_TEMP}) time.Sleep(5 * time.Millisecond) data := make([]byte, 2) - err := d.bus.ReadRegister(uint8(d.Address), REG_TEMP_MSB, data) + err := legacy.ReadRegister(d.bus, uint8(d.Address), REG_TEMP_MSB, data) if err != nil { return 0, err } @@ -160,10 +161,10 @@ func (d *Device) calculateB5(rawTemp int32) int32 { // rawPressure returns the sensor's raw values of the pressure func (d *Device) rawPressure(mode OversamplingMode) (int32, error) { - d.bus.WriteRegister(uint8(d.Address), REG_CTRL, []byte{CMD_PRESSURE + byte(mode<<6)}) + legacy.WriteRegister(d.bus, uint8(d.Address), REG_CTRL, []byte{CMD_PRESSURE + byte(mode<<6)}) time.Sleep(pauseForReading(mode)) data := make([]byte, 3) - err := d.bus.ReadRegister(uint8(d.Address), REG_PRESSURE_MSB, data) + err := legacy.ReadRegister(d.bus, uint8(d.Address), REG_PRESSURE_MSB, data) if err != nil { return 0, err } diff --git a/bmp280/bmp280.go b/bmp280/bmp280.go index edd64da..2e769c1 100644 --- a/bmp280/bmp280.go +++ b/bmp280/bmp280.go @@ -4,6 +4,7 @@ import ( "time" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) // OversamplingMode is the oversampling ratio of the temperature or pressure measurement. @@ -64,14 +65,14 @@ func New(bus drivers.I2C) Device { // It does a "who am I" request and checks the response. func (d *Device) Connected() bool { data := make([]byte, 1) - d.bus.ReadRegister(uint8(d.Address), REG_ID, data) + legacy.ReadRegister(d.bus, uint8(d.Address), REG_ID, data) return data[0] == CHIP_ID } // Reset preforms complete power-on-reset procedure. // It is required to call Configure afterwards. func (d *Device) Reset() { - d.bus.WriteRegister(uint8(d.Address), REG_RESET, []byte{CMD_RESET}) + legacy.WriteRegister(d.bus, uint8(d.Address), REG_RESET, []byte{CMD_RESET}) } // Configure sets up the device for communication and @@ -85,15 +86,15 @@ func (d *Device) Configure(standby Standby, filter Filter, temp Oversampling, pr // Write the configuration (standby, filter, spi 3 wire) config := uint(d.Standby<<5) | uint(d.Filter<<2) | 0x00 - d.bus.WriteRegister(uint8(d.Address), REG_CONFIG, []byte{byte(config)}) + legacy.WriteRegister(d.bus, uint8(d.Address), REG_CONFIG, []byte{byte(config)}) // Write the control (temperature oversampling, pressure oversampling, config = uint(d.Temperature<<5) | uint(d.Pressure<<2) | uint(d.Mode) - d.bus.WriteRegister(uint8(d.Address), REG_CTRL_MEAS, []byte{byte(config)}) + legacy.WriteRegister(d.bus, uint8(d.Address), REG_CTRL_MEAS, []byte{byte(config)}) // Read Calibration data data := make([]byte, 24) - err := d.bus.ReadRegister(uint8(d.Address), REG_CALI, data) + err := legacy.ReadRegister(d.bus, uint8(d.Address), REG_CALI, data) if err != nil { return } @@ -207,18 +208,18 @@ func (d *Device) readData(register int, n int) ([]byte, error) { // After the measurement in FORCED mode, the sensor will return to SLEEP mode if d.Mode != MODE_NORMAL { config := uint(d.Temperature<<5) | uint(d.Pressure<<2) | uint(MODE_FORCED) - d.bus.WriteRegister(uint8(d.Address), REG_CTRL_MEAS, []byte{byte(config)}) + legacy.WriteRegister(d.bus, uint8(d.Address), REG_CTRL_MEAS, []byte{byte(config)}) } // Check STATUS register, wait if data is not available yet status := make([]byte, 1) - for d.bus.ReadRegister(uint8(d.Address), uint8(REG_STATUS), status[0:]); status[0] != 4 && status[0] != 0; d.bus.ReadRegister(uint8(d.Address), uint8(REG_STATUS), status[0:]) { + for legacy.ReadRegister(d.bus, uint8(d.Address), uint8(REG_STATUS), status[0:]); status[0] != 4 && status[0] != 0; legacy.ReadRegister(d.bus, uint8(d.Address), uint8(REG_STATUS), status[0:]) { time.Sleep(time.Millisecond) } // Read the requested register data := make([]byte, n) - err := d.bus.ReadRegister(uint8(d.Address), uint8(register), data[:]) + err := legacy.ReadRegister(d.bus, uint8(d.Address), uint8(register), data[:]) return data, err } diff --git a/bmp388/bmp388.go b/bmp388/bmp388.go index 27b5cf6..20838f7 100644 --- a/bmp388/bmp388.go +++ b/bmp388/bmp388.go @@ -4,6 +4,7 @@ import ( "errors" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) var ( @@ -240,10 +241,10 @@ func (d *Device) configurationError() bool { func (d *Device) readRegister(register byte, len int) (data []byte, err error) { data = make([]byte, len) - err = d.bus.ReadRegister(d.Address, register, data) + err = legacy.ReadRegister(d.bus, d.Address, register, data) return } func (d *Device) writeRegister(register byte, data byte) error { - return d.bus.WriteRegister(d.Address, register, []byte{data}) + return legacy.WriteRegister(d.bus, d.Address, register, []byte{data}) } diff --git a/ds1307/ds1307.go b/ds1307/ds1307.go index 1d87819..85bbd69 100644 --- a/ds1307/ds1307.go +++ b/ds1307/ds1307.go @@ -9,6 +9,7 @@ import ( "time" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) // Device wraps an I2C connection to a DS1307 device. @@ -44,7 +45,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 := d.bus.ReadRegister(d.Address, uint8(TimeDate), data) + err := legacy.ReadRegister(d.bus, d.Address, uint8(TimeDate), data) if err != nil { return time.Time{}, err } @@ -105,7 +106,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 = d.bus.ReadRegister(d.Address, d.AddressSRAM, data) + err = legacy.ReadRegister(d.bus, d.Address, d.AddressSRAM, data) if err != nil { return 0, err } @@ -124,7 +125,7 @@ func (d *Device) SetOscillatorFrequency(sqw uint8) error { // IsOscillatorRunning returns if the oscillator is running func (d *Device) IsOscillatorRunning() bool { data := []byte{0} - err := d.bus.ReadRegister(d.Address, uint8(TimeDate), data) + err := legacy.ReadRegister(d.bus, d.Address, uint8(TimeDate), data) if err != nil { return false } @@ -134,7 +135,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 := d.bus.ReadRegister(d.Address, uint8(TimeDate), data) + err := legacy.ReadRegister(d.bus, d.Address, uint8(TimeDate), data) if err != nil { return err } diff --git a/ds3231/ds3231.go b/ds3231/ds3231.go index e3b052a..4c6f119 100644 --- a/ds3231/ds3231.go +++ b/ds3231/ds3231.go @@ -8,6 +8,7 @@ import ( "time" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) type Mode uint8 @@ -37,7 +38,7 @@ func (d *Device) Configure() bool { // IsTimeValid return true/false is the time in the device is valid func (d *Device) IsTimeValid() bool { data := []byte{0} - err := d.bus.ReadRegister(uint8(d.Address), REG_STATUS, data) + err := legacy.ReadRegister(d.bus, uint8(d.Address), REG_STATUS, data) if err != nil { return false } @@ -47,7 +48,7 @@ func (d *Device) IsTimeValid() bool { // IsRunning returns if the oscillator is running func (d *Device) IsRunning() bool { data := []uint8{0} - err := d.bus.ReadRegister(uint8(d.Address), REG_CONTROL, data) + err := legacy.ReadRegister(d.bus, uint8(d.Address), REG_CONTROL, data) if err != nil { return false } @@ -57,7 +58,7 @@ func (d *Device) IsRunning() bool { // SetRunning starts the internal oscillator func (d *Device) SetRunning(isRunning bool) error { data := []uint8{0} - err := d.bus.ReadRegister(uint8(d.Address), REG_CONTROL, data) + err := legacy.ReadRegister(d.bus, uint8(d.Address), REG_CONTROL, data) if err != nil { return err } @@ -66,7 +67,7 @@ func (d *Device) SetRunning(isRunning bool) error { } else { data[0] |= 1 << EOSC } - err = d.bus.WriteRegister(uint8(d.Address), REG_CONTROL, data) + err = legacy.WriteRegister(d.bus, uint8(d.Address), REG_CONTROL, data) if err != nil { return err } @@ -86,12 +87,12 @@ func (d *Device) SetRunning(isRunning bool) error { // instead of 2100-03-01. func (d *Device) SetTime(dt time.Time) error { data := []byte{0} - err := d.bus.ReadRegister(uint8(d.Address), REG_STATUS, data) + err := legacy.ReadRegister(d.bus, uint8(d.Address), REG_STATUS, data) if err != nil { return err } data[0] &^= 1 << OSF - err = d.bus.WriteRegister(uint8(d.Address), REG_STATUS, data) + err = legacy.WriteRegister(d.bus, uint8(d.Address), REG_STATUS, data) if err != nil { return err } @@ -117,7 +118,7 @@ func (d *Device) SetTime(dt time.Time) error { data[5] = uint8ToBCD(uint8(dt.Month()) | centuryFlag) data[6] = uint8ToBCD(year) - err = d.bus.WriteRegister(uint8(d.Address), REG_TIMEDATE, data) + err = legacy.WriteRegister(d.bus, uint8(d.Address), REG_TIMEDATE, data) if err != nil { return err } @@ -128,7 +129,7 @@ func (d *Device) SetTime(dt time.Time) error { // ReadTime returns the date and time func (d *Device) ReadTime() (dt time.Time, err error) { data := make([]uint8, 7) - err = d.bus.ReadRegister(uint8(d.Address), REG_TIMEDATE, data) + err = legacy.ReadRegister(d.bus, uint8(d.Address), REG_TIMEDATE, data) if err != nil { return } @@ -150,7 +151,7 @@ func (d *Device) ReadTime() (dt time.Time, err error) { // ReadTemperature returns the temperature in millicelsius (mC) func (d *Device) ReadTemperature() (int32, error) { data := make([]uint8, 2) - err := d.bus.ReadRegister(uint8(d.Address), REG_TEMP, data) + err := legacy.ReadRegister(d.bus, uint8(d.Address), REG_TEMP, data) if err != nil { return 0, err } diff --git a/ft6336/ft6336.go b/ft6336/ft6336.go index c959d05..e6eb2c6 100644 --- a/ft6336/ft6336.go +++ b/ft6336/ft6336.go @@ -8,6 +8,7 @@ import ( "machine" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" "tinygo.org/x/drivers/touch" ) @@ -98,10 +99,10 @@ func (d *Device) Touched() bool { } func (d *Device) write1Byte(reg, data uint8) { - d.bus.WriteRegister(d.Address, reg, []byte{data}) + legacy.WriteRegister(d.bus, d.Address, reg, []byte{data}) } func (d *Device) read8bit(reg uint8) uint8 { - d.bus.ReadRegister(d.Address, reg, d.buf[:1]) + legacy.ReadRegister(d.bus, d.Address, reg, d.buf[:1]) return d.buf[0] } diff --git a/hts221/hts221.go b/hts221/hts221.go index 322947c..dc31344 100644 --- a/hts221/hts221.go +++ b/hts221/hts221.go @@ -8,6 +8,7 @@ import ( "errors" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) // Device wraps an I2C connection to a HTS221 device. @@ -32,7 +33,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} - d.bus.ReadRegister(d.Address, HTS221_WHO_AM_I_REG, data) + legacy.ReadRegister(d.bus, d.Address, HTS221_WHO_AM_I_REG, data) return data[0] == 0xBC } @@ -42,7 +43,7 @@ func (d *Device) Power(status bool) { if status { data[0] = 0x84 } - d.bus.WriteRegister(d.Address, HTS221_CTRL1_REG, data) + legacy.WriteRegister(d.bus, d.Address, HTS221_CTRL1_REG, data) } // ReadHumidity returns the relative humidity in percent * 100. @@ -55,8 +56,8 @@ func (d *Device) ReadHumidity() (humidity int32, err error) { // read data and calibrate data := []byte{0, 0} - d.bus.ReadRegister(d.Address, HTS221_HUMID_OUT_REG, data[:1]) - d.bus.ReadRegister(d.Address, HTS221_HUMID_OUT_REG+1, data[1:]) + legacy.ReadRegister(d.bus, d.Address, HTS221_HUMID_OUT_REG, data[:1]) + legacy.ReadRegister(d.bus, d.Address, HTS221_HUMID_OUT_REG+1, data[1:]) hValue := readInt(data[1], data[0]) hValueCalib := float32(hValue)*d.humiditySlope + d.humidityZero @@ -73,8 +74,8 @@ func (d *Device) ReadTemperature() (temperature int32, err error) { // read data and calibrate data := []byte{0, 0} - d.bus.ReadRegister(d.Address, HTS221_TEMP_OUT_REG, data[:1]) - d.bus.ReadRegister(d.Address, HTS221_TEMP_OUT_REG+1, data[1:]) + legacy.ReadRegister(d.bus, d.Address, HTS221_TEMP_OUT_REG, data[:1]) + legacy.ReadRegister(d.bus, d.Address, HTS221_TEMP_OUT_REG+1, data[1:]) tValue := readInt(data[1], data[0]) tValueCalib := float32(tValue)*d.temperatureSlope + d.temperatureZero @@ -91,7 +92,7 @@ func (d *Device) Resolution(h uint8, t uint8) { if t > 7 { t = 3 // default } - d.bus.WriteRegister(d.Address, HTS221_AV_CONF_REG, []byte{h<<3 | t}) + legacy.WriteRegister(d.bus, d.Address, HTS221_AV_CONF_REG, []byte{h<<3 | t}) } // private functions @@ -104,19 +105,19 @@ func (d *Device) calibration() { h0t0Out, h1t0Out := []byte{0, 0}, []byte{0, 0} t0Out, t1Out := []byte{0, 0}, []byte{0, 0} - d.bus.ReadRegister(d.Address, HTS221_H0_rH_x2_REG, h0rH) - d.bus.ReadRegister(d.Address, HTS221_H1_rH_x2_REG, h1rH) - d.bus.ReadRegister(d.Address, HTS221_T0_degC_x8_REG, t0degC) - d.bus.ReadRegister(d.Address, HTS221_T1_degC_x8_REG, t1degC) - d.bus.ReadRegister(d.Address, HTS221_T1_T0_MSB_REG, t1t0msb) - d.bus.ReadRegister(d.Address, HTS221_H0_T0_OUT_REG, h0t0Out[:1]) - d.bus.ReadRegister(d.Address, HTS221_H0_T0_OUT_REG+1, h0t0Out[1:]) - d.bus.ReadRegister(d.Address, HTS221_H1_T0_OUT_REG, h1t0Out[:1]) - d.bus.ReadRegister(d.Address, HTS221_H1_T0_OUT_REG+1, h1t0Out[1:]) - d.bus.ReadRegister(d.Address, HTS221_T0_OUT_REG, t0Out[:1]) - d.bus.ReadRegister(d.Address, HTS221_T0_OUT_REG+1, t0Out[1:]) - d.bus.ReadRegister(d.Address, HTS221_T1_OUT_REG, t1Out[:1]) - d.bus.ReadRegister(d.Address, HTS221_T1_OUT_REG+1, t1Out[1:]) + legacy.ReadRegister(d.bus, d.Address, HTS221_H0_rH_x2_REG, h0rH) + legacy.ReadRegister(d.bus, d.Address, HTS221_H1_rH_x2_REG, h1rH) + legacy.ReadRegister(d.bus, d.Address, HTS221_T0_degC_x8_REG, t0degC) + legacy.ReadRegister(d.bus, d.Address, HTS221_T1_degC_x8_REG, t1degC) + legacy.ReadRegister(d.bus, d.Address, HTS221_T1_T0_MSB_REG, t1t0msb) + legacy.ReadRegister(d.bus, d.Address, HTS221_H0_T0_OUT_REG, h0t0Out[:1]) + legacy.ReadRegister(d.bus, d.Address, HTS221_H0_T0_OUT_REG+1, h0t0Out[1:]) + legacy.ReadRegister(d.bus, d.Address, HTS221_H1_T0_OUT_REG, h1t0Out[:1]) + legacy.ReadRegister(d.bus, d.Address, HTS221_H1_T0_OUT_REG+1, h1t0Out[1:]) + legacy.ReadRegister(d.bus, d.Address, HTS221_T0_OUT_REG, t0Out[:1]) + legacy.ReadRegister(d.bus, d.Address, HTS221_T0_OUT_REG+1, t0Out[1:]) + legacy.ReadRegister(d.bus, d.Address, HTS221_T1_OUT_REG, t1Out[:1]) + legacy.ReadRegister(d.bus, d.Address, HTS221_T1_OUT_REG+1, t1Out[1:]) h0rH_v := float32(h0rH[0]) / 2.0 h1rH_v := float32(h1rH[0]) / 2.0 @@ -138,7 +139,7 @@ func (d *Device) waitForOneShot(filter uint8) error { data := []byte{0} // check if the device is on - d.bus.ReadRegister(d.Address, HTS221_CTRL1_REG, data) + legacy.ReadRegister(d.bus, d.Address, HTS221_CTRL1_REG, data) if data[0]&0x80 == 0 { return errors.New("device is off, unable to query") } @@ -146,19 +147,19 @@ func (d *Device) waitForOneShot(filter uint8) error { // wait until one shot (one conversion) is ready to go data[0] = 1 for { - d.bus.ReadRegister(d.Address, HTS221_CTRL2_REG, data) + legacy.ReadRegister(d.bus, d.Address, HTS221_CTRL2_REG, data) if data[0]&0x01 == 0 { break } } // trigger one shot - d.bus.WriteRegister(d.Address, HTS221_CTRL2_REG, []byte{0x01}) + legacy.WriteRegister(d.bus, d.Address, HTS221_CTRL2_REG, []byte{0x01}) // wait until conversion completed data[0] = 0 for { - d.bus.ReadRegister(d.Address, HTS221_STATUS_REG, data) + legacy.ReadRegister(d.bus, d.Address, HTS221_STATUS_REG, data) if data[0]&filter == filter { break } diff --git a/i2c.go b/i2c.go index 27bc27d..42600f0 100644 --- a/i2c.go +++ b/i2c.go @@ -3,7 +3,7 @@ package drivers // I2C represents an I2C bus. It is notably implemented by the // machine.I2C type. type I2C interface { - ReadRegister(addr uint8, r uint8, buf []byte) error - WriteRegister(addr uint8, r uint8, buf []byte) error + // ReadRegister(addr uint8, r uint8, buf []byte) error + // WriteRegister(addr uint8, r uint8, buf []byte) error Tx(addr uint16, w, r []byte) error } diff --git a/ina260/ina260.go b/ina260/ina260.go index f6bae44..b60ff24 100644 --- a/ina260/ina260.go +++ b/ina260/ina260.go @@ -1,6 +1,9 @@ package ina260 -import "tinygo.org/x/drivers" +import ( + "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" +) // Device wraps an I2C connection to an INA260 device. type Device struct { @@ -97,7 +100,7 @@ func (d *Device) Power() int32 { // Read a register func (d *Device) ReadRegister(reg uint8) uint16 { data := []byte{0, 0} - d.bus.ReadRegister(uint8(d.Address), reg, data) + legacy.ReadRegister(d.bus, uint8(d.Address), reg, data) return (uint16(data[0]) << 8) | uint16(data[1]) } @@ -107,5 +110,5 @@ func (d *Device) WriteRegister(reg uint8, v uint16) { data[0] = byte(v >> 8) data[1] = byte(v & 0xff) - d.bus.WriteRegister(uint8(d.Address), reg, data) + legacy.WriteRegister(d.bus, uint8(d.Address), reg, data) } diff --git a/internal/legacy/i2clegacy.go b/internal/legacy/i2clegacy.go new file mode 100644 index 0000000..284343c --- /dev/null +++ b/internal/legacy/i2clegacy.go @@ -0,0 +1,15 @@ +package legacy + +import "tinygo.org/x/drivers" + +type I2C struct { + i2c drivers.I2C +} + +func ReadRegister(i2c drivers.I2C, addr uint8, reg uint8, buf []byte) error { + return i2c.Tx(uint16(addr), []byte{reg}, buf) +} + +func WriteRegister(i2c drivers.I2C, addr uint8, reg uint8, buf []byte) error { + return i2c.Tx(uint16(addr), append([]byte{reg}, buf...), nil) +} diff --git a/is31fl3731/is31fl3731.go b/is31fl3731/is31fl3731.go index 8650073..0803735 100644 --- a/is31fl3731/is31fl3731.go +++ b/is31fl3731/is31fl3731.go @@ -20,6 +20,7 @@ import ( "time" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) // Device implements TinyGo driver for Lumissil IS31FL3731 matrix LED driver @@ -92,7 +93,7 @@ func (d *Device) Configure() (err error) { func (d *Device) selectCommand(command uint8) (err error) { if command != d.selectedCommand { d.selectedCommand = command - return d.bus.WriteRegister(d.Address, COMMAND, []byte{command}) + return legacy.WriteRegister(d.bus, d.Address, COMMAND, []byte{command}) } return nil @@ -105,7 +106,7 @@ func (d *Device) writeFunctionRegister(operation uint8, data []byte) (err error) return err } - return d.bus.WriteRegister(d.Address, operation, data) + return legacy.WriteRegister(d.bus, d.Address, operation, data) } // enableLEDs enables only LEDs that are soldered on the set board. Enabled @@ -119,7 +120,7 @@ func (d *Device) enableLEDs() (err error) { // Enable every LED (16 columns x 9 rows) for i := uint8(0); i < 16; i++ { - err = d.bus.WriteRegister(d.Address, i, []byte{0xFF}) + err = legacy.WriteRegister(d.bus, d.Address, i, []byte{0xFF}) if err != nil { return err } @@ -136,7 +137,7 @@ func (d *Device) setPixelPWD(frame, n, value uint8) (err error) { return err } - return d.bus.WriteRegister(d.Address, LED_PWM_OFFSET+n, []byte{value}) + return legacy.WriteRegister(d.bus, d.Address, LED_PWM_OFFSET+n, []byte{value}) } // SetActiveFrame sets frame to display with LEDs @@ -165,7 +166,7 @@ func (d *Device) Fill(frame, value uint8) (err error) { } for i := uint8(0); i < 6; i++ { - err = d.bus.WriteRegister(d.Address, LED_PWM_OFFSET+i*24, data) + err = legacy.WriteRegister(d.bus, d.Address, LED_PWM_OFFSET+i*24, data) if err != nil { return err } diff --git a/is31fl3731/is31fl3731_acw15x7.go b/is31fl3731/is31fl3731_acw15x7.go index 6342b69..1297f8c 100644 --- a/is31fl3731/is31fl3731_acw15x7.go +++ b/is31fl3731/is31fl3731_acw15x7.go @@ -4,6 +4,7 @@ import ( "fmt" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) // DeviceAdafruitCharlieWing15x7 implements TinyGo driver for Lumissil @@ -47,20 +48,20 @@ func (d *DeviceAdafruitCharlieWing15x7) enableLEDs() (err error) { // Enable left half for i := uint8(0); i < 16; i += 2 { - err = d.bus.WriteRegister(d.Address, i, []byte{0b11111110}) + err = legacy.WriteRegister(d.bus, d.Address, i, []byte{0b11111110}) if err != nil { return err } } // Enable right half for i := uint8(3); i < 16; i += 2 { - err = d.bus.WriteRegister(d.Address, i, []byte{0b01111111}) + err = legacy.WriteRegister(d.bus, d.Address, i, []byte{0b01111111}) if err != nil { return err } } // Disable invisible column on the right side - err = d.bus.WriteRegister(d.Address, 1, []byte{0b00000000}) + err = legacy.WriteRegister(d.bus, d.Address, 1, []byte{0b00000000}) if err != nil { return err } diff --git a/l3gd20/i2c.go b/l3gd20/i2c.go index 0511ede..ba6ecdd 100644 --- a/l3gd20/i2c.go +++ b/l3gd20/i2c.go @@ -5,6 +5,7 @@ import ( "time" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) const ( @@ -87,15 +88,15 @@ func (d *DevI2C) Configure(cfg Config) error { } func (d *DevI2C) Update() error { - err := d.bus.ReadRegister(d.addr, OUT_X_L, d.databuf[:2]) + err := legacy.ReadRegister(d.bus, d.addr, OUT_X_L, d.databuf[:2]) if err != nil { return err } - err = d.bus.ReadRegister(d.addr, OUT_Y_L, d.databuf[2:4]) + err = legacy.ReadRegister(d.bus, d.addr, OUT_Y_L, d.databuf[2:4]) if err != nil { return err } - err = d.bus.ReadRegister(d.addr, OUT_Z_L, d.databuf[4:6]) + err = legacy.ReadRegister(d.bus, d.addr, OUT_Z_L, d.databuf[4:6]) if err != nil { return err } @@ -131,11 +132,11 @@ func (d *DevI2C) AngularVelocity() (x, y, z int32) { // func (d DevI2C) Update(measurement) func (d DevI2C) read8(reg uint8) (byte, error) { - err := d.bus.ReadRegister(d.addr, reg, d.buf[:1]) + err := legacy.ReadRegister(d.bus, d.addr, reg, d.buf[:1]) return d.buf[0], err } func (d DevI2C) write8(reg uint8, val byte) error { d.buf[0] = val - return d.bus.WriteRegister(d.addr, reg, d.buf[:1]) + return legacy.WriteRegister(d.bus, d.addr, reg, d.buf[:1]) } diff --git a/lis2mdl/lis2mdl.go b/lis2mdl/lis2mdl.go index 437eedb..53b6818 100644 --- a/lis2mdl/lis2mdl.go +++ b/lis2mdl/lis2mdl.go @@ -9,6 +9,7 @@ import ( "time" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) // Device wraps an I2C connection to a LIS2MDL device. @@ -38,7 +39,7 @@ func New(bus drivers.I2C) Device { // Connected returns whether LIS2MDL sensor has been found. func (d *Device) Connected() bool { data := []byte{0} - d.bus.ReadRegister(uint8(d.Address), WHO_AM_I, data) + legacy.ReadRegister(d.bus, uint8(d.Address), WHO_AM_I, data) return data[0] == 0x40 } @@ -66,25 +67,25 @@ func (d *Device) Configure(cfg Configuration) { // reset cmd[0] = byte(1 << 5) - d.bus.WriteRegister(uint8(d.Address), CFG_REG_A, cmd) + legacy.WriteRegister(d.bus, uint8(d.Address), CFG_REG_A, cmd) time.Sleep(100 * time.Millisecond) // reboot cmd[0] = byte(1 << 6) - d.bus.WriteRegister(uint8(d.Address), CFG_REG_A, cmd) + legacy.WriteRegister(d.bus, uint8(d.Address), CFG_REG_A, cmd) time.Sleep(100 * time.Millisecond) // bdu cmd[0] = byte(1 << 4) - d.bus.WriteRegister(uint8(d.Address), CFG_REG_C, cmd) + legacy.WriteRegister(d.bus, uint8(d.Address), CFG_REG_C, cmd) // Temperature compensation is on for magnetic sensor (0x80) cmd[0] = byte(0x80) - d.bus.WriteRegister(uint8(d.Address), CFG_REG_A, cmd) + legacy.WriteRegister(d.bus, uint8(d.Address), CFG_REG_A, cmd) // speed cmd[0] = byte(0x80 | d.DataRate) - d.bus.WriteRegister(uint8(d.Address), CFG_REG_A, cmd) + legacy.WriteRegister(d.bus, uint8(d.Address), CFG_REG_A, cmd) } // ReadMagneticField reads the current magnetic field from the device and returns @@ -93,11 +94,11 @@ func (d *Device) ReadMagneticField() (x int32, y int32, z int32) { // turn back on read mode, even though it is supposed to be continuous? cmd := []byte{0} cmd[0] = byte(0x80 | d.PowerMode<<4 | d.DataRate<<2 | d.SystemMode) - d.bus.WriteRegister(uint8(d.Address), CFG_REG_A, cmd) + legacy.WriteRegister(d.bus, uint8(d.Address), CFG_REG_A, cmd) time.Sleep(10 * time.Millisecond) data := make([]byte, 6) - d.bus.ReadRegister(uint8(d.Address), OUTX_L_REG, data) + legacy.ReadRegister(d.bus, uint8(d.Address), OUTX_L_REG, data) x = int32(int16((uint16(data[0]) << 8) | uint16(data[1]))) y = int32(int16((uint16(data[2]) << 8) | uint16(data[3]))) diff --git a/lis3dh/lis3dh.go b/lis3dh/lis3dh.go index 0e49f5e..67f3200 100644 --- a/lis3dh/lis3dh.go +++ b/lis3dh/lis3dh.go @@ -3,7 +3,10 @@ // Datasheet: https://www.st.com/resource/en/datasheet/lis3dh.pdf package lis3dh // import "tinygo.org/x/drivers/lis3dh" -import "tinygo.org/x/drivers" +import ( + "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" +) // Device wraps an I2C connection to a LIS3DH device. type Device struct { @@ -22,13 +25,13 @@ func New(bus drivers.I2C) Device { // Configure sets up the device for communication func (d *Device) Configure() { // enable all axes, normal mode - d.bus.WriteRegister(uint8(d.Address), REG_CTRL1, []byte{0x07}) + legacy.WriteRegister(d.bus, uint8(d.Address), REG_CTRL1, []byte{0x07}) // 400Hz rate d.SetDataRate(DATARATE_400_HZ) // High res & BDU enabled - d.bus.WriteRegister(uint8(d.Address), REG_CTRL4, []byte{0x88}) + legacy.WriteRegister(d.bus, uint8(d.Address), REG_CTRL4, []byte{0x88}) // get current range d.r = d.ReadRange() @@ -38,7 +41,7 @@ func (d *Device) Configure() { // It does a "who am I" request and checks the response. func (d *Device) Connected() bool { data := []byte{0} - err := d.bus.ReadRegister(uint8(d.Address), WHO_AM_I, data) + err := legacy.ReadRegister(d.bus, uint8(d.Address), WHO_AM_I, data) if err != nil { return false } @@ -48,27 +51,27 @@ func (d *Device) Connected() bool { // SetDataRate sets the speed of data collected by the LIS3DH. func (d *Device) SetDataRate(rate DataRate) { ctl1 := []byte{0} - err := d.bus.ReadRegister(uint8(d.Address), REG_CTRL1, ctl1) + err := legacy.ReadRegister(d.bus, uint8(d.Address), REG_CTRL1, ctl1) if err != nil { println(err.Error()) } // mask off bits ctl1[0] &^= 0xf0 ctl1[0] |= (byte(rate) << 4) - d.bus.WriteRegister(uint8(d.Address), REG_CTRL1, ctl1) + legacy.WriteRegister(d.bus, uint8(d.Address), REG_CTRL1, ctl1) } // SetRange sets the G range for LIS3DH. func (d *Device) SetRange(r Range) { ctl := []byte{0} - err := d.bus.ReadRegister(uint8(d.Address), REG_CTRL4, ctl) + err := legacy.ReadRegister(d.bus, uint8(d.Address), REG_CTRL4, ctl) if err != nil { println(err.Error()) } // mask off bits ctl[0] &^= 0x30 ctl[0] |= (byte(r) << 4) - d.bus.WriteRegister(uint8(d.Address), REG_CTRL4, ctl) + legacy.WriteRegister(d.bus, uint8(d.Address), REG_CTRL4, ctl) // store the new range d.r = r @@ -77,7 +80,7 @@ func (d *Device) SetRange(r Range) { // ReadRange returns the current G range for LIS3DH. func (d *Device) ReadRange() (r Range) { ctl := []byte{0} - err := d.bus.ReadRegister(uint8(d.Address), REG_CTRL4, ctl) + err := legacy.ReadRegister(d.bus, uint8(d.Address), REG_CTRL4, ctl) if err != nil { println(err.Error()) } @@ -111,7 +114,7 @@ func (d *Device) ReadAcceleration() (int32, int32, int32, error) { // ReadRawAcceleration returns the raw x, y and z axis from the LIS3DH func (d *Device) ReadRawAcceleration() (x int16, y int16, z int16) { - d.bus.WriteRegister(uint8(d.Address), REG_OUT_X_L|0x80, nil) + legacy.WriteRegister(d.bus, uint8(d.Address), REG_OUT_X_L|0x80, nil) data := []byte{0, 0, 0, 0, 0, 0} d.bus.Tx(d.Address, nil, data) diff --git a/lps22hb/lps22hb.go b/lps22hb/lps22hb.go index 4a1b6b4..590681e 100644 --- a/lps22hb/lps22hb.go +++ b/lps22hb/lps22hb.go @@ -5,6 +5,7 @@ package lps22hb import ( "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) // Device wraps an I2C connection to a HTS221 device. @@ -27,9 +28,9 @@ func (d *Device) ReadPressure() (pressure int32, err error) { // read data data := []byte{0, 0, 0} - d.bus.ReadRegister(d.Address, LPS22HB_PRESS_OUT_REG, data[:1]) - d.bus.ReadRegister(d.Address, LPS22HB_PRESS_OUT_REG+1, data[1:2]) - d.bus.ReadRegister(d.Address, LPS22HB_PRESS_OUT_REG+2, data[2:]) + legacy.ReadRegister(d.bus, d.Address, LPS22HB_PRESS_OUT_REG, data[:1]) + legacy.ReadRegister(d.bus, d.Address, LPS22HB_PRESS_OUT_REG+1, data[1:2]) + legacy.ReadRegister(d.bus, d.Address, LPS22HB_PRESS_OUT_REG+2, data[2:]) pValue := float32(uint32(data[2])<<16|uint32(data[1])<<8|uint32(data[0])) / 4096.0 return int32(pValue * 1000), nil @@ -39,7 +40,7 @@ func (d *Device) ReadPressure() (pressure int32, err error) { // It does a "who am I" request and checks the response. func (d *Device) Connected() bool { data := []byte{0} - d.bus.ReadRegister(d.Address, LPS22HB_WHO_AM_I_REG, data) + legacy.ReadRegister(d.bus, d.Address, LPS22HB_WHO_AM_I_REG, data) return data[0] == 0xB1 } @@ -49,8 +50,8 @@ func (d *Device) ReadTemperature() (temperature int32, err error) { // read data data := []byte{0, 0} - d.bus.ReadRegister(d.Address, LPS22HB_TEMP_OUT_REG, data[:1]) - d.bus.ReadRegister(d.Address, LPS22HB_TEMP_OUT_REG+1, data[1:]) + legacy.ReadRegister(d.bus, d.Address, LPS22HB_TEMP_OUT_REG, data[:1]) + legacy.ReadRegister(d.bus, d.Address, LPS22HB_TEMP_OUT_REG+1, data[1:]) tValue := float32(int16(uint16(data[1])<<8|uint16(data[0]))) / 100.0 return int32(tValue * 1000), nil @@ -61,12 +62,12 @@ func (d *Device) ReadTemperature() (temperature int32, err error) { // wait and trigger one shot in block update func (d *Device) waitForOneShot() { // trigger one shot - d.bus.WriteRegister(d.Address, LPS22HB_CTRL2_REG, []byte{0x01}) + legacy.WriteRegister(d.bus, d.Address, LPS22HB_CTRL2_REG, []byte{0x01}) // wait until one shot is cleared data := []byte{1} for { - d.bus.ReadRegister(d.Address, LPS22HB_CTRL2_REG, data) + legacy.ReadRegister(d.bus, d.Address, LPS22HB_CTRL2_REG, data) if data[0]&0x01 == 0 { break } diff --git a/lps22hb/lps22hb_generic.go b/lps22hb/lps22hb_generic.go index 736fe78..4ebd6fb 100644 --- a/lps22hb/lps22hb_generic.go +++ b/lps22hb/lps22hb_generic.go @@ -2,10 +2,10 @@ package lps22hb -import "tinygo.org/x/drivers" +import "tinygo.org/x/drivers/internal/legacy" // Configure sets up the LPS22HB device for communication. func (d *Device) Configure() { // set to block update mode - d.bus.WriteRegister(d.Address, LPS22HB_CTRL1_REG, []byte{0x02}) + legacy.WriteRegister(d.bus, d.Address, LPS22HB_CTRL1_REG, []byte{0x02}) } diff --git a/lps22hb/lps22hb_nano_33_ble.go b/lps22hb/lps22hb_nano_33_ble.go index 29996ff..ecc406c 100644 --- a/lps22hb/lps22hb_nano_33_ble.go +++ b/lps22hb/lps22hb_nano_33_ble.go @@ -18,5 +18,5 @@ func (d *Device) Configure() { time.Sleep(10 * time.Millisecond) // set to block update mode - d.bus.WriteRegister(d.Address, LPS22HB_CTRL1_REG, []byte{0x02}) + legacy.WriteRegister(d.bus, d.Address, LPS22HB_CTRL1_REG, []byte{0x02}) } diff --git a/lsm303agr/lsm303agr.go b/lsm303agr/lsm303agr.go index 55cd9bd..35a4c92 100644 --- a/lsm303agr/lsm303agr.go +++ b/lsm303agr/lsm303agr.go @@ -9,6 +9,7 @@ import ( "math" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) // Device wraps an I2C connection to a LSM303AGR device. @@ -52,8 +53,8 @@ func New(bus drivers.I2C) *Device { // It does two "who am I" requests and checks the responses. func (d *Device) Connected() bool { data1, data2 := []byte{0}, []byte{0} - d.bus.ReadRegister(uint8(d.AccelAddress), ACCEL_WHO_AM_I, data1) - d.bus.ReadRegister(uint8(d.MagAddress), MAG_WHO_AM_I, data2) + legacy.ReadRegister(d.bus, uint8(d.AccelAddress), ACCEL_WHO_AM_I, data1) + legacy.ReadRegister(d.bus, uint8(d.MagAddress), MAG_WHO_AM_I, data2) return data1[0] == 0x33 && data2[0] == 0x40 } @@ -104,26 +105,26 @@ func (d *Device) Configure(cfg Configuration) (err error) { data := d.buf[:1] data[0] = byte(d.AccelDataRate<<4 | d.AccelPowerMode | 0x07) - err = d.bus.WriteRegister(uint8(d.AccelAddress), ACCEL_CTRL_REG1_A, data) + err = legacy.WriteRegister(d.bus, uint8(d.AccelAddress), ACCEL_CTRL_REG1_A, data) if err != nil { return } data[0] = byte(0x80 | d.AccelRange<<4) - err = d.bus.WriteRegister(uint8(d.AccelAddress), ACCEL_CTRL_REG4_A, data) + err = legacy.WriteRegister(d.bus, uint8(d.AccelAddress), ACCEL_CTRL_REG4_A, data) if err != nil { return } data[0] = byte(0xC0) - err = d.bus.WriteRegister(uint8(d.AccelAddress), TEMP_CFG_REG_A, data) + err = legacy.WriteRegister(d.bus, uint8(d.AccelAddress), TEMP_CFG_REG_A, data) if err != nil { return } // Temperature compensation is on for magnetic sensor data[0] = byte(0x80 | d.MagPowerMode<<4 | d.MagDataRate<<2 | d.MagSystemMode) - err = d.bus.WriteRegister(uint8(d.MagAddress), MAG_MR_REG_M, data) + err = legacy.WriteRegister(d.bus, uint8(d.MagAddress), MAG_MR_REG_M, data) if err != nil { return } @@ -137,7 +138,7 @@ func (d *Device) Configure(cfg Configuration) (err error) { // -1000000. func (d *Device) ReadAcceleration() (x, y, z int32, err error) { data := d.buf[:6] - err = d.bus.ReadRegister(uint8(d.AccelAddress), ACCEL_OUT_AUTO_INC, data) + err = legacy.ReadRegister(d.bus, uint8(d.AccelAddress), ACCEL_OUT_AUTO_INC, data) if err != nil { return } @@ -183,14 +184,14 @@ func (d *Device) ReadMagneticField() (x, y, z int32, err error) { if d.MagSystemMode == MAG_SYSTEM_SINGLE { cmd := d.buf[:1] cmd[0] = byte(0x80 | d.MagPowerMode<<4 | d.MagDataRate<<2 | d.MagSystemMode) - err = d.bus.WriteRegister(uint8(d.MagAddress), MAG_MR_REG_M, cmd) + err = legacy.WriteRegister(d.bus, uint8(d.MagAddress), MAG_MR_REG_M, cmd) if err != nil { return } } data := d.buf[0:6] - d.bus.ReadRegister(uint8(d.MagAddress), MAG_OUT_AUTO_INC, data) + legacy.ReadRegister(d.bus, uint8(d.MagAddress), MAG_OUT_AUTO_INC, data) x = int32(int16((uint16(data[1])<<8 | uint16(data[0])))) y = int32(int16((uint16(data[3])<<8 | uint16(data[2])))) @@ -219,7 +220,7 @@ func (d *Device) ReadCompass() (h int32, err error) { func (d *Device) ReadTemperature() (t int32, err error) { data := d.buf[:2] - err = d.bus.ReadRegister(uint8(d.AccelAddress), OUT_TEMP_AUTO_INC, data) + err = legacy.ReadRegister(d.bus, uint8(d.AccelAddress), OUT_TEMP_AUTO_INC, data) if err != nil { return } diff --git a/lsm6ds3/lsm6ds3.go b/lsm6ds3/lsm6ds3.go index 29ebd9d..6fcee07 100644 --- a/lsm6ds3/lsm6ds3.go +++ b/lsm6ds3/lsm6ds3.go @@ -8,6 +8,7 @@ import ( "errors" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) type AccelRange uint8 @@ -95,7 +96,7 @@ func (d *Device) Configure(cfg Configuration) (err error) { if cfg.IsPedometer { // CONFIGURE AS PEDOMETER // Configure accelerometer: 2G + 26Hz data[0] = uint8(ACCEL_2G) | uint8(ACCEL_SR_26) - err = d.bus.WriteRegister(uint8(d.Address), CTRL1_XL, data) + err = legacy.WriteRegister(d.bus, uint8(d.Address), CTRL1_XL, data) if err != nil { return } @@ -105,40 +106,40 @@ func (d *Device) Configure(cfg Configuration) (err error) { if cfg.ResetStepCounter { data[0] |= 0x02 } - err = d.bus.WriteRegister(uint8(d.Address), CTRL10_C, data) + err = legacy.WriteRegister(d.bus, uint8(d.Address), CTRL10_C, data) if err != nil { return } // Enable pedometer data[0] = 0x40 - err = d.bus.WriteRegister(uint8(d.Address), TAP_CFG, data) + err = legacy.WriteRegister(d.bus, uint8(d.Address), TAP_CFG, data) if err != nil { return } } else { // NORMAL USE // Configure accelerometer data[0] = uint8(d.accelRange) | uint8(d.accelSampleRate) | uint8(d.accelBandWidth) - err = d.bus.WriteRegister(uint8(d.Address), CTRL1_XL, data) + err = legacy.WriteRegister(d.bus, uint8(d.Address), CTRL1_XL, data) if err != nil { return } // Set ODR bit - err = d.bus.ReadRegister(uint8(d.Address), CTRL4_C, data) + err = legacy.ReadRegister(d.bus, uint8(d.Address), CTRL4_C, data) if err != nil { return } data[0] = data[0] &^ BW_SCAL_ODR_ENABLED data[0] |= BW_SCAL_ODR_ENABLED - err = d.bus.WriteRegister(uint8(d.Address), CTRL4_C, data) + err = legacy.WriteRegister(d.bus, uint8(d.Address), CTRL4_C, data) if err != nil { return } // Configure gyroscope data[0] = uint8(d.gyroRange) | uint8(d.gyroSampleRate) - err = d.bus.WriteRegister(uint8(d.Address), CTRL2_G, data) + err = legacy.WriteRegister(d.bus, uint8(d.Address), CTRL2_G, data) if err != nil { return } @@ -151,7 +152,7 @@ func (d *Device) Configure(cfg Configuration) (err error) { // It does a "who am I" request and checks the response. func (d *Device) Connected() bool { data := d.buf[:1] - d.bus.ReadRegister(uint8(d.Address), WHO_AM_I, data) + legacy.ReadRegister(d.bus, uint8(d.Address), WHO_AM_I, data) return data[0] == 0x69 } @@ -161,7 +162,7 @@ func (d *Device) Connected() bool { // -1000000. func (d *Device) ReadAcceleration() (x, y, z int32, err error) { data := d.buf[:6] - err = d.bus.ReadRegister(uint8(d.Address), OUTX_L_XL, data) + err = legacy.ReadRegister(d.bus, uint8(d.Address), OUTX_L_XL, data) if err != nil { return } @@ -186,7 +187,7 @@ func (d *Device) ReadAcceleration() (x, y, z int32, err error) { // you would get a value close to 360000000. func (d *Device) ReadRotation() (x, y, z int32, err error) { data := d.buf[:6] - err = d.bus.ReadRegister(uint8(d.Address), OUTX_L_G, data) + err = legacy.ReadRegister(d.bus, uint8(d.Address), OUTX_L_G, data) if err != nil { return } @@ -210,7 +211,7 @@ func (d *Device) ReadRotation() (x, y, z int32, err error) { // ReadTemperature returns the temperature in celsius milli degrees (°C/1000) func (d *Device) ReadTemperature() (t int32, err error) { data := d.buf[:2] - err = d.bus.ReadRegister(uint8(d.Address), OUT_TEMP_L, data) + err = legacy.ReadRegister(d.bus, uint8(d.Address), OUT_TEMP_L, data) if err != nil { return } @@ -223,7 +224,7 @@ func (d *Device) ReadTemperature() (t int32, err error) { // ReadSteps returns the steps of the pedometer func (d *Device) ReadSteps() (s int32, err error) { data := d.buf[:2] - err = d.bus.ReadRegister(uint8(d.Address), STEP_COUNTER_L, data) + err = legacy.ReadRegister(d.bus, uint8(d.Address), STEP_COUNTER_L, data) if err != nil { return } diff --git a/lsm6ds3tr/lsm6ds3tr.go b/lsm6ds3tr/lsm6ds3tr.go index 7862e12..b8be8d8 100644 --- a/lsm6ds3tr/lsm6ds3tr.go +++ b/lsm6ds3tr/lsm6ds3tr.go @@ -8,6 +8,7 @@ import ( "errors" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) type AccelRange uint8 @@ -87,26 +88,26 @@ func (d *Device) doConfigure(cfg Configuration) (err error) { // Configure accelerometer data[0] = uint8(d.accelRange) | uint8(d.accelSampleRate) - err = d.bus.WriteRegister(uint8(d.Address), CTRL1_XL, data) + err = legacy.WriteRegister(d.bus, uint8(d.Address), CTRL1_XL, data) if err != nil { return } // Set ODR bit - err = d.bus.ReadRegister(uint8(d.Address), CTRL4_C, data) + err = legacy.ReadRegister(d.bus, uint8(d.Address), CTRL4_C, data) if err != nil { return } data[0] = data[0] &^ BW_SCAL_ODR_ENABLED data[0] |= BW_SCAL_ODR_ENABLED - err = d.bus.WriteRegister(uint8(d.Address), CTRL4_C, data) + err = legacy.WriteRegister(d.bus, uint8(d.Address), CTRL4_C, data) if err != nil { return } // Configure gyroscope data[0] = uint8(d.gyroRange) | uint8(d.gyroSampleRate) - err = d.bus.WriteRegister(uint8(d.Address), CTRL2_G, data) + err = legacy.WriteRegister(d.bus, uint8(d.Address), CTRL2_G, data) if err != nil { return } @@ -118,7 +119,7 @@ func (d *Device) doConfigure(cfg Configuration) (err error) { // It does a "who am I" request and checks the response. func (d *Device) Connected() bool { data := d.buf[:1] - d.bus.ReadRegister(uint8(d.Address), WHO_AM_I, data) + legacy.ReadRegister(d.bus, uint8(d.Address), WHO_AM_I, data) return data[0] == 0x6A } @@ -128,7 +129,7 @@ func (d *Device) Connected() bool { // -1000000. func (d *Device) ReadAcceleration() (x, y, z int32, err error) { data := d.buf[:6] - err = d.bus.ReadRegister(uint8(d.Address), OUTX_L_XL, data) + err = legacy.ReadRegister(d.bus, uint8(d.Address), OUTX_L_XL, data) if err != nil { return } @@ -153,7 +154,7 @@ func (d *Device) ReadAcceleration() (x, y, z int32, err error) { // you would get a value close to 360000000. func (d *Device) ReadRotation() (x, y, z int32, err error) { data := d.buf[:6] - err = d.bus.ReadRegister(uint8(d.Address), OUTX_L_G, data) + err = legacy.ReadRegister(d.bus, uint8(d.Address), OUTX_L_G, data) if err != nil { return } @@ -177,7 +178,7 @@ func (d *Device) ReadRotation() (x, y, z int32, err error) { // ReadTemperature returns the temperature in celsius milli degrees (°C/1000) func (d *Device) ReadTemperature() (t int32, err error) { data := d.buf[:2] - err = d.bus.ReadRegister(uint8(d.Address), OUT_TEMP_L, data) + err = legacy.ReadRegister(d.bus, uint8(d.Address), OUT_TEMP_L, data) if err != nil { return } diff --git a/lsm6dsox/lsm6dsox.go b/lsm6dsox/lsm6dsox.go index 3748bb9..180394c 100644 --- a/lsm6dsox/lsm6dsox.go +++ b/lsm6dsox/lsm6dsox.go @@ -8,6 +8,7 @@ import ( "errors" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) type AccelRange uint8 @@ -78,13 +79,13 @@ func (d *Device) Configure(cfg Configuration) (err error) { data := d.buf[:1] // Configure accelerometer data[0] = uint8(cfg.AccelRange) | uint8(cfg.AccelSampleRate) - err = d.bus.WriteRegister(uint8(d.Address), CTRL1_XL, data) + err = legacy.WriteRegister(d.bus, uint8(d.Address), CTRL1_XL, data) if err != nil { return } // Configure gyroscope data[0] = uint8(cfg.GyroRange) | uint8(cfg.GyroSampleRate) - err = d.bus.WriteRegister(uint8(d.Address), CTRL2_G, data) + err = legacy.WriteRegister(d.bus, uint8(d.Address), CTRL2_G, data) if err != nil { return } @@ -96,7 +97,7 @@ func (d *Device) Configure(cfg Configuration) (err error) { // It does a "who am I" request and checks the response. func (d *Device) Connected() bool { data := d.buf[:1] - d.bus.ReadRegister(uint8(d.Address), WHO_AM_I, data) + legacy.ReadRegister(d.bus, uint8(d.Address), WHO_AM_I, data) return data[0] == 0x6C } @@ -106,7 +107,7 @@ func (d *Device) Connected() bool { // -1000000. func (d *Device) ReadAcceleration() (x, y, z int32, err error) { data := d.buf[:6] - err = d.bus.ReadRegister(uint8(d.Address), OUTX_L_A, data) + err = legacy.ReadRegister(d.bus, uint8(d.Address), OUTX_L_A, data) if err != nil { return } @@ -122,7 +123,7 @@ func (d *Device) ReadAcceleration() (x, y, z int32, err error) { // you would get a value close to 360000000. func (d *Device) ReadRotation() (x, y, z int32, err error) { data := d.buf[:6] - err = d.bus.ReadRegister(uint8(d.Address), OUTX_L_G, data) + err = legacy.ReadRegister(d.bus, uint8(d.Address), OUTX_L_G, data) if err != nil { return } @@ -135,7 +136,7 @@ func (d *Device) ReadRotation() (x, y, z int32, err error) { // ReadTemperature returns the temperature in celsius milli degrees (°C/1000) func (d *Device) ReadTemperature() (t int32, err error) { data := d.buf[:2] - err = d.bus.ReadRegister(uint8(d.Address), OUT_TEMP_L, data) + err = legacy.ReadRegister(d.bus, uint8(d.Address), OUT_TEMP_L, data) if err != nil { return } diff --git a/lsm9ds1/lsm9ds1.go b/lsm9ds1/lsm9ds1.go index 74bb05d..e77029e 100644 --- a/lsm9ds1/lsm9ds1.go +++ b/lsm9ds1/lsm9ds1.go @@ -7,6 +7,7 @@ import ( "errors" "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" ) type AccelRange uint8 @@ -61,8 +62,8 @@ func New(bus drivers.I2C) *Device { // but "who am I" responses have unexpected values. func (d *Device) Connected() bool { data1, data2 := d.buf[:1], d.buf[1:2] - d.bus.ReadRegister(d.AccelAddress, WHO_AM_I, data1) - d.bus.ReadRegister(d.MagAddress, WHO_AM_I_M, data2) + legacy.ReadRegister(d.bus, d.AccelAddress, WHO_AM_I, data1) + legacy.ReadRegister(d.bus, d.MagAddress, WHO_AM_I_M, data2) return data1[0] == 0x68 && data2[0] == 0x3D } @@ -72,7 +73,7 @@ func (d *Device) Connected() bool { // -1000000. func (d *Device) ReadAcceleration() (x, y, z int32, err error) { data := d.buf[:6] - err = d.bus.ReadRegister(uint8(d.AccelAddress), OUT_X_L_XL, data) + err = legacy.ReadRegister(d.bus, uint8(d.AccelAddress), OUT_X_L_XL, data) if err != nil { return } @@ -88,7 +89,7 @@ func (d *Device) ReadAcceleration() (x, y, z int32, err error) { // you would get a value close to 360000000. func (d *Device) ReadRotation() (x, y, z int32, err error) { data := d.buf[:6] - err = d.bus.ReadRegister(uint8(d.AccelAddress), OUT_X_L_G, data) + err = legacy.ReadRegister(d.bus, uint8(d.AccelAddress), OUT_X_L_G, data) if err != nil { return } @@ -102,7 +103,7 @@ func (d *Device) ReadRotation() (x, y, z int32, err error) { // it in nT (nanotesla). 1 G (gauss) = 100_000 nT (nanotesla). func (d *Device) ReadMagneticField() (x, y, z int32, err error) { data := d.buf[:6] - err = d.bus.ReadRegister(uint8(d.MagAddress), OUT_X_L_M, data) + err = legacy.ReadRegister(d.bus, uint8(d.MagAddress), OUT_X_L_M, data) if err != nil { return } @@ -115,7 +116,7 @@ func (d *Device) ReadMagneticField() (x, y, z int32, err error) { // ReadTemperature returns the temperature in Celsius milli degrees (°C/1000) func (d *Device) ReadTemperature() (t int32, err error) { data := d.buf[:2] - err = d.bus.ReadRegister(uint8(d.AccelAddress), OUT_TEMP_L, data) + err = legacy.ReadRegister(d.bus, uint8(d.AccelAddress), OUT_TEMP_L, data) if err != nil { return } @@ -171,7 +172,7 @@ func (d *Device) doConfigure(cfg Configuration) (err error) { // Configure accelerometer // Sample rate & measurement range data[0] = uint8(cfg.AccelSampleRate)<<5 | uint8(cfg.AccelRange)<<3 - err = d.bus.WriteRegister(d.AccelAddress, CTRL_REG6_XL, data) + err = legacy.WriteRegister(d.bus, d.AccelAddress, CTRL_REG6_XL, data) if err != nil { return } @@ -179,7 +180,7 @@ func (d *Device) doConfigure(cfg Configuration) (err error) { // Configure gyroscope // Sample rate & measurement range data[0] = uint8(cfg.GyroSampleRate)<<5 | uint8(cfg.GyroRange)<<3 - err = d.bus.WriteRegister(d.AccelAddress, CTRL_REG1_G, data) + err = legacy.WriteRegister(d.bus, d.AccelAddress, CTRL_REG1_G, data) if err != nil { return } @@ -190,14 +191,14 @@ func (d *Device) doConfigure(cfg Configuration) (err error) { // High-performance mode XY axis // Sample rate data[0] = 0b10000000 | 0b01000000 | uint8(cfg.MagSampleRate)<<2 - err = d.bus.WriteRegister(d.MagAddress, CTRL_REG1_M, data) + err = legacy.WriteRegister(d.bus, d.MagAddress, CTRL_REG1_M, data) if err != nil { return } // Measurement range data[0] = uint8(cfg.MagRange) << 5 - err = d.bus.WriteRegister(d.MagAddress, CTRL_REG2_M, data) + err = legacy.WriteRegister(d.bus, d.MagAddress, CTRL_REG2_M, data) if err != nil { return } @@ -205,14 +206,14 @@ func (d *Device) doConfigure(cfg Configuration) (err error) { // Continuous-conversion mode // https://electronics.stackexchange.com/questions/237397/continuous-conversion-vs-single-conversion-mode data[0] = 0b00000000 - err = d.bus.WriteRegister(d.MagAddress, CTRL_REG3_M, data) + err = legacy.WriteRegister(d.bus, d.MagAddress, CTRL_REG3_M, data) if err != nil { return } // High-performance mode Z axis data[0] = 0b00001000 - err = d.bus.WriteRegister(d.MagAddress, CTRL_REG4_M, data) + err = legacy.WriteRegister(d.bus, d.MagAddress, CTRL_REG4_M, data) if err != nil { return } diff --git a/mag3110/mag3110.go b/mag3110/mag3110.go index e1ecdcd..086b066 100644 --- a/mag3110/mag3110.go +++ b/mag3110/mag3110.go @@ -4,7 +4,10 @@ // Datasheet: https://www.nxp.com/docs/en/data-sheet/MAG3110.pdf package mag3110 // import "tinygo.org/x/drivers/mag3110" -import "tinygo.org/x/drivers" +import ( + "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" +) // Device wraps an I2C connection to a MAG3110 device. type Device struct { @@ -24,22 +27,22 @@ 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} - d.bus.ReadRegister(uint8(d.Address), WHO_AM_I, data) + legacy.ReadRegister(d.bus, uint8(d.Address), WHO_AM_I, data) return data[0] == 0xC4 } // Configure sets up the device for communication. func (d Device) Configure() { - d.bus.WriteRegister(uint8(d.Address), CTRL_REG2, []uint8{0x80}) // Power down when not used + legacy.WriteRegister(d.bus, uint8(d.Address), CTRL_REG2, []uint8{0x80}) // Power down when not used } // ReadMagnetic reads the vectors of the magnetic field of the device and // returns it. func (d Device) ReadMagnetic() (x int16, y int16, z int16) { - d.bus.WriteRegister(uint8(d.Address), CTRL_REG1, []uint8{0x1a}) // Request a measurement + legacy.WriteRegister(d.bus, uint8(d.Address), CTRL_REG1, []uint8{0x1a}) // Request a measurement data := make([]byte, 6) - d.bus.ReadRegister(uint8(d.Address), OUT_X_MSB, data) + legacy.ReadRegister(d.bus, uint8(d.Address), OUT_X_MSB, data) x = int16((uint16(data[0]) << 8) | uint16(data[1])) y = int16((uint16(data[2]) << 8) | uint16(data[3])) z = int16((uint16(data[4]) << 8) | uint16(data[5])) @@ -50,6 +53,6 @@ func (d Device) ReadMagnetic() (x int16, y int16, z int16) { // celsius milli degrees (°C/1000). func (d Device) ReadTemperature() (int32, error) { data := make([]byte, 1) - d.bus.ReadRegister(uint8(d.Address), DIE_TEMP, data) + legacy.ReadRegister(d.bus, uint8(d.Address), DIE_TEMP, data) return int32(data[0]) * 1000, nil } diff --git a/mcp23017/device.go b/mcp23017/device.go index 998829e..6138c14 100644 --- a/mcp23017/device.go +++ b/mcp23017/device.go @@ -8,6 +8,8 @@ package mcp23017 import ( "errors" + + "tinygo.org/x/drivers/internal/legacy" ) const ( @@ -259,7 +261,7 @@ func (d *Device) writeRegisterAB(r register, val Pins) error { // and the fact that registers alternate between A and B // to write both ports in a single operation. buf := [2]byte{uint8(val), uint8(val >> 8)} - return d.bus.WriteRegister(d.addr, uint8(r&^portB), buf[:]) + return legacy.WriteRegister(d.bus, d.addr, uint8(r&^portB), buf[:]) } func (d *Device) readRegisterAB(r register) (Pins, error) { @@ -267,7 +269,7 @@ func (d *Device) readRegisterAB(r register) (Pins, error) { // and the fact that registers alternate between A and B // to read both ports in a single operation. var buf [2]byte - if err := d.bus.ReadRegister(d.addr, uint8(r), buf[:]); err != nil { + if err := legacy.ReadRegister(d.bus, d.addr, uint8(r), buf[:]); err != nil { return Pins(0), err } return Pins(buf[0]) | (Pins(buf[1]) << 8), nil diff --git a/mma8653/mma8653.go b/mma8653/mma8653.go index a72f2a2..3228823 100644 --- a/mma8653/mma8653.go +++ b/mma8653/mma8653.go @@ -5,7 +5,10 @@ // https://www.nxp.com/docs/en/data-sheet/MMA8653FC.pdf package mma8653 // import "tinygo.org/x/drivers/mma8653" -import "tinygo.org/x/drivers" +import ( + "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" +) // Device wraps an I2C connection to a MMA8653 device. type Device struct { @@ -26,27 +29,27 @@ 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} - d.bus.ReadRegister(uint8(d.Address), WHO_AM_I, data) + legacy.ReadRegister(d.bus, uint8(d.Address), WHO_AM_I, data) return data[0] == 0x5A } // Configure sets up the device for communication. func (d *Device) Configure(speed DataRate, sensitivity Sensitivity) error { // Set mode to STANDBY to be able to change the sensitivity. - err := d.bus.WriteRegister(uint8(d.Address), CTRL_REG1, []uint8{0}) + err := legacy.WriteRegister(d.bus, uint8(d.Address), CTRL_REG1, []uint8{0}) if err != nil { return err } // Set sensitivity (2G, 4G, 8G). - err = d.bus.WriteRegister(uint8(d.Address), XYZ_DATA_CFG, []uint8{uint8(sensitivity)}) + err = legacy.WriteRegister(d.bus, uint8(d.Address), XYZ_DATA_CFG, []uint8{uint8(sensitivity)}) if err != nil { return err } d.sensitivity = sensitivity // Set mode to ACTIVE and set the data rate. - err = d.bus.WriteRegister(uint8(d.Address), CTRL_REG1, []uint8{(uint8(speed) << 3) | 1}) + err = legacy.WriteRegister(d.bus, uint8(d.Address), CTRL_REG1, []uint8{(uint8(speed) << 3) | 1}) if err != nil { return err } @@ -59,7 +62,7 @@ func (d *Device) Configure(speed DataRate, sensitivity Sensitivity) error { // -1000000. func (d Device) ReadAcceleration() (x int32, y int32, z int32, err error) { data := make([]byte, 6) - err = d.bus.ReadRegister(uint8(d.Address), OUT_X_MSB, data) + err = legacy.ReadRegister(d.bus, uint8(d.Address), OUT_X_MSB, data) shift := uint32(8) switch d.sensitivity { case Sensitivity4G: diff --git a/mpu6050/mpu6050.go b/mpu6050/mpu6050.go index c6e945d..22c25a2 100644 --- a/mpu6050/mpu6050.go +++ b/mpu6050/mpu6050.go @@ -6,7 +6,10 @@ // https://www.invensense.com/wp-content/uploads/2015/02/MPU-6000-Register-Map1.pdf package mpu6050 // import "tinygo.org/x/drivers/mpu6050" -import "tinygo.org/x/drivers" +import ( + "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" +) // Device wraps an I2C connection to a MPU6050 device. type Device struct { @@ -26,7 +29,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} - d.bus.ReadRegister(uint8(d.Address), WHO_AM_I, data) + legacy.ReadRegister(d.bus, uint8(d.Address), WHO_AM_I, data) return data[0] == 0x68 } @@ -41,7 +44,7 @@ func (d Device) Configure() error { // -1000000. func (d Device) ReadAcceleration() (x int32, y int32, z int32) { data := make([]byte, 6) - d.bus.ReadRegister(uint8(d.Address), ACCEL_XOUT_H, data) + legacy.ReadRegister(d.bus, uint8(d.Address), ACCEL_XOUT_H, data) // Now do two things: // 1. merge the two values to a 16-bit number (and cast to a 32-bit integer) // 2. scale the value to bring it in the -1000000..1000000 range. @@ -62,7 +65,7 @@ func (d Device) ReadAcceleration() (x int32, y int32, z int32) { // you would get a value close to 360000000. func (d Device) ReadRotation() (x int32, y int32, z int32) { data := make([]byte, 6) - d.bus.ReadRegister(uint8(d.Address), GYRO_XOUT_H, data) + legacy.ReadRegister(d.bus, uint8(d.Address), GYRO_XOUT_H, data) // First the value is converted from a pair of bytes to a signed 16-bit // value and then to a signed 32-bit value to avoid integer overflow. // Then the value is scaled to µ°/s (micro-degrees per second). @@ -81,15 +84,15 @@ func (d Device) ReadRotation() (x int32, y int32, z int32) { // SetClockSource allows the user to configure the clock source. func (d Device) SetClockSource(source uint8) error { - return d.bus.WriteRegister(uint8(d.Address), PWR_MGMT_1, []uint8{source}) + return legacy.WriteRegister(d.bus, uint8(d.Address), PWR_MGMT_1, []uint8{source}) } // SetFullScaleGyroRange allows the user to configure the scale range for the gyroscope. func (d Device) SetFullScaleGyroRange(rng uint8) error { - return d.bus.WriteRegister(uint8(d.Address), GYRO_CONFIG, []uint8{rng}) + return legacy.WriteRegister(d.bus, uint8(d.Address), GYRO_CONFIG, []uint8{rng}) } // SetFullScaleAccelRange allows the user to configure the scale range for the accelerometer. func (d Device) SetFullScaleAccelRange(rng uint8) error { - return d.bus.WriteRegister(uint8(d.Address), ACCEL_CONFIG, []uint8{rng}) + return legacy.WriteRegister(d.bus, uint8(d.Address), ACCEL_CONFIG, []uint8{rng}) } diff --git a/pca9685/io.go b/pca9685/io.go index 798ae58..a8b8143 100644 --- a/pca9685/io.go +++ b/pca9685/io.go @@ -1,9 +1,11 @@ package pca9685 +import "tinygo.org/x/drivers/internal/legacy" + func (d *Dev) readReg(reg uint8, data []byte) error { - return d.bus.ReadRegister(d.addr, reg, data) + return legacy.ReadRegister(d.bus, d.addr, reg, data) } func (d *Dev) writeReg(reg uint8, data []byte) error { - return d.bus.WriteRegister(d.addr, reg, data) + return legacy.WriteRegister(d.bus, d.addr, reg, data) } diff --git a/qmi8658c/qmi8658c.go b/qmi8658c/qmi8658c.go index 2567ff3..26e62af 100644 --- a/qmi8658c/qmi8658c.go +++ b/qmi8658c/qmi8658c.go @@ -5,7 +5,10 @@ // https://www.qstcorp.com/upload/pdf/202202/%EF%BC%88%E5%B7%B2%E4%BC%A0%EF%BC%89QMI8658C%20datasheet%20rev%200.9.pdf package qmi8656c -import "tinygo.org/x/drivers" +import ( + "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" +) // Device wraps the I2C connection to the QMIC8658 sensor type Device struct { @@ -179,12 +182,12 @@ func (d *Device) ReadTemperature() (int32, error) { // Convenience method to read the register and avoid repetition. func (d *Device) ReadRegister(reg uint8, buf []byte) error { - return d.bus.ReadRegister(uint8(d.Address), reg, buf) + return legacy.ReadRegister(d.bus, uint8(d.Address), reg, buf) } // Convenience method to write the register and avoid repetition. func (d *Device) WriteRegister(reg uint8, v uint16) error { data := []byte{byte(v)} - err := d.bus.WriteRegister(uint8(d.Address), reg, data) + err := legacy.WriteRegister(d.bus, uint8(d.Address), reg, data) return err } diff --git a/tmp102/tmp102.go b/tmp102/tmp102.go index 9e6329b..5dc5543 100644 --- a/tmp102/tmp102.go +++ b/tmp102/tmp102.go @@ -4,7 +4,10 @@ package tmp102 // import "tinygo.org/x/drivers/tmp102" -import "tinygo.org/x/drivers" +import ( + "tinygo.org/x/drivers" + "tinygo.org/x/drivers/internal/legacy" +) // Device holds the already configured I2C bus and the address of the sensor. type Device struct { @@ -36,7 +39,7 @@ func (d *Device) Configure(cfg Config) { // Connected checks if the config register can be read and that the configuration is correct. func (d *Device) Connected() bool { configData := make([]byte, 2) - err := d.bus.ReadRegister(d.address, RegConfiguration, configData) + err := legacy.ReadRegister(d.bus, d.address, RegConfiguration, configData) // Check the reset configuration values. if err != nil || configData[0] != 0x60 || configData[1] != 0xA0 { return false @@ -50,7 +53,7 @@ func (d *Device) ReadTemperature() (temperature int32, err error) { tmpData := make([]byte, 2) - err = d.bus.ReadRegister(d.address, RegTemperature, tmpData) + err = legacy.ReadRegister(d.bus, d.address, RegTemperature, tmpData) if err != nil { return