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}