~aleteoryx/muditaos

148b40f30f8d0ba8a4c626ceb3fc58ca14c3544e — Wojtek Rzepecki 4 years ago 4f8e364
[BH-1198] Fix critical battery level behavior

Fix of critcal battery behavior for Bell
M module-bsp/board/rt1051/bellpx/hal/battery_charger/BatteryCharger.cpp => module-bsp/board/rt1051/bellpx/hal/battery_charger/BatteryCharger.cpp +0 -4
@@ 19,7 19,6 @@ namespace hal::battery
        bsp::fuel_gauge::init(queueBatteryHandle);
        bsp::battery_charger::init(queueBatteryHandle);

        Store::Battery::modify().state = Store::Battery::State::Discharging;
        Store::Battery::modify().level = static_cast<unsigned int>(bsp::fuel_gauge::getBatteryLevel());
    }



@@ 36,9 35,6 @@ namespace hal::battery
    {
        bsp::battery_charger::getChargeStatus();

        if (notification == bsp::fuel_gauge::FuelGaugeAlert) {
            Store::Battery::modify().levelState = Store::Battery::LevelState::CriticalNotCharging;
        }

        if (notification == bsp::fuel_gauge::FuelGaugeUpdate) {
            Store::Battery::modify().level = bsp::fuel_gauge::getBatteryLevel();

M module-services/service-evtmgr/battery-level-check/BatteryLevelCheck.cpp => module-services/service-evtmgr/battery-level-check/BatteryLevelCheck.cpp +4 -2
@@ 44,7 44,8 @@ namespace battery_level_check
            bool operator()() const
            {
                return Store::Battery::get().level < batteryLevelCritical &&
                       Store::Battery::get().state != Store::Battery::State::Charging;
                       Store::Battery::get().state != Store::Battery::State::Charging &&
                       Store::Battery::get().state != Store::Battery::State::ChargingDone;
            }
        } isCriticalNotCharging;
        struct isCriticalCharging


@@ 52,7 53,8 @@ namespace battery_level_check
            bool operator()() const
            {
                return Store::Battery::get().level < batteryLevelCritical &&
                       Store::Battery::get().state == Store::Battery::State::Charging;
                       (Store::Battery::get().state == Store::Battery::State::Charging ||
                        Store::Battery::get().state == Store::Battery::State::ChargingDone);
            }
        } isCriticalCharging;
        struct isShutdown

M products/BellHybrid/apps/application-bell-main/ApplicationBellMain.cpp => products/BellHybrid/apps/application-bell-main/ApplicationBellMain.cpp +1 -1
@@ 179,7 179,7 @@ namespace app
            data->ignoreCurrentWindowOnStack = true;
        }

        if (lowBatteryState->isActive()) {
        if (lowBatteryState->isActive() && !lowBatteryState->isCharging()) {
            blockAllPopups = true;
            switchWindow(gui::window::name::bell_battery_shutdown, std::move(data));
        }

M products/BellHybrid/services/appmgr/ApplicationManager.cpp => products/BellHybrid/services/appmgr/ApplicationManager.cpp +17 -0
@@ 66,4 66,21 @@ namespace app::manager
        connect(typeid(BatteryShutdown), convertibleToActionHandler);
        connect(typeid(BedtimeNotification), convertibleToActionHandler);
    }

    void ApplicationManager::handleStart(StartAllowedMessage *msg)
    {
        switch (msg->getStartupType()) {
        case StartupType::Regular:
            [[fallthrough]];
        case StartupType::LowBatteryCharging:
            ApplicationManagerCommon::handleStart(msg);
            break;
        case StartupType::LowBattery:
            handleSwitchApplication(
                std::make_unique<SwitchRequest>(
                    service::name::appmgr, app::applicationBellName, gui::window::name::bell_battery_shutdown, nullptr)
                    .get());
            break;
        }
    }
} // namespace app::manager

M products/BellHybrid/services/appmgr/include/appmgr/ApplicationManager.hpp => products/BellHybrid/services/appmgr/include/appmgr/ApplicationManager.hpp +1 -0
@@ 24,5 24,6 @@ namespace app::manager
        auto startApplication(ApplicationHandle &app) -> bool override;
        auto resolveHomeApplication() -> std::string override;
        auto registerMessageHandlers() -> void override;
        void handleStart(StartAllowedMessage *msg) override;
    };
} // namespace app::manager

M products/BellHybrid/sys/SystemManager.cpp => products/BellHybrid/sys/SystemManager.cpp +7 -0
@@ 51,6 51,13 @@ namespace sys
        SystemManagerCommon::batteryShutdownLevelAction();
    }

    void SystemManager::batteryNormalLevelAction()
    {
        SystemManagerCommon::batteryNormalLevelAction();
        auto battNormalMsg = std::make_shared<CriticalBatteryLevelNotification>(false);
        bus.sendUnicast(std::move(battNormalMsg), service::name::appmgr);
    }

    void SystemManager::batteryCriticalLevelAction(bool charging)
    {
        SystemManagerCommon::batteryCriticalLevelAction(charging);

M products/BellHybrid/sys/include/sys/SystemManager.hpp => products/BellHybrid/sys/include/sys/SystemManager.hpp +2 -0
@@ 21,6 21,8 @@ namespace sys

        void batteryShutdownLevelAction() override;

        void batteryNormalLevelAction() override;

        void batteryCriticalLevelAction(bool charging) override;
    };
} // namespace sys