@@ -10,9 +10,11 @@ import (
1010)
1111
1212var currentScreen = "ui_Boot_Screen"
13- var lastWakeTime = time .Now ()
1413var backlightState = 0 // 0 - NORMAL, 1 - DIMMED, 2 - OFF
1514
15+ var dim_ticker * time.Ticker
16+ var off_ticker * time.Ticker
17+
1618const (
1719 TOUCHSCREEN_DEVICE string = "/dev/input/event1"
1820 BACKLIGHT_CONTROL_CLASS string = "/sys/class/backlight/backlight/brightness"
@@ -115,38 +117,34 @@ func setDisplayBrightness(brightness int) error {
115117 return err
116118 }
117119
118- fmt .Printf ("display: set brightness to %v" , brightness )
120+ fmt .Printf ("display: set brightness to %v\n " , brightness )
119121 return nil
120122}
121123
122- // displayTimeoutTick checks the time the display was last woken, and compares that to the
123- // config's displayTimeout values to decide whether or not to dim/switch off the display.
124- func displayTimeoutTick () {
125- tn := time .Now ()
126- td := tn .Sub (lastWakeTime ).Milliseconds ()
124+ // tick_displayDim() is called when when dim ticker expires, it simply reduces the brightness
125+ // of the display by half of the max brightness.
126+ func tick_displayDim () {
127+ err := setDisplayBrightness (config .DisplayMaxBrightness / 2 )
128+ if err != nil {
129+ fmt .Printf ("display: failed to dim display: %s\n " , err )
130+ }
127131
128- if td > config .DisplayOffAfterMs && config .DisplayOffAfterMs != 0 && (backlightState == 1 || backlightState == 0 ) {
129- // Display fully off
132+ dim_ticker .Stop ()
130133
131- backlightState = 2
132- err := setDisplayBrightness (0 )
133- if err != nil {
134- fmt .Printf ("display: timeout: Failed to switch off backlight: %s\n " , err )
135- }
134+ backlightState = 1
135+ }
136136
137- } else if td > config .DisplayDimAfterMs && config .DisplayDimAfterMs != 0 && backlightState == 0 {
138- // Display dimming
137+ // tick_displayOff() is called when the off ticker expires, it turns off the display
138+ // by setting the brightness to zero.
139+ func tick_displayOff () {
140+ err := setDisplayBrightness (0 )
141+ if err != nil {
142+ fmt .Printf ("display: failed to turn off display: %s\n " , err )
143+ }
139144
140- // Get 50% of max brightness, rounded up.
141- dimBright := config .DisplayMaxBrightness / 2
142- fmt .Printf ("display: timeout: target dim brightness: %v\n " , dimBright )
145+ off_ticker .Stop ()
143146
144- backlightState = 1
145- err := setDisplayBrightness (dimBright )
146- if err != nil {
147- fmt .Printf ("display: timeout: Failed to dim backlight: %s\n " , err )
148- }
149- }
147+ backlightState = 2
150148}
151149
152150// wakeDisplay sets the display brightness back to config.DisplayMaxBrightness and stores the time the display
@@ -165,7 +163,8 @@ func wakeDisplay() {
165163 fmt .Printf ("display wake failed, %s\n " , err )
166164 }
167165
168- lastWakeTime = time .Now ()
166+ dim_ticker .Reset (time .Duration (config .DisplayDimAfterMs ) * time .Millisecond )
167+ off_ticker .Reset (time .Duration (config .DisplayOffAfterMs ) * time .Millisecond )
169168 backlightState = 0
170169}
171170
@@ -210,14 +209,20 @@ func init() {
210209 }()
211210
212211 go func () {
213- // Start display auto-sleeping ticker
214- ticker := time .NewTicker (1 * time .Second )
215- defer ticker .Stop ()
212+ LoadConfig ()
213+ // Start display auto-sleeping tickers
214+ dim_ticker = time .NewTicker (time .Duration (config .DisplayDimAfterMs ) * time .Millisecond )
215+ defer dim_ticker .Stop ()
216+
217+ off_ticker = time .NewTicker (time .Duration (config .DisplayOffAfterMs ) * time .Millisecond )
218+ defer off_ticker .Stop ()
216219
217220 for {
218221 select {
219- case <- ticker .C :
220- displayTimeoutTick ()
222+ case <- dim_ticker .C :
223+ tick_displayDim ()
224+ case <- off_ticker .C :
225+ tick_displayOff ()
221226 }
222227 }
223228 }()
0 commit comments