|
|
|
@ -79,7 +79,6 @@ func TestSPISense_success(t *testing.T) {
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
dev.Stop()
|
|
|
|
|
|
|
|
env := devices.Environment{}
|
|
|
|
env := devices.Environment{}
|
|
|
|
if err := dev.Sense(&env); err != nil {
|
|
|
|
if err := dev.Sense(&env); err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
t.Fatal(err)
|
|
|
|
@ -96,6 +95,9 @@ func TestSPISense_success(t *testing.T) {
|
|
|
|
if env.Humidity != 995 {
|
|
|
|
if env.Humidity != 995 {
|
|
|
|
t.Fatalf("humidity %d", env.Humidity)
|
|
|
|
t.Fatalf("humidity %d", env.Humidity)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := bus.Close(); err != nil {
|
|
|
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func TestNewSPI_fail(t *testing.T) {
|
|
|
|
func TestNewSPI_fail(t *testing.T) {
|
|
|
|
@ -114,11 +116,17 @@ func TestNewSPI_fail_len(t *testing.T) {
|
|
|
|
Read: []byte{0x00},
|
|
|
|
Read: []byte{0x00},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
DontPanic: true,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if dev, err := NewSPI(&bus, nil); dev != nil || err == nil {
|
|
|
|
if dev, err := NewSPI(&bus, nil); dev != nil || err == nil {
|
|
|
|
t.Fatal("read failed")
|
|
|
|
t.Fatal("read failed")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// The I/O didn't occur.
|
|
|
|
|
|
|
|
bus.Count++
|
|
|
|
|
|
|
|
if err := bus.Close(); err != nil {
|
|
|
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func TestNewSPI_fail_chipid(t *testing.T) {
|
|
|
|
func TestNewSPI_fail_chipid(t *testing.T) {
|
|
|
|
@ -136,6 +144,9 @@ func TestNewSPI_fail_chipid(t *testing.T) {
|
|
|
|
if dev, err := NewSPI(&bus, nil); dev != nil || err == nil {
|
|
|
|
if dev, err := NewSPI(&bus, nil); dev != nil || err == nil {
|
|
|
|
t.Fatal("read failed")
|
|
|
|
t.Fatal("read failed")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := bus.Close(); err != nil {
|
|
|
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func TestNewI2C_fail(t *testing.T) {
|
|
|
|
func TestNewI2C_fail(t *testing.T) {
|
|
|
|
@ -144,10 +155,16 @@ func TestNewI2C_fail(t *testing.T) {
|
|
|
|
// Chipd ID detection.
|
|
|
|
// Chipd ID detection.
|
|
|
|
{Addr: 0x76, Write: []byte{0xd0}},
|
|
|
|
{Addr: 0x76, Write: []byte{0xd0}},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
DontPanic: true,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if dev, err := NewI2C(&bus, nil); dev != nil || err == nil {
|
|
|
|
if dev, err := NewI2C(&bus, nil); dev != nil || err == nil {
|
|
|
|
t.Fatal("read failed")
|
|
|
|
t.Fatal("read failed")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// The I/O didn't occur.
|
|
|
|
|
|
|
|
bus.Count++
|
|
|
|
|
|
|
|
if err := bus.Close(); err != nil {
|
|
|
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func TestNewI2C_chipid(t *testing.T) {
|
|
|
|
func TestNewI2C_chipid(t *testing.T) {
|
|
|
|
@ -156,10 +173,14 @@ func TestNewI2C_chipid(t *testing.T) {
|
|
|
|
// Chipd ID detection.
|
|
|
|
// Chipd ID detection.
|
|
|
|
{Addr: 0x76, Write: []byte{0xd0}, Read: []byte{0x60}},
|
|
|
|
{Addr: 0x76, Write: []byte{0xd0}, Read: []byte{0x60}},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
DontPanic: true,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if dev, err := NewI2C(&bus, nil); dev != nil || err == nil {
|
|
|
|
if dev, err := NewI2C(&bus, nil); dev != nil || err == nil {
|
|
|
|
t.Fatal("invalid chip id")
|
|
|
|
t.Fatal("invalid chip id")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := bus.Close(); err != nil {
|
|
|
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func TestNewI2C_calib1(t *testing.T) {
|
|
|
|
func TestNewI2C_calib1(t *testing.T) {
|
|
|
|
@ -174,11 +195,15 @@ func TestNewI2C_calib1(t *testing.T) {
|
|
|
|
Read: []byte{0x10, 0x6e, 0x6c, 0x66, 0x32, 0x0, 0x5d, 0x95, 0xb8, 0xd5, 0xd0, 0xb, 0x77, 0x1e, 0x9d, 0xff, 0xf9, 0xff, 0xac, 0x26, 0xa, 0xd8, 0xbd, 0x10, 0x0, 0x4b},
|
|
|
|
Read: []byte{0x10, 0x6e, 0x6c, 0x66, 0x32, 0x0, 0x5d, 0x95, 0xb8, 0xd5, 0xd0, 0xb, 0x77, 0x1e, 0x9d, 0xff, 0xf9, 0xff, 0xac, 0x26, 0xa, 0xd8, 0xbd, 0x10, 0x0, 0x4b},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
DontPanic: true,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
opts := Opts{Address: 0}
|
|
|
|
opts := Opts{Address: 0}
|
|
|
|
if dev, err := NewI2C(&bus, &opts); dev != nil || err == nil {
|
|
|
|
if dev, err := NewI2C(&bus, &opts); dev != nil || err == nil {
|
|
|
|
t.Fatal("2nd calib read failed")
|
|
|
|
t.Fatal("2nd calib read failed")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := bus.Close(); err != nil {
|
|
|
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func TestNewI2C_calib2(t *testing.T) {
|
|
|
|
func TestNewI2C_calib2(t *testing.T) {
|
|
|
|
@ -195,10 +220,14 @@ func TestNewI2C_calib2(t *testing.T) {
|
|
|
|
// Calibration data.
|
|
|
|
// Calibration data.
|
|
|
|
{Addr: 0x76, Write: []byte{0xe1}, Read: []byte{0x6e, 0x1, 0x0, 0x13, 0x5, 0x0, 0x1e}},
|
|
|
|
{Addr: 0x76, Write: []byte{0xe1}, Read: []byte{0x6e, 0x1, 0x0, 0x13, 0x5, 0x0, 0x1e}},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
DontPanic: true,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if dev, err := NewI2C(&bus, nil); dev != nil || err == nil {
|
|
|
|
if dev, err := NewI2C(&bus, nil); dev != nil || err == nil {
|
|
|
|
t.Fatal("3rd calib read failed")
|
|
|
|
t.Fatal("3rd calib read failed")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := bus.Close(); err != nil {
|
|
|
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func TestI2COpts_bad_addr(t *testing.T) {
|
|
|
|
func TestI2COpts_bad_addr(t *testing.T) {
|
|
|
|
@ -207,14 +236,20 @@ func TestI2COpts_bad_addr(t *testing.T) {
|
|
|
|
if dev, err := NewI2C(&bus, &opts); dev != nil || err == nil {
|
|
|
|
if dev, err := NewI2C(&bus, &opts); dev != nil || err == nil {
|
|
|
|
t.Fatal("bad addr")
|
|
|
|
t.Fatal("bad addr")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := bus.Close(); err != nil {
|
|
|
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func TestI2COpts(t *testing.T) {
|
|
|
|
func TestI2COpts(t *testing.T) {
|
|
|
|
bus := i2ctest.Playback{}
|
|
|
|
bus := i2ctest.Playback{DontPanic: true}
|
|
|
|
opts := Opts{Address: 0x76}
|
|
|
|
opts := Opts{Address: 0x76}
|
|
|
|
if dev, err := NewI2C(&bus, &opts); dev != nil || err == nil {
|
|
|
|
if dev, err := NewI2C(&bus, &opts); dev != nil || err == nil {
|
|
|
|
t.Fatal("write fails")
|
|
|
|
t.Fatal("write fails")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := bus.Close(); err != nil {
|
|
|
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func TestI2CSense_fail(t *testing.T) {
|
|
|
|
func TestI2CSense_fail(t *testing.T) {
|
|
|
|
@ -236,6 +271,7 @@ func TestI2CSense_fail(t *testing.T) {
|
|
|
|
// Read.
|
|
|
|
// Read.
|
|
|
|
{Addr: 0x76, Write: []byte{0xf7}},
|
|
|
|
{Addr: 0x76, Write: []byte{0xf7}},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
DontPanic: true,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
dev, err := NewI2C(&bus, nil)
|
|
|
|
dev, err := NewI2C(&bus, nil)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
@ -244,6 +280,11 @@ func TestI2CSense_fail(t *testing.T) {
|
|
|
|
if dev.Sense(&devices.Environment{}) == nil {
|
|
|
|
if dev.Sense(&devices.Environment{}) == nil {
|
|
|
|
t.Fatal("sense fail read")
|
|
|
|
t.Fatal("sense fail read")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// The I/O didn't occur.
|
|
|
|
|
|
|
|
bus.Count++
|
|
|
|
|
|
|
|
if err := bus.Close(); err != nil {
|
|
|
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func TestI2CSense_success(t *testing.T) {
|
|
|
|
func TestI2CSense_success(t *testing.T) {
|
|
|
|
|