diff --git a/host/generic/i2cbus.go b/host/generic/i2cbus.go index 526d2db..bb5a348 100644 --- a/host/generic/i2cbus.go +++ b/host/generic/i2cbus.go @@ -79,6 +79,10 @@ func (b *i2cBus) ReadByte(addr byte) (byte, error) { b.mu.Lock() defer b.mu.Unlock() + if err := b.init(); err != nil { + return 0, err + } + if err := b.setAddress(addr); err != nil { return 0, err } @@ -97,6 +101,10 @@ func (b *i2cBus) WriteByte(addr, value byte) error { b.mu.Lock() defer b.mu.Unlock() + if err := b.init(); err != nil { + return err + } + if err := b.setAddress(addr); err != nil { return err } @@ -114,6 +122,10 @@ func (b *i2cBus) WriteBytes(addr byte, value []byte) error { b.mu.Lock() defer b.mu.Unlock() + if err := b.init(); err != nil { + return err + } + if err := b.setAddress(addr); err != nil { return err } @@ -138,6 +150,10 @@ func (b *i2cBus) ReadFromReg(addr, reg byte, value []byte) error { b.mu.Lock() defer b.mu.Unlock() + if err := b.init(); err != nil { + return err + } + if err := b.setAddress(addr); err != nil { return err } @@ -187,6 +203,10 @@ func (b *i2cBus) WriteToReg(addr, reg byte, value []byte) error { b.mu.Lock() defer b.mu.Unlock() + if err := b.init(); err != nil { + return err + } + if err := b.setAddress(addr); err != nil { return err } @@ -217,6 +237,10 @@ func (b *i2cBus) WriteByteToReg(addr, reg, value byte) error { b.mu.Lock() defer b.mu.Unlock() + if err := b.init(); err != nil { + return err + } + if err := b.setAddress(addr); err != nil { return err } @@ -248,6 +272,10 @@ func (b *i2cBus) WriteWordToReg(addr, reg byte, value uint16) error { b.mu.Lock() defer b.mu.Unlock() + if err := b.init(); err != nil { + return err + } + if err := b.setAddress(addr); err != nil { return err }