Refactor power saving logic into display drivers and add ST7789 support
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user