From ad7ff7dceaf745368a2e3895710bbf62e8664f31 Mon Sep 17 00:00:00 2001 From: Marc-Antoine Ruel Date: Mon, 26 Mar 2018 10:50:24 -0400 Subject: [PATCH] bmxx80: switch to a required Opts pattern Issue #194 --- devices/bmxx80/bmx280_test.go | 28 ++++++++++++++-------------- devices/bmxx80/bmxx80.go | 20 +++++++++----------- devices/bmxx80/example_test.go | 3 ++- 3 files changed, 25 insertions(+), 26 deletions(-) diff --git a/devices/bmxx80/bmx280_test.go b/devices/bmxx80/bmx280_test.go index 0fa5203..1cd9982 100644 --- a/devices/bmxx80/bmx280_test.go +++ b/devices/bmxx80/bmx280_test.go @@ -126,7 +126,7 @@ func TestNewSPIBME280_fail_len(t *testing.T) { DontPanic: true, }, } - if dev, err := NewSPI(&s, nil); dev != nil || err == nil { + if dev, err := NewSPI(&s, &DefaultOpts); dev != nil || err == nil { t.Fatal("read failed") } // The I/O didn't occur. @@ -148,7 +148,7 @@ func TestNewSPIBME280_fail_chipid(t *testing.T) { }, }, } - if dev, err := NewSPI(&s, nil); dev != nil || err == nil { + if dev, err := NewSPI(&s, &DefaultOpts); dev != nil || err == nil { t.Fatal("read failed") } if err := s.Close(); err != nil { @@ -164,7 +164,7 @@ func TestNewI2CBME280_fail_io(t *testing.T) { }, DontPanic: true, } - if dev, err := NewI2C(&bus, 0x76, nil); dev != nil || err == nil { + if dev, err := NewI2C(&bus, 0x76, &DefaultOpts); dev != nil || err == nil { t.Fatal("read failed") } // The I/O didn't occur. @@ -182,7 +182,7 @@ func TestNewI2CBME280_fail_read_calib1(t *testing.T) { }, DontPanic: true, } - if dev, err := NewI2C(&bus, 0x76, nil); dev != nil || err == nil { + if dev, err := NewI2C(&bus, 0x76, &DefaultOpts); dev != nil || err == nil { t.Fatal("invalid chip id") } if err := bus.Close(); err != nil { @@ -229,7 +229,7 @@ func TestNewI2C280_write_config(t *testing.T) { }, DontPanic: true, } - if dev, err := NewI2C(&bus, 0x76, nil); dev != nil || err == nil { + if dev, err := NewI2C(&bus, 0x76, &DefaultOpts); dev != nil || err == nil { t.Fatal("3rd calib read failed") } if err := bus.Close(); err != nil { @@ -254,7 +254,7 @@ func TestNewI2C280Opts_temperature(t *testing.T) { func TestNewI2C280_bad_addr(t *testing.T) { bus := i2ctest.Playback{} - if dev, err := NewI2C(&bus, 1, nil); dev != nil || err == nil { + if dev, err := NewI2C(&bus, 1, &DefaultOpts); dev != nil || err == nil { t.Fatal("bad addr") } if err := bus.Close(); err != nil { @@ -283,7 +283,7 @@ func TestI2CSenseBME280_fail(t *testing.T) { }, DontPanic: true, } - dev, err := NewI2C(&bus, 0x76, nil) + dev, err := NewI2C(&bus, 0x76, &DefaultOpts) if err != nil { t.Fatal(err) } @@ -320,7 +320,7 @@ func TestI2CSenseBMP280_success(t *testing.T) { {Addr: 0x76, W: []byte{0xf7}, R: []byte{0x4a, 0x52, 0xc0, 0x80, 0x96, 0xc0}}, }, } - dev, err := NewI2C(&bus, 0x76, nil) + dev, err := NewI2C(&bus, 0x76, &DefaultOpts) if err != nil { t.Fatal(err) } @@ -373,7 +373,7 @@ func TestI2CSenseBME280_success(t *testing.T) { {Addr: 0x76, W: []byte{0xf7}, R: []byte{0x4a, 0x52, 0xc0, 0x80, 0x96, 0xc0, 0x7a, 0x76}}, }, } - dev, err := NewI2C(&bus, 0x76, nil) + dev, err := NewI2C(&bus, 0x76, &DefaultOpts) if err != nil { t.Fatal(err) } @@ -422,7 +422,7 @@ func TestI2CSense280_idle_fail(t *testing.T) { }, DontPanic: true, } - dev, err := NewI2C(&bus, 0x76, nil) + dev, err := NewI2C(&bus, 0x76, &DefaultOpts) if err != nil { t.Fatal(err) } @@ -458,7 +458,7 @@ func TestI2CSense280_command_fail(t *testing.T) { }, DontPanic: true, } - dev, err := NewI2C(&bus, 0x76, nil) + dev, err := NewI2C(&bus, 0x76, &DefaultOpts) if err != nil { t.Fatal(err) } @@ -502,7 +502,7 @@ func TestI2CSenseContinuous280_success(t *testing.T) { {Addr: 0x76, W: []byte{0xF5, 0xa0, 0xf4, 0x6c}}, }, } - dev, err := NewI2C(&bus, 0x76, nil) + dev, err := NewI2C(&bus, 0x76, &DefaultOpts) if err != nil { t.Fatal(err) } @@ -600,7 +600,7 @@ func TestI2CSenseContinuous280_command_fail(t *testing.T) { }, DontPanic: true, } - dev, err := NewI2C(&bus, 0x76, nil) + dev, err := NewI2C(&bus, 0x76, &DefaultOpts) if err != nil { t.Fatal(err) } @@ -634,7 +634,7 @@ func TestI2CSenseContinuous280_sense_fail(t *testing.T) { }, DontPanic: true, } - dev, err := NewI2C(&bus, 0x76, nil) + dev, err := NewI2C(&bus, 0x76, &DefaultOpts) if err != nil { t.Fatal(err) } diff --git a/devices/bmxx80/bmxx80.go b/devices/bmxx80/bmxx80.go index 09e6eb8..f22f30b 100644 --- a/devices/bmxx80/bmxx80.go +++ b/devices/bmxx80/bmxx80.go @@ -124,9 +124,16 @@ const ( F16 Filter = 4 ) -// Opts is optional options to pass to the constructor. +// DefaultsOpts returns the default options used. // -// Recommended (and default) values are O4x for oversampling. +// Defaults to use O4x (4x oversampling) for all measurements. +var DefaultOpts = Opts{ + Temperature: O4x, + Pressure: O4x, + Humidity: O4x, +} + +// Opts defines the options for the device. // // Recommended sensing settings as per the datasheet: // @@ -343,9 +350,6 @@ func (d *Dev) Halt() error { // func (d *Dev) makeDev(opts *Opts) error { - if opts == nil { - opts = &defaults - } d.opts = *opts d.measDelay = d.opts.delayTypical280() @@ -505,12 +509,6 @@ func (d *Dev) wrap(err error) error { return fmt.Errorf("%s: %v", strings.ToLower(d.name), err) } -var defaults = Opts{ - Temperature: O4x, - Pressure: O4x, - Humidity: O4x, -} - var doSleep = time.Sleep var _ conn.Resource = &Dev{} diff --git a/devices/bmxx80/example_test.go b/devices/bmxx80/example_test.go index 602d72f..c6058fe 100644 --- a/devices/bmxx80/example_test.go +++ b/devices/bmxx80/example_test.go @@ -26,7 +26,8 @@ func Example() { log.Fatalf("failed to open I²C: %v", err) } defer b.Close() - d, err := bmxx80.NewI2C(b, 0x76, nil) + + d, err := bmxx80.NewI2C(b, 0x76, &bmxx80.DefaultOpts) if err != nil { log.Fatalf("failed to initialize bme280: %v", err) }