Merge remote-tracking branch 'kidoman/master'

* kidoman/master:
  i2c: added debug logs
  i2c: fixed missing init call
This commit is contained in:
SjB 2014-04-09 22:53:49 -04:00
commit 0e820bad5b
1 changed files with 32 additions and 0 deletions

View File

@ -11,6 +11,7 @@ import (
"time"
"unsafe"
"github.com/golang/glog"
"github.com/kidoman/embd"
)
@ -58,6 +59,8 @@ func (b *i2cBus) init() error {
return err
}
glog.V(2).Infof("i2c: bus %v initialized", b.l)
b.initialized = true
return nil
@ -65,6 +68,7 @@ func (b *i2cBus) init() error {
func (b *i2cBus) setAddress(addr byte) error {
if addr != b.addr {
glog.V(2).Infof("i2c: setting bus %v address to %#02x", b.l, addr)
if _, _, errno := syscall.Syscall(syscall.SYS_IOCTL, b.file.Fd(), slaveCmd, uintptr(addr)); errno != 0 {
return syscall.Errno(errno)
}
@ -79,6 +83,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 +105,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 +126,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 +154,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 +207,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 +241,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 +276,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
}