diff --git a/aip31068/dev.go b/aip31068/dev.go index d5532c5..8d7f2bd 100644 --- a/aip31068/dev.go +++ b/aip31068/dev.go @@ -48,12 +48,13 @@ type Dev struct { rows int cols int - mu sync.Mutex - d *i2c.Dev - blink bool - on bool - cursor bool - backlight interface{} + mu sync.Mutex + d *i2c.Dev + blink bool + on bool + cursor bool + blMono display.DisplayBacklight + blRGB display.DisplayRGBBacklight } func wrap(err error) error { @@ -71,16 +72,22 @@ func wrap(err error) error { // display.DisplayRGBBacklight. func New(bus i2c.Bus, address uint16, - backlight interface{}, + backlight any, rows, cols int) (*Dev, error) { dev := &Dev{ - d: &i2c.Dev{Bus: bus, Addr: address}, - backlight: backlight, - rows: rows, - cols: cols, + d: &i2c.Dev{Bus: bus, Addr: address}, + rows: rows, + cols: cols, } + switch bl := backlight.(type) { + case display.DisplayBacklight: + dev.blMono = bl + case display.DisplayRGBBacklight: + dev.blRGB = bl + } + err := dev.init() if err != nil { dev = nil @@ -118,7 +125,6 @@ func (dev *Dev) init() error { _ = dev.Backlight(0xff) } if err != nil { - fmt.Println("dev.init() returns", err) err = wrap(err) } return err @@ -343,27 +349,23 @@ func (dev *Dev) WriteString(text string) (n int, err error) { // Set the backlight intensity. func (dev *Dev) Backlight(intensity display.Intensity) error { - switch bl := dev.backlight.(type) { - case display.DisplayBacklight: - return bl.Backlight(intensity) - case display.DisplayRGBBacklight: - return bl.RGBBacklight(intensity, intensity, intensity) - default: - return ErrNotImplemented + if dev.blMono != nil { + return dev.blMono.Backlight(intensity) + } else if dev.blRGB != nil { + return dev.blRGB.RGBBacklight(intensity, intensity, intensity) } + return ErrNotImplemented } // For units that have an RGB Backlight, set the backlight color/intensity. // The range of the values is 0-255. func (dev *Dev) RGBBacklight(red, green, blue display.Intensity) error { - switch bl := dev.backlight.(type) { - case display.DisplayRGBBacklight: - return bl.RGBBacklight(red, green, blue) - case display.DisplayBacklight: - return bl.Backlight(red | green | blue) - default: - return ErrNotImplemented + if dev.blRGB != nil { + return dev.blRGB.RGBBacklight(red, green, blue) + } else if dev.blMono != nil { + return dev.blMono.Backlight(red | green | blue) } + return ErrNotImplemented } var _ conn.Resource = &Dev{} diff --git a/waveshare1602/example_test.go b/waveshare1602/example_test.go index ced3de7..5ffbcae 100644 --- a/waveshare1602/example_test.go +++ b/waveshare1602/example_test.go @@ -5,7 +5,6 @@ package waveshare1602_test import ( - "fmt" "log" "time" @@ -17,7 +16,6 @@ import ( ) func Example() { - fmt.Println("Starting") // Make sure periph is initialized. if _, err := host.Init(); err != nil { log.Fatal(err)