~aleteoryx/muditaos

5f861a4c3f674456e1783483c4e3e51056655377 — Tomasz Rybarski 4 years ago 9afdfa4
[BH-1372] Fix BellHarmony turn off

Fix BellHarmony turn off in Charging state
M module-sys/SystemManager/SystemManagerCommon.cpp => module-sys/SystemManager/SystemManagerCommon.cpp +2 -17
@@ 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

#include <SystemManager/SystemManagerCommon.hpp>


@@ 154,22 154,7 @@ namespace sys
        }

        while (state == State::Shutdown) {
            // check if we are discharging - if so -> shutdown
            if (Store::Battery::get().state == Store::Battery::State::Discharging) {
                set(State::ShutdownReady);
            }
            else {
                // await from EvtManager for info that red key was pressed / timeout
                auto msg = mailbox.pop();
                if (!msg) {
                    continue;
                }
                if (msg->sender != service::name::evt_manager) {
                    LOG_ERROR("Ignored msg from: %s on shutdown", msg->sender.c_str());
                    continue;
                }
                msg->Execute(this);
            }
            handleShutdown();
        }

        DestroySystemService(service::name::evt_manager, this);

M module-sys/SystemManager/include/SystemManager/SystemManagerCommon.hpp => module-sys/SystemManager/include/SystemManager/SystemManagerCommon.hpp +2 -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


@@ 132,6 132,7 @@ namespace sys
        virtual void batteryNormalLevelAction();
        virtual void batteryCriticalLevelAction(bool charging);
        virtual void batteryShutdownLevelAction();
        virtual void handleShutdown() = 0;

      private:
        MessagePointer DataReceivedHandler(DataMessage *msg, ResponseMessage *resp) override;

M products/BellHybrid/sys/SystemManager.cpp => products/BellHybrid/sys/SystemManager.cpp +6 -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

#include <sys/SystemManager.hpp>


@@ 50,4 50,9 @@ namespace sys
        bus.sendUnicast(msg, service::name::appmgr);
        SystemManagerCommon::batteryShutdownLevelAction();
    }

    void SystemManager::handleShutdown()
    {
        set(State::ShutdownReady);
    }
} // namespace sys

M products/BellHybrid/sys/include/sys/SystemManager.hpp => products/BellHybrid/sys/include/sys/SystemManager.hpp +3 -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


@@ 20,5 20,7 @@ namespace sys
        auto handleAlarmActivationStatusChangeRequest(AlarmActivationStatusChangeRequest *request) -> MessagePointer;

        void batteryShutdownLevelAction() override;

        void handleShutdown() override;
    };
} // namespace sys

M products/PurePhone/sys/SystemManager.cpp => products/PurePhone/sys/SystemManager.cpp +21 -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

#include <sys/SystemManager.hpp>


@@ 143,4 143,24 @@ namespace sys
        auto msg = std::make_shared<CriticalBatteryLevelNotification>(true, charging);
        bus.sendUnicast(std::move(msg), service::name::appmgr);
    }

    void SystemManager::handleShutdown()
    {
        // check if we are discharging - if so -> shutdown
        if (Store::Battery::get().state == Store::Battery::State::Discharging) {
            set(State::ShutdownReady);
        }
        else {
            // await from EvtManager for info that red key was pressed / timeout
            auto msg = mailbox.pop();
            if (!msg) {
                return;
            }
            if (msg->sender != service::name::evt_manager) {
                LOG_ERROR("Ignored msg from: %s on shutdown", msg->sender.c_str());
                return;
            }
            msg->Execute(this);
        }
    }
} // namespace sys

M products/PurePhone/sys/include/sys/SystemManager.hpp => products/PurePhone/sys/include/sys/SystemManager.hpp +2 -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


@@ 32,6 32,7 @@ namespace sys
        MessagePointer enableTethering(TetheringEnabledResponse *response);
        void batteryNormalLevelAction() override;
        void batteryCriticalLevelAction(bool charging) override;
        void handleShutdown() override;

        std::unique_ptr<phone_modes::Subject> phoneModeSubject;
    };

M products/PurePhone/test/test-settings/CMakeLists.txt => products/PurePhone/test/test-settings/CMakeLists.txt +1 -0
@@ 7,6 7,7 @@ add_catch2_executable(
        LIBS
            db
            evtmgr
            sys
            module-audio
            module-cellular
            module-vfs

M products/PurePhone/test/test-settings/test-service-db-settings-api.cpp => products/PurePhone/test/test-settings/test-service-db-settings-api.cpp +3 -4
@@ 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

#include <catch2/catch.hpp>


@@ 10,7 10,7 @@

#include <db/ServiceDB.hpp>
#include <evtmgr/EventManager.hpp>
#include <SystemManager/SystemManagerCommon.hpp>
#include <sys/SystemManager.hpp>

#include <service-evtmgr/Constants.hpp>



@@ 41,8 41,7 @@ TEST_CASE("SettingsApi")
{
    SECTION("variable/profile/mode register/set/get/unregister")
    {
        auto manager =
            std::make_shared<sys::SystemManagerCommon>(std::vector<std::unique_ptr<sys::BaseServiceCreator>>{});
        auto manager = std::make_shared<sys::SystemManager>(std::vector<std::unique_ptr<sys::BaseServiceCreator>>{});
        std::shared_ptr<settings::MyService> varWritter;
        std::shared_ptr<settings::MyService> varReader;
        std::shared_ptr<settings::AppTest> testVar;