1package ui
 2
 3import (
 4	"machine"
 5	"odoki-firmware/ui/info"
 6	"odoki-firmware/ui/onelead"
 7	"runtime"
 8
 9	"tinygo.org/x/drivers"
10	"tinygo.org/x/drivers/st7789"
11)
12
13const (
14	InfoScreen int = iota
15	OneLeadScreen
16)
17
18var DrawFunctions = []func(bool, st7789.Device) bool{info.Draw, onelead.Draw}
19
20var CurrentScreen = OneLeadScreen
21var CursorPosition = 0
22var VoidDisplayed = true
23
24var display st7789.Device
25
26func Init(bus drivers.SPI, resetPin machine.Pin, dcPin machine.Pin, csPin machine.Pin, blPin machine.Pin) {
27	display = st7789.New(bus, resetPin, dcPin, csPin, blPin)
28	// ToDo: read backlight brightness from flash with https://github.com/tinygo-org/tinyfs
29	display.Configure(st7789.Config{
30		Rotation:   st7789.NO_ROTATION,
31		RowOffset:  0,
32		FrameRate:  st7789.FRAMERATE_111,
33		VSyncLines: st7789.MAX_VSYNC_SCANLINES,
34	})
35	display.EnableBacklight(true)
36}
37
38func UpdateScreen() {
39	VoidDisplayed = DrawFunctions[CurrentScreen](VoidDisplayed, display)
40}
41
42func DrawLoop() {
43	for true {
44		UpdateScreen()
45		runtime.Gosched()
46	}
47}