@@ -10,9 +10,11 @@ import (
10
10
)
11
11
12
12
var currentScreen = "ui_Boot_Screen"
13
- var lastWakeTime = time .Now ()
14
13
var backlightState = 0 // 0 - NORMAL, 1 - DIMMED, 2 - OFF
15
14
15
+ var dim_ticker * time.Ticker
16
+ var off_ticker * time.Ticker
17
+
16
18
const (
17
19
TOUCHSCREEN_DEVICE string = "/dev/input/event1"
18
20
BACKLIGHT_CONTROL_CLASS string = "/sys/class/backlight/backlight/brightness"
@@ -115,38 +117,34 @@ func setDisplayBrightness(brightness int) error {
115
117
return err
116
118
}
117
119
118
- fmt .Printf ("display: set brightness to %v" , brightness )
120
+ fmt .Printf ("display: set brightness to %v\n " , brightness )
119
121
return nil
120
122
}
121
123
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
+ }
127
131
128
- if td > config .DisplayOffAfterMs && config .DisplayOffAfterMs != 0 && (backlightState == 1 || backlightState == 0 ) {
129
- // Display fully off
132
+ dim_ticker .Stop ()
130
133
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
+ }
136
136
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
+ }
139
144
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 ()
143
146
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
150
148
}
151
149
152
150
// wakeDisplay sets the display brightness back to config.DisplayMaxBrightness and stores the time the display
@@ -165,7 +163,8 @@ func wakeDisplay() {
165
163
fmt .Printf ("display wake failed, %s\n " , err )
166
164
}
167
165
168
- lastWakeTime = time .Now ()
166
+ dim_ticker .Reset (time .Duration (config .DisplayDimAfterMs ) * time .Millisecond )
167
+ off_ticker .Reset (time .Duration (config .DisplayOffAfterMs ) * time .Millisecond )
169
168
backlightState = 0
170
169
}
171
170
@@ -210,14 +209,20 @@ func init() {
210
209
}()
211
210
212
211
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 ()
216
219
217
220
for {
218
221
select {
219
- case <- ticker .C :
220
- displayTimeoutTick ()
222
+ case <- dim_ticker .C :
223
+ tick_displayDim ()
224
+ case <- off_ticker .C :
225
+ tick_displayOff ()
221
226
}
222
227
}
223
228
}()
0 commit comments