Refactor power saving logic into display drivers and add ST7789 support
This commit is contained in:
@@ -94,3 +94,36 @@ void LowLevelDisplayST7796::set_rotation(uint8_t rotation) {
|
||||
// TODO: Add MADCTL register manipulation for rotation
|
||||
(void)rotation;
|
||||
}
|
||||
|
||||
void LowLevelDisplayST7796::on_idle_2min() {
|
||||
if (!is_dimmed && !is_sleeping) {
|
||||
saved_brightness = get_brightness();
|
||||
set_brightness(5); // Dim to 5%
|
||||
is_dimmed = true;
|
||||
printf("TFT: Dimmed to 5%%\n");
|
||||
}
|
||||
}
|
||||
|
||||
void LowLevelDisplayST7796::on_idle_10min() {
|
||||
if (!is_sleeping) {
|
||||
sleep();
|
||||
is_sleeping = true;
|
||||
is_dimmed = true; // Sleep implies dimmed
|
||||
printf("TFT: Entered sleep mode\n");
|
||||
}
|
||||
}
|
||||
|
||||
void LowLevelDisplayST7796::on_user_interaction() {
|
||||
if (is_sleeping) {
|
||||
wake();
|
||||
// Restore brightness if we have a saved value, or default to 100
|
||||
set_brightness(saved_brightness > 0 ? saved_brightness : 100);
|
||||
is_sleeping = false;
|
||||
is_dimmed = false;
|
||||
printf("TFT: Woke from sleep\n");
|
||||
} else if (is_dimmed) {
|
||||
set_brightness(saved_brightness > 0 ? saved_brightness : 100);
|
||||
is_dimmed = false;
|
||||
printf("TFT: Restored brightness\n");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user