Skip to content

Commit dc57501

Browse files
DavidDavid
authored andcommitted
After dimming, keep the oled on for some time before turning it off.
Use dim delay/2 as timeout.
1 parent 3360eb6 commit dc57501

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

Drivers/graphics/gui/screens/screen_common.c

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ void wakeOledDim(void){
148148

149149
void handleOledDim(void){
150150
#ifndef ST7565
151-
uint16_t brightness=getDisplayContrastOrBrightness();
151+
int16_t brightness=getDisplayContrastOrBrightness();
152152
if(!getDisplayPower() && getCurrentMode()>mode_sleep){ // If screen turned off and not in sleep mode, wake it.
153153
wakeOledDim(); // (Something woke the station from sleep)
154154
}
@@ -158,20 +158,21 @@ void handleOledDim(void){
158158
return;
159159
}
160160
// If idle timer expired, start decreasing brightness
161-
if(brightness>5 && ((current_time-dim.timer)>getSystemSettings()->dim_Timeout)){
161+
if((current_time-dim.timer)>getSystemSettings()->dim_Timeout){
162162
dim.step=-5;
163163
}
164164
// If min. brightness reached and Oled power is disabled in sleep mode, turn off screen if temp<100ºC or error active
165-
else if(dim.min_reached && getCurrentMode()==mode_sleep && getSystemSettings()->dim_inSleep==disable && (last_TIP_C<100 || (getIronErrorFlags().active))){
165+
else if(dim.min_reached && (current_time - dim.timer > getSystemSettings()->dim_Timeout/2) && getCurrentMode()==mode_sleep && getSystemSettings()->dim_inSleep==disable && (last_TIP_C<100 || (getIronErrorFlags().active))){
166166
setDisplayPower(disable);
167167
dim.min_reached=0;
168168
}
169169
}
170170
// Smooth screen brightness dimming
171-
else if((current_time-dim.stepTimer)>19){
171+
else if( dim.step!=0 && (current_time-dim.stepTimer)>19){
172172
dim.stepTimer = current_time;
173-
brightness+=dim.step;
174-
if(brightness>4 && brightness < getSystemSettings()->contrastOrBrightness){
173+
if( (dim.step<0 && brightness > -dim.step) ||
174+
(dim.step>0 && brightness+dim.step < getSystemSettings()->contrastOrBrightness)){
175+
brightness+=dim.step;
175176
setDisplayContrastOrBrightness(brightness);
176177
}
177178
else{

0 commit comments

Comments
 (0)