1package screendriver
2
3import (
4 "image"
5 "log"
6 "pihonclient/renderer"
7
8 "periph.io/x/conn/v3/i2c/i2creg"
9 "periph.io/x/devices/v3/ssd1306"
10 "periph.io/x/host/v3"
11)
12
13var DisplaysList []*ssd1306.Dev
14var I2CBuses []string
15
16func checkError(error error) {
17 if error != nil {
18 log.Fatal(error)
19 }
20}
21func InitializeDisplays() {
22 // Load all the drivers:
23 _, err := host.Init()
24 checkError(err)
25 for _, busString := range I2CBuses {
26 // Open a handle to the I²C bus:
27 bus, err := i2creg.Open(busString)
28 checkError(err)
29
30 // Open a handle to a ssd1306 connected on the I²C bus:
31 dev, err := ssd1306.NewI2C(bus, &ssd1306.DefaultOpts)
32 checkError(err)
33 DisplaysList = append(DisplaysList, dev)
34 }
35}
36
37func UpdateDisplays() {
38 for i := 0; i < renderer.ScreenCount; i++ {
39 go DisplaysList[i].Draw(renderer.FrameBuffers[i].Bounds(), renderer.FrameBuffers[i], image.Point{})
40 }
41}