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}