aod: switch to 8 colors when always on

This commit is contained in:
John Crawford 2023-10-14 10:16:49 -06:00 committed by JF
parent e884b053d3
commit 5385f7e275
3 changed files with 30 additions and 1 deletions

View file

@ -249,6 +249,7 @@ void DisplayApp::Refresh() {
// Don't actually turn off the display for AlwaysOn mode
if (settingsController.GetAlwaysOnDisplay()) {
brightnessController.Set(Controllers::BrightnessController::Levels::AlwaysOn);
lcd.LowPowerOn();
} else {
brightnessController.Set(Controllers::BrightnessController::Levels::Off);
lcd.Sleep();
@ -257,7 +258,11 @@ void DisplayApp::Refresh() {
state = States::Idle;
break;
case Messages::GoToRunning:
lcd.Wakeup();
if (settingsController.GetAlwaysOnDisplay()) {
lcd.LowPowerOff();
} else {
lcd.Wakeup();
}
lv_disp_trig_activity(nullptr);
ApplyBrightness();
state = States::Running;

View file

@ -127,6 +127,14 @@ void St7789::NormalModeOn() {
WriteCommand(static_cast<uint8_t>(Commands::NormalModeOn));
}
void St7789::IdleModeOn() {
WriteCommand(static_cast<uint8_t>(Commands::IdleModeOn));
}
void St7789::IdleModeOff() {
WriteCommand(static_cast<uint8_t>(Commands::IdleModeOff));
}
void St7789::DisplayOn() {
WriteCommand(static_cast<uint8_t>(Commands::DisplayOn));
}
@ -198,6 +206,16 @@ void St7789::HardwareReset() {
vTaskDelay(pdMS_TO_TICKS(125));
}
void St7789::LowPowerOn() {
IdleModeOn();
NRF_LOG_INFO("[LCD] Low power mode");
}
void St7789::LowPowerOff() {
IdleModeOff();
NRF_LOG_INFO("[LCD] Normal power mode");
}
void St7789::Sleep() {
SleepIn();
nrf_gpio_cfg_default(pinDataCommand);

View file

@ -24,6 +24,8 @@ namespace Pinetime {
void DrawBuffer(uint16_t x, uint16_t y, uint16_t width, uint16_t height, const uint8_t* data, size_t size);
void LowPowerOn();
void LowPowerOff();
void Sleep();
void Wakeup();
@ -45,6 +47,8 @@ namespace Pinetime {
void DisplayInversionOn();
void NormalModeOn();
void WriteToRam(const uint8_t* data, size_t size);
void IdleModeOn();
void IdleModeOff();
void DisplayOn();
void DisplayOff();
@ -68,6 +72,8 @@ namespace Pinetime {
MemoryDataAccessControl = 0x36,
VerticalScrollDefinition = 0x33,
VerticalScrollStartAddress = 0x37,
IdleModeOff = 0x38,
IdleModeOn = 0x39,
PixelFormat = 0x3a,
VdvSet = 0xc4,
};