1
0
mirror of https://github.com/kidoman/embd synced 2024-12-22 12:50:19 +01:00

changed ReadBytes to get file size from stat

This commit is contained in:
Gavin Cabbage 2015-10-10 23:23:40 -04:00
parent 48c26358bd
commit 9d8285ca01
3 changed files with 12 additions and 4 deletions

View File

@ -131,7 +131,7 @@ type mockI2CBus struct {
closed bool closed bool
} }
func (bus *mockI2CBus) ReadBytes(addr byte, num int) ([]byte, error) { return []byte{0x00}, nil } func (bus *mockI2CBus) ReadBytes(addr byte) ([]byte, error) { return []byte{0x00}, nil }
func (bus *mockI2CBus) ReadByte(addr byte) (byte, error) { return 0x00, nil } func (bus *mockI2CBus) ReadByte(addr byte) (byte, error) { return 0x00, nil }
func (bus *mockI2CBus) WriteBytes(addr byte, value []byte) error { return nil } func (bus *mockI2CBus) WriteBytes(addr byte, value []byte) error { return nil }
func (bus *mockI2CBus) ReadFromReg(addr, reg byte, value []byte) error { return nil } func (bus *mockI2CBus) ReadFromReg(addr, reg byte, value []byte) error { return nil }

View File

@ -101,7 +101,7 @@ func (b *i2cBus) ReadByte(addr byte) (byte, error) {
return bytes[0], nil return bytes[0], nil
} }
func (b *i2cBus) ReadBytes(addr byte, num int) ([]byte, error) { func (b *i2cBus) ReadBytes(addr byte) ([]byte, error) {
b.mu.Lock() b.mu.Lock()
defer b.mu.Unlock() defer b.mu.Unlock()
@ -113,10 +113,16 @@ func (b *i2cBus) ReadBytes(addr byte, num int) ([]byte, error) {
return []byte{0}, err return []byte{0}, err
} }
bytes := make([]byte, num) info, err := b.file.Stat()
if err != nil {
return []byte{0}, err
}
size := int(info.Size())
bytes := make([]byte, size)
n, _ := b.file.Read(bytes) n, _ := b.file.Read(bytes)
if n != num { if n != size {
return []byte{0}, fmt.Errorf("i2c: Unexpected number (%v) of bytes read", n) return []byte{0}, fmt.Errorf("i2c: Unexpected number (%v) of bytes read", n)
} }

2
i2c.go
View File

@ -4,6 +4,8 @@ package embd
// I2CBus interface is used to interact with the I2C bus. // I2CBus interface is used to interact with the I2C bus.
type I2CBus interface { type I2CBus interface {
// ReadBytes reads a slice of bytes from the given address.
ReadBytes(addr byte) (value []byte, err error)
// ReadByte reads a byte from the given address. // ReadByte reads a byte from the given address.
ReadByte(addr byte) (value byte, err error) ReadByte(addr byte) (value byte, err error)
// ReadBytes reads a slice of bytes from the given address. // ReadBytes reads a slice of bytes from the given address.