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

@@ -69,11 +69,51 @@ void LowLevelDisplayST7789::refresh() {
}
void LowLevelDisplayST7789::set_backlight(bool on) {
// TODO: Implement
(void)on;
set_brightness(on ? 100 : 0);
}
void LowLevelDisplayST7789::set_brightness(uint8_t brightness) {
st7789_set_brightness(brightness);
}
uint8_t LowLevelDisplayST7789::get_brightness() const {
return st7789_get_brightness();
}
void LowLevelDisplayST7789::set_rotation(uint8_t rotation) {
// TODO: Implement
(void)rotation;
}
void LowLevelDisplayST7789::on_idle_2min() {
if (!is_dimmed && !is_sleeping) {
saved_brightness = get_brightness();
set_brightness(5); // Dim to 5%
is_dimmed = true;
printf("ST7789: Dimmed to 5%%\n");
}
}
void LowLevelDisplayST7789::on_idle_10min() {
if (!is_sleeping) {
st7789_sleep();
is_sleeping = true;
is_dimmed = true; // Sleep implies dimmed
printf("ST7789: Entered sleep mode\n");
}
}
void LowLevelDisplayST7789::on_user_interaction() {
if (is_sleeping) {
st7789_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("ST7789: Woke from sleep\n");
} else if (is_dimmed) {
set_brightness(saved_brightness > 0 ? saved_brightness : 100);
is_dimmed = false;
printf("ST7789: Restored brightness\n");
}
}