~aleteoryx/muditaos

50b44a6da87ad4a8a13175b249b932bfe622016c — Dawid Wojtas 3 years ago cccef71
[BH-1574][BH-1597] Improvement of bedside lamp

Improve bedside lamp behavior in alarm
application. Change frontlight long press
from 3 seconds to 2 in order to activate
bedside lamp.
M harmony_changelog.md => harmony_changelog.md +1 -0
@@ 7,6 7,7 @@
### Fixed

* Fixed resetting meditation settings with deep press.
* Fixed bedside lamp in alarm application

### Added
#### PowerNap:

M module-services/service-evtmgr/service-evtmgr/ScreenLightControlMessage.hpp => module-services/service-evtmgr/service-evtmgr/ScreenLightControlMessage.hpp +23 -1
@@ 1,4 1,4 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#pragma once


@@ 11,6 11,28 @@

namespace sevm
{
    class ScreenLightSettingsControlMessage : public sys::DataMessage
    {
        const screen_light_control::Action action;
        std::optional<screen_light_control::Parameters> params;

      public:
        explicit ScreenLightSettingsControlMessage(
            screen_light_control::Action act, std::optional<screen_light_control::Parameters> params = std::nullopt)
            : sys::DataMessage(MessageType::ScreenLightControlAction), action(act), params{std::move(params)}
        {}

        [[nodiscard]] auto getAction() const noexcept -> screen_light_control::Action
        {
            return action;
        }

        [[nodiscard]] auto getParams() const noexcept -> const std::optional<screen_light_control::Parameters> &
        {
            return params;
        }
    };

    class ScreenLightControlMessage : public sys::DataMessage
    {
        const screen_light_control::Action action;

M products/BellHybrid/apps/application-bell-settings/models/FrontlightModel.cpp => products/BellHybrid/apps/application-bell-settings/models/FrontlightModel.cpp +6 -6
@@ 56,17 56,17 @@ namespace app::bell_settings
    }
    void FrontlightModel::setStatus(bool onOff)
    {
        app->bus.sendUnicast(std::make_shared<sevm::ScreenLightControlMessage>(
        app->bus.sendUnicast(std::make_shared<sevm::ScreenLightSettingsControlMessage>(
                                 onOff ? screen_light_control::Action::turnOn : screen_light_control::Action::turnOff),
                             service::name::evt_manager);
    }
    void FrontlightModel::setMode(screen_light_control::ScreenLightMode mode)
    {
        app->bus.sendUnicast(
            std::make_shared<sevm::ScreenLightControlMessage>(mode == screen_light_control::ScreenLightMode::Automatic
                                                                  ? screen_light_control::Action::enableAutomaticMode
                                                                  : screen_light_control::Action::disableAutomaticMode),
            service::name::evt_manager);
        app->bus.sendUnicast(std::make_shared<sevm::ScreenLightSettingsControlMessage>(
                                 mode == screen_light_control::ScreenLightMode::Automatic
                                     ? screen_light_control::Action::enableAutomaticMode
                                     : screen_light_control::Action::disableAutomaticMode),
                             service::name::evt_manager);
    }
    void FrontlightModel::setBrightness(Brightness value)
    {

M products/BellHybrid/services/evtmgr/EventManager.cpp => products/BellHybrid/services/evtmgr/EventManager.cpp +8 -1
@@ 87,10 87,17 @@ void EventManager::initProductEvents()
{
    backlightHandler.init();

    connect(typeid(sevm::ScreenLightSettingsControlMessage), [&](sys::Message *msgl) {
        auto *m           = static_cast<sevm::ScreenLightSettingsControlMessage *>(msgl);
        const auto params = m->getParams();
        backlightHandler.processScreenRequest(m->getAction(), params.value_or(screen_light_control::Parameters()));
        return sys::msgHandled();
    });

    connect(typeid(sevm::ScreenLightControlMessage), [&](sys::Message *msgl) {
        auto *m           = static_cast<sevm::ScreenLightControlMessage *>(msgl);
        const auto params = m->getParams();
        backlightHandler.processScreenRequest(m->getAction(), params.value_or(screen_light_control::Parameters()));
        backlightHandler.screenRequest(m->getAction(), params.value_or(screen_light_control::Parameters()));
        return sys::msgHandled();
    });


M products/BellHybrid/services/evtmgr/backlight-handler/BacklightHandler.cpp => products/BellHybrid/services/evtmgr/backlight-handler/BacklightHandler.cpp +8 -3
@@ 26,9 26,7 @@ namespace backlight
                        parent,
                        [this](sys::Timer &t) {
                            if (this->screenLightController->isLightOn()) {
                                if (backlightType == Type::BedsideLamp) {
                                    backlightType = Type::Frontlight;
                                }
                                backlightType = Type::Frontlight;
                                this->screenLightController->processRequest(screen_light_control::Action::turnOff);
                            }
                        })


@@ 103,6 101,13 @@ namespace backlight
        backlightType = type;
    }

    void Handler::screenRequest(screen_light_control::Action action, const screen_light_control::Parameters &params)
    {
        if (backlightType == Type::Frontlight) {
            processScreenRequest(action, params);
        }
    }

    void Handler::processScreenRequest(screen_light_control::Action action,
                                       const screen_light_control::Parameters &params)
    {

M products/BellHybrid/services/evtmgr/include/evtmgr/backlight-handler/BacklightHandler.hpp => products/BellHybrid/services/evtmgr/include/evtmgr/backlight-handler/BacklightHandler.hpp +2 -0
@@ 39,6 39,8 @@ namespace backlight

        void handleScreenLight(Type type);

        void screenRequest(screen_light_control::Action action, const screen_light_control::Parameters &params);

        void processScreenRequest(screen_light_control::Action action,
                                  const screen_light_control::Parameters &params) override;


M products/BellHybrid/services/evtmgr/internal/key_sequences/BedsideLampSequence.hpp => products/BellHybrid/services/evtmgr/internal/key_sequences/BedsideLampSequence.hpp +1 -1
@@ 11,6 11,6 @@ class BedsideLampSequence : public GenericLongPressSequence<KeyMap::Frontlight>
  public:
    explicit BedsideLampSequence(sys::Service &service)
        : GenericLongPressSequence<KeyMap::Frontlight>{sys::TimerFactory::createSingleShotTimer(
              &service, "lampseq", std::chrono::milliseconds{3000}, [this](auto &) { handleTimer(); })}
              &service, "lampseq", std::chrono::milliseconds{2000}, [this](auto &) { handleTimer(); })}
    {}
};