Merge pull request #4010 from gudnimg/improve-backlight-control

backlight: always allow backlight to dim/wake
This commit is contained in:
3d-gussner 2023-02-21 10:00:03 +01:00 committed by GitHub
commit afc866e756
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 10 deletions

View File

@ -15,6 +15,7 @@
#include "fastio.h"
//-//
#include "sound.h"
#include "backlight.h"
#define LCD_DEFAULT_DELAY 100
@ -638,6 +639,7 @@ int8_t lcd_encoder_diff = 0;
uint8_t lcd_buttons = 0;
uint8_t lcd_button_pressed = 0;
uint8_t lcd_update_enabled = 1;
static bool lcd_backlight_wake_trigger; // Flag set by interrupt when the knob is pressed or rotated
uint32_t lcd_next_update_millis = 0;
@ -695,8 +697,16 @@ void lcd_update(uint8_t lcdDrawUpdateOverride)
{
if (lcd_draw_update < lcdDrawUpdateOverride)
lcd_draw_update = lcdDrawUpdateOverride;
if (!lcd_update_enabled)
return;
if (lcd_backlight_wake_trigger) {
lcd_backlight_wake_trigger = false;
backlight_wake();
}
backlight_update();
if (!lcd_update_enabled) return;
if (lcd_lcdupdate_func)
lcd_lcdupdate_func();
}
@ -742,6 +752,7 @@ void lcd_buttons_update(void)
if (!buttonBlanking.running() || buttonBlanking.expired(BUTTON_BLANKING_TIME)) {
buttonBlanking.start();
safetyTimer.start();
lcd_backlight_wake_trigger = true; // flag event, knob pressed
if ((lcd_button_pressed == 0) && (lcd_long_press_active == 0))
{
longPressTimer.start();
@ -803,6 +814,10 @@ void lcd_buttons_update(void)
lcd_encoder_diff--;
break;
}
if (abs(lcd_encoder_diff) >= ENCODER_PULSES_PER_STEP) {
lcd_backlight_wake_trigger = true; // flag event, knob rotated
}
}
lcd_encoder_bits = enc;
}

View File

@ -56,7 +56,6 @@ Sound_SaveMode();
//if critical is true then silend and once mode is ignored
void __attribute__((noinline)) Sound_MakeCustom(uint16_t ms,uint16_t tone_,bool critical){
backlight_wake();
if (critical || eSoundMode != e_SOUND_MODE_SILENT) {
if(!tone_) {
WRITE(BEEPER, HIGH);
@ -127,7 +126,6 @@ static void Sound_DoSound_Blind_Alert(void)
static void Sound_DoSound_Encoder_Move(void)
{
backlight_wake();
uint8_t nI;
for(nI=0;nI<5;nI++)
@ -141,7 +139,6 @@ uint8_t nI;
static void Sound_DoSound_Echo(void)
{
backlight_wake();
uint8_t nI;
for(nI=0;nI<10;nI++)
@ -163,7 +160,6 @@ WRITE(BEEPER,LOW);
static void Sound_DoSound_Alert(bool bOnce)
{
backlight_wake();
uint8_t nI,nMax;
nMax=bOnce?1:3;

View File

@ -7441,7 +7441,6 @@ void menu_lcd_longpress_func(void)
// Wake up the LCD backlight and,
// start LCD inactivity timer
lcd_timeoutToStatus.start();
backlight_wake();
if (homing_flag || mesh_bed_leveling_flag || menu_menu == lcd_babystep_z || menu_menu == lcd_move_z || menu_block_mask != MENU_BLOCK_NONE || Stopped)
{
// disable longpress during re-entry, while homing, calibration or if a serious error
@ -7546,7 +7545,6 @@ void menu_lcd_lcdupdate_func(void)
}
}
#endif//CARDINSERTED
backlight_update();
if (lcd_next_update_millis < _millis())
{
if (abs(lcd_encoder_diff) >= ENCODER_PULSES_PER_STEP)
@ -7557,13 +7555,11 @@ void menu_lcd_lcdupdate_func(void)
Sound_MakeSound(e_SOUND_TYPE_EncoderMove);
lcd_encoder_diff = 0;
lcd_timeoutToStatus.start();
backlight_wake();
}
if (LCD_CLICKED)
{
lcd_timeoutToStatus.start();
backlight_wake();
}
(*menu_menu)();