summaryrefslogtreecommitdiffstats
path: root/dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/io/i2c/example
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/io/i2c/example/displayip/main.go89
-rw-r--r--dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/io/i2c/example_test.go24
2 files changed, 113 insertions, 0 deletions
diff --git a/dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/io/i2c/example/displayip/main.go b/dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/io/i2c/example/displayip/main.go
new file mode 100644
index 0000000..58fe694
--- /dev/null
+++ b/dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/io/i2c/example/displayip/main.go
@@ -0,0 +1,89 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package main contains a program that displays the IPv4 address
+// of the machine on an a Grove-LCD RGB backlight.
+package main
+
+import (
+ "fmt"
+ "net"
+
+ "golang.org/x/exp/io/i2c"
+)
+
+const (
+ DISPLAY_RGB_ADDR = 0x62
+ DISPLAY_TEXT_ADDR = 0x3e
+)
+
+func main() {
+ d, err := i2c.Open(&i2c.Devfs{Dev: "/dev/i2c-1"}, DISPLAY_RGB_ADDR)
+ if err != nil {
+ panic(err)
+ }
+
+ td, err := i2c.Open(&i2c.Devfs{Dev: "/dev/i2c-1"}, DISPLAY_TEXT_ADDR)
+ if err != nil {
+ panic(err)
+ }
+
+ // Set the backlight color to 100,100,100.
+ write(d, []byte{0, 0})
+ write(d, []byte{1, 0})
+ write(d, []byte{0x08, 0xaa})
+ write(d, []byte{4, 100}) // R value
+ write(d, []byte{3, 100}) // G value
+ write(d, []byte{2, 100}) // B value
+
+ ip, err := resolveIP()
+ if err != nil {
+ panic(err)
+ }
+
+ fmt.Printf("host machine IP is %v\n", ip)
+
+ write(td, []byte{0x80, 0x02}) // return home
+ write(td, []byte{0x80, 0x01}) // clean the display
+ write(td, []byte{0x80, 0x08 | 0x04}) // no cursor
+ write(td, []byte{0x80, 0x28}) // two lines
+
+ for _, s := range ip {
+ write(td, []byte{0x40, byte(s)})
+ }
+}
+
+func write(d *i2c.Device, buf []byte) {
+ err := d.Write(buf)
+ if err != nil {
+ panic(err)
+ }
+}
+
+func resolveIP() (string, error) {
+ var ip net.IP
+ ifaces, err := net.Interfaces()
+ if err != nil {
+ panic(err)
+ }
+ for _, i := range ifaces {
+ addrs, err := i.Addrs()
+ if err != nil {
+ panic(err)
+ }
+ for _, addr := range addrs {
+ switch v := addr.(type) {
+ case *net.IPNet:
+ ip = v.IP
+ case *net.IPAddr:
+ ip = v.IP
+ }
+ ip = ip.To4()
+ if ip != nil && ip.String() != "127.0.0.1" {
+ return ip.String(), nil
+ }
+ }
+ }
+ return "", fmt.Errorf("cannot resolve the IP")
+}
diff --git a/dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/io/i2c/example_test.go b/dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/io/i2c/example_test.go
new file mode 100644
index 0000000..aeedaeb
--- /dev/null
+++ b/dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/io/i2c/example_test.go
@@ -0,0 +1,24 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package i2c_test
+
+import (
+ "golang.org/x/exp/io/i2c"
+)
+
+func ExampleOpen() {
+ d, err := i2c.Open(&i2c.Devfs{Dev: "/dev/i2c-1"}, 0x39)
+ if err != nil {
+ panic(err)
+ }
+
+ // opens a 10-bit address
+ d, err = i2c.Open(&i2c.Devfs{Dev: "/dev/i2c-1"}, i2c.TenBit(0x78))
+ if err != nil {
+ panic(err)
+ }
+
+ _ = d
+}