Skip to content

Commit

Permalink
i2c: added ReadBytes to I2CBus
Browse files Browse the repository at this point in the history
  • Loading branch information
gavincabbage committed Aug 29, 2015
1 parent 5065e49 commit 2e6bd46
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
22 changes: 22 additions & 0 deletions host/generic/i2cbus.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,28 @@ func (b *i2cBus) ReadByte(addr byte) (byte, error) {
return bytes[0], nil
}

func (b *i2cBus) ReadBytes(addr byte, num int) ([]byte, error) {
b.mu.Lock()
defer b.mu.Unlock()

if err := b.init(); err != nil {
return []byte{0}, err
}

if err := b.setAddress(addr); err != nil {
return []byte{0}, err
}

bytes := make([]byte, num)
n, _ := b.file.Read(bytes)

if n != num {
return []byte{0}, fmt.Errorf("i2c: Unexpected number (%v) of bytes read", n)
}

return bytes, nil
}

func (b *i2cBus) WriteByte(addr, value byte) error {
b.mu.Lock()
defer b.mu.Unlock()
Expand Down
2 changes: 2 additions & 0 deletions i2c.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ package embd

// I2CBus interface is used to interact with the I2C bus.
type I2CBus interface {
// ReadByte reads a byte from the given address.
ReadBytes(addr byte, num int) (value []byte, err error)
// ReadByte reads a byte from the given address.
ReadByte(addr byte) (value byte, err error)
// WriteByte writes a byte to the given address.
Expand Down

0 comments on commit 2e6bd46

Please sign in to comment.