From 69593bd0be2200c50eedb3eac0a2c4993fac3ced Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Thu, 25 Apr 2019 09:43:44 +0200 Subject: [PATCH] [apps/on_boarding] Visually hide the LCD POST to the user By initing the backlight after the test, not before. --- apps/on_boarding/logo_controller.cpp | 4 ++-- apps/on_boarding/power_on_self_test.cpp | 12 +++++++++++- ion/include/ion/backlight.h | 2 ++ ion/src/device/shared/drivers/backlight.cpp | 14 ++++++++++---- ion/src/device/shared/drivers/board.cpp | 2 ++ ion/src/shared/dummy/backlight.cpp | 8 +++++--- 6 files changed, 32 insertions(+), 10 deletions(-) diff --git a/apps/on_boarding/logo_controller.cpp b/apps/on_boarding/logo_controller.cpp index 9b94cc49e..529ece747 100644 --- a/apps/on_boarding/logo_controller.cpp +++ b/apps/on_boarding/logo_controller.cpp @@ -6,7 +6,7 @@ namespace OnBoarding { LogoController::LogoController() : ViewController(nullptr), - Timer(10), + Timer(15), m_logoView(), m_previousLEDColor(KDColorBlack) { @@ -18,8 +18,8 @@ bool LogoController::fire() { } void LogoController::viewWillAppear() { - ViewController::viewWillAppear(); m_previousLEDColor = PowerOnSelfTest::Perform(); + ViewController::viewWillAppear(); } void LogoController::viewDidDisappear() { diff --git a/apps/on_boarding/power_on_self_test.cpp b/apps/on_boarding/power_on_self_test.cpp index 483013c17..7cf611b4b 100644 --- a/apps/on_boarding/power_on_self_test.cpp +++ b/apps/on_boarding/power_on_self_test.cpp @@ -1,7 +1,9 @@ #include "power_on_self_test.h" +#include #include #include #include +#include namespace OnBoarding { @@ -41,7 +43,15 @@ bool PowerOnSelfTest::LCDDataOK() { return false; } } - return TestDisplayBlackWhite(); + bool result = TestDisplayBlackWhite(); + /* If EPSILON_ONBOARDING_APP == 1, the backlight is not inited in + * Ion::Device::Board::initPeripherals, so that the LCD test is not visible to + * the user. We thus need to init the backlight after the test. Before, we + * push a white rect on the display to hide redrawing glitches. */ + Ion::Display::pushRectUniform(KDRect(KDPointZero, Ion::Display::Width, Ion::Display::Height), KDColorWhite); + Ion::Timing::msleep(100); + Ion::Backlight::init(); + return result; } void PowerOnSelfTest::ColorPixelBuffer(KDColor * pixels, int numberOfPixels, KDColor c) { diff --git a/ion/include/ion/backlight.h b/ion/include/ion/backlight.h index 8c650128e..751b48ea9 100644 --- a/ion/include/ion/backlight.h +++ b/ion/include/ion/backlight.h @@ -7,6 +7,8 @@ namespace Ion { namespace Backlight { constexpr uint8_t MaxBrightness = 240; +void init(); +void shutdown(); void setBrightness(uint8_t b); uint8_t brightness(); diff --git a/ion/src/device/shared/drivers/backlight.cpp b/ion/src/device/shared/drivers/backlight.cpp index a751ce22b..4cd622ace 100644 --- a/ion/src/device/shared/drivers/backlight.cpp +++ b/ion/src/device/shared/drivers/backlight.cpp @@ -14,14 +14,20 @@ namespace Ion { namespace Backlight { -using namespace Ion::Device::Backlight; - void setBrightness(uint8_t b) { - setLevel(b >> 4); + Ion::Device::Backlight::setLevel(b >> 4); } uint8_t brightness() { - return level() << 4; + return Ion::Device::Backlight::level() << 4; +} + +void init() { + Ion::Device::Backlight::init(); +} + +void shutdown() { + Ion::Device::Backlight::shutdown(); } } diff --git a/ion/src/device/shared/drivers/board.cpp b/ion/src/device/shared/drivers/board.cpp index 2b17cbd9b..20f8e4290 100644 --- a/ion/src/device/shared/drivers/board.cpp +++ b/ion/src/device/shared/drivers/board.cpp @@ -32,7 +32,9 @@ void initFPU() { void initPeripherals() { Display::init(); +#if EPSILON_ONBOARDING_APP == 0 Backlight::init(); +#endif Keyboard::init(); LED::init(); Battery::init(); diff --git a/ion/src/shared/dummy/backlight.cpp b/ion/src/shared/dummy/backlight.cpp index 6c7a0d02c..889495e79 100644 --- a/ion/src/shared/dummy/backlight.cpp +++ b/ion/src/shared/dummy/backlight.cpp @@ -4,6 +4,8 @@ uint8_t Ion::Backlight::brightness() { return 0; } -void Ion::Backlight::setBrightness(uint8_t b) { - return; -} +void Ion::Backlight::setBrightness(uint8_t b) {} + +void Ion::Backlight::init() {} + +void Ion::Backlight::shutdown() {}