From c057799904af66f397d28a2a2cd667b0b1c1c6e2 Mon Sep 17 00:00:00 2001 From: Lefucjusz Date: Wed, 25 Jan 2023 15:47:55 +0100 Subject: [PATCH] [MOS-887] Fix black screen left after power off Fix of the issue that after powering off the phone with dark mode enabled the screen remained black instead of being cleared to white. --- .../board/linux/eink/LinuxEinkDisplay.cpp | 15 +++++------ .../board/linux/eink/LinuxEinkDisplay.hpp | 4 ++- .../board/rt1051/bsp/eink/EinkDisplay.cpp | 10 +++++--- .../board/rt1051/bsp/eink/EinkDisplay.hpp | 4 ++- .../include/hal/eink/AbstractEinkDisplay.hpp | 3 ++- module-services/service-eink/ServiceEink.cpp | 25 ++++++++++++++----- module-services/service-eink/ServiceEink.hpp | 6 ++++- 7 files changed, 46 insertions(+), 21 deletions(-) diff --git a/module-bsp/board/linux/eink/LinuxEinkDisplay.cpp b/module-bsp/board/linux/eink/LinuxEinkDisplay.cpp index d3a59331d47f728327349bf8d9513c3c9ffff668..c137c76e31346aef78227dc0f032be254c4922c8 100644 --- a/module-bsp/board/linux/eink/LinuxEinkDisplay.cpp +++ b/module-bsp/board/linux/eink/LinuxEinkDisplay.cpp @@ -1,11 +1,6 @@ -// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md -#include - -#include - -#include #include #include "LinuxEinkDisplay.hpp" @@ -47,6 +42,11 @@ namespace hal::eink displayColorMode = mode; } + EinkDisplayColorMode LinuxEinkDisplay::getMode() const noexcept + { + return displayColorMode; + } + EinkStatus LinuxEinkDisplay::showImageUpdate(const std::vector &updateFrames, const std::uint8_t *frameBuffer) { @@ -54,8 +54,9 @@ namespace hal::eink const std::uint8_t *buffer = frameBuffer + frame.pos_y * frame.size.width; const auto status = translateStatus( EinkUpdateFrame({frame.pos_x, frame.pos_y, frame.size.width, frame.size.height}, buffer)); - if (status != EinkStatus::EinkOK) + if (status != EinkStatus::EinkOK) { return status; + } } return EinkStatus::EinkOK; } diff --git a/module-bsp/board/linux/eink/LinuxEinkDisplay.hpp b/module-bsp/board/linux/eink/LinuxEinkDisplay.hpp index 0950afcd8fc5f3d9d772e3d707e00638677a8068..28bd469cd750379eb5064950ecd23febfeebc59e 100644 --- a/module-bsp/board/linux/eink/LinuxEinkDisplay.hpp +++ b/module-bsp/board/linux/eink/LinuxEinkDisplay.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once @@ -15,6 +15,8 @@ namespace hal::eink private: void setMode(const EinkDisplayColorMode mode) noexcept override; + EinkDisplayColorMode getMode() const noexcept override; + EinkStatus showImageUpdate(const std::vector &updateFrames, const std::uint8_t *frameBuffer) override; EinkStatus showImageRefresh(const EinkFrame &refreshFrame, const EinkRefreshMode refreshMode) override; diff --git a/module-bsp/board/rt1051/bsp/eink/EinkDisplay.cpp b/module-bsp/board/rt1051/bsp/eink/EinkDisplay.cpp index e04a8183bd11ac6f761331fa1516ca92b48e35be..c5234dee3b438a8f8f55a1f74ebfc3ca75860b95 100644 --- a/module-bsp/board/rt1051/bsp/eink/EinkDisplay.cpp +++ b/module-bsp/board/rt1051/bsp/eink/EinkDisplay.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "EinkDisplay.hpp" @@ -283,14 +283,11 @@ namespace hal::eink switch (currentWaveform.mode) { case EinkWaveformA2: - [[fallthrough]]; case EinkWaveformDU2: temperatureFine = abs(newTemperature - currentWaveform.temperature) <= 3; break; case EinkWaveformINIT: - [[fallthrough]]; case EinkWaveformGLD16: - [[fallthrough]]; case EinkWaveformGC16: temperatureFine = abs(newTemperature - currentWaveform.temperature) <= 2; break; @@ -365,6 +362,11 @@ namespace hal::eink displayMode = mode; } + EinkDisplayColorMode EinkDisplay::getMode() const noexcept + { + return displayMode; + } + std::int32_t EinkDisplay::getLastTemperature() const noexcept { return currentWaveform.temperature; diff --git a/module-bsp/board/rt1051/bsp/eink/EinkDisplay.hpp b/module-bsp/board/rt1051/bsp/eink/EinkDisplay.hpp index 9002e03b06600f246a809ec04ab05e2c24749e5c..7d151b0c030c50af911327de54730cc7d331571e 100644 --- a/module-bsp/board/rt1051/bsp/eink/EinkDisplay.hpp +++ b/module-bsp/board/rt1051/bsp/eink/EinkDisplay.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once @@ -26,6 +26,8 @@ namespace hal::eink ~EinkDisplay() noexcept; void setMode(EinkDisplayColorMode mode) noexcept override; + EinkDisplayColorMode getMode() const noexcept override; + EinkStatus showImageUpdate(const std::vector &updateFrames, const std::uint8_t *frameBuffer) override; EinkStatus showImageRefresh(const EinkFrame &refreshFrame, const EinkRefreshMode refreshMode) override; diff --git a/module-bsp/hal/include/hal/eink/AbstractEinkDisplay.hpp b/module-bsp/hal/include/hal/eink/AbstractEinkDisplay.hpp index 7282681ec26fdbdc669acbc7bec3c9d8f73dbf0f..77b6cd6fcd041da4acaf3090740978057f92a39b 100644 --- a/module-bsp/hal/include/hal/eink/AbstractEinkDisplay.hpp +++ b/module-bsp/hal/include/hal/eink/AbstractEinkDisplay.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once @@ -69,6 +69,7 @@ namespace hal::eink virtual ~AbstractEinkDisplay() = default; virtual void setMode(const EinkDisplayColorMode mode) noexcept = 0; + virtual EinkDisplayColorMode getMode() const noexcept = 0; virtual EinkStatus showImageUpdate(const std::vector &updateFrames, const std::uint8_t *frameBuffer) = 0; virtual EinkStatus showImageRefresh(const EinkFrame &refreshFrame, const EinkRefreshMode refreshMode) = 0; diff --git a/module-services/service-eink/ServiceEink.cpp b/module-services/service-eink/ServiceEink.cpp index f89f1c604896e266d4dfe0af8479df914cb6f6eb..c552a68cd070aa9be9b0f37853a54aaa35104baa 100644 --- a/module-services/service-eink/ServiceEink.cpp +++ b/module-services/service-eink/ServiceEink.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include @@ -6,7 +6,6 @@ #include "internal/StaticData.hpp" #include "messages/EinkModeMessage.hpp" #include "messages/PrepareDisplayEarlyRequest.hpp" -#include