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

View file

@ -127,6 +127,14 @@ void St7789::NormalModeOn() {
WriteCommand(static_cast<uint8_t>(Commands::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() { void St7789::DisplayOn() {
WriteCommand(static_cast<uint8_t>(Commands::DisplayOn)); WriteCommand(static_cast<uint8_t>(Commands::DisplayOn));
} }
@ -198,6 +206,16 @@ void St7789::HardwareReset() {
vTaskDelay(pdMS_TO_TICKS(125)); 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() { void St7789::Sleep() {
SleepIn(); SleepIn();
nrf_gpio_cfg_default(pinDataCommand); 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 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 Sleep();
void Wakeup(); void Wakeup();
@ -45,6 +47,8 @@ namespace Pinetime {
void DisplayInversionOn(); void DisplayInversionOn();
void NormalModeOn(); void NormalModeOn();
void WriteToRam(const uint8_t* data, size_t size); void WriteToRam(const uint8_t* data, size_t size);
void IdleModeOn();
void IdleModeOff();
void DisplayOn(); void DisplayOn();
void DisplayOff(); void DisplayOff();
@ -68,6 +72,8 @@ namespace Pinetime {
MemoryDataAccessControl = 0x36, MemoryDataAccessControl = 0x36,
VerticalScrollDefinition = 0x33, VerticalScrollDefinition = 0x33,
VerticalScrollStartAddress = 0x37, VerticalScrollStartAddress = 0x37,
IdleModeOff = 0x38,
IdleModeOn = 0x39,
PixelFormat = 0x3a, PixelFormat = 0x3a,
VdvSet = 0xc4, VdvSet = 0xc4,
}; };