Refactor power saving logic into display drivers and add ST7789 support

This commit is contained in:
Adolfo Reyna
2026-02-10 22:20:53 -05:00
parent ce1f06ccbf
commit fe5d58b663
11 changed files with 232 additions and 88 deletions

View File

@@ -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");
}
}