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 ¶ms)
+ {
+ if (backlightType == Type::Frontlight) {
+ processScreenRequest(action, params);
+ }
+ }
+
void Handler::processScreenRequest(screen_light_control::Action action,
const screen_light_control::Parameters ¶ms)
{
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 ¶ms);
+
void processScreenRequest(screen_light_control::Action action,
const screen_light_control::Parameters ¶ms) 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(); })}
{}
};