~aleteoryx/muditaos

7513629c0cc84cc4fd8b127bdef37ac46c873e60 — Wojtek Rzepecki 5 years ago f5a24d1
[EGD-5028] Add batt critical level db

Battery critical level sotred in
database.
M image/user/db/settings_v2_002.sql => image/user/db/settings_v2_002.sql +2 -1
@@ 21,5 21,6 @@ INSERT OR IGNORE INTO settings_tab (path, value) VALUES
    ('bt_state', '0'),
    ('bt_device_visibility', '0'),
    ('bt_device_name', 'PurePhone'),
    ('bt_bonded_devices', '');
    ('bt_bonded_devices', ''),
    ('battery_critical_level', '10');


M module-services/service-db/agents/settings/SystemSettings.hpp => module-services/service-db/agents/settings/SystemSettings.hpp +5 -0
@@ 40,4 40,9 @@ namespace settings
        constexpr inline auto apn_list = "cl_apn_list";
    } // namespace Cellular

    namespace Battery
    {
        constexpr inline auto batteryCriticalLevel = "battery_critical_level";
    } // namespace Battery

}; // namespace settings

M module-services/service-evtmgr/EventManager.cpp => module-services/service-evtmgr/EventManager.cpp +3 -2
@@ 43,7 43,8 @@
#include <SystemManager/messages/PhoneModeRequest.hpp>

EventManager::EventManager(const std::string &name)
    : sys::Service(name), screenLightControl(std::make_unique<screen_light_control::ScreenLightControl>(this))
    : sys::Service(name), settings(std::make_shared<settings::Settings>(this)),
      screenLightControl(std::make_unique<screen_light_control::ScreenLightControl>(settings, this))
{
    LOG_INFO("[%s] Initializing", name.c_str());
    alarmTimestamp = 0;


@@ 322,7 323,7 @@ sys::ReturnCodes EventManager::InitHandler()
    list.push_back(qLightSensor);
    list.push_back(qChargerDetect);

    EventWorker->init(list);
    EventWorker->init(list, settings);
    EventWorker->run();

    return sys::ReturnCodes::Success;

M module-services/service-evtmgr/WorkerEvent.cpp => module-services/service-evtmgr/WorkerEvent.cpp +8 -2
@@ 225,11 225,15 @@ bool WorkerEvent::init(std::list<sys::WorkerQueueInfo> queuesList)
    bsp::rtc_GetCurrentTimestamp(&timestamp);
    bsp::rtc_SetMinuteAlarm(timestamp);

    battery_level_check::init(service);

    return true;
}

void WorkerEvent::init(std::list<sys::WorkerQueueInfo> queuesList, std::shared_ptr<settings::Settings> settings)
{
    init(queuesList);
    battery_level_check::init(service, settings);
}

bool WorkerEvent::deinit(void)
{
    Worker::deinit();


@@ 241,6 245,8 @@ bool WorkerEvent::deinit(void)
    bsp::eink_frontlight::deinit();
    bsp::light_sensor::deinit();

    battery_level_check::deinit();

    return true;
}


M module-services/service-evtmgr/battery-level-check/BatteryLevelCheck.cpp => module-services/service-evtmgr/battery-level-check/BatteryLevelCheck.cpp +19 -5
@@ 4,8 4,9 @@
#include "BatteryLevelCheck.hpp"
#include "service-evtmgr/BatteryMessages.hpp"
#include "SystemManager/Constants.hpp"

#include <agents/settings/SystemSettings.hpp>
#include <common_data/EventStore.hpp>
#include <Utils.hpp>

namespace battery_level_check
{


@@ 20,12 21,12 @@ namespace battery_level_check

        CheckState state = CheckState::InitialCheck;

        constexpr inline auto DEFAULT_LEVEL = 10;

        unsigned int batteryLevelCritical = DEFAULT_LEVEL;
        unsigned int batteryLevelCritical = 0;

        sys::Service *parentService = nullptr;

        std::shared_ptr<settings::Settings> settings = nullptr;

        bool isBatteryLevelCritical(unsigned int level)
        {
            return level < batteryLevelCritical;


@@ 44,9 45,20 @@ namespace battery_level_check
        }
    } // namespace

    void init(sys::Service *service)
    void init(sys::Service *service, std::shared_ptr<settings::Settings> &setts)
    {
        parentService = service;
        settings      = setts;
        settings->registerValueChange(
            settings::Battery::batteryCriticalLevel,
            [&](const std::string &value) { batteryLevelCritical = utils::getNumericValue<unsigned int>(value); },
            settings::SettingsScope::Global);
    }

    void deinit()
    {
        settings->unregisterValueChange(settings::Battery::batteryCriticalLevel, settings::SettingsScope::Global);
        settings.reset();
    }

    void checkBatteryLevelCritical()


@@ 86,6 98,8 @@ namespace battery_level_check
    void setBatteryCriticalLevel(unsigned int level)
    {
        batteryLevelCritical = level;
        settings->setValue(
            settings::Battery::batteryCriticalLevel, utils::to_string(level), settings::SettingsScope::Global);
        checkBatteryLevelCritical();
    }


M module-services/service-evtmgr/battery-level-check/BatteryLevelCheck.hpp => module-services/service-evtmgr/battery-level-check/BatteryLevelCheck.hpp +4 -1
@@ 4,6 4,7 @@
#pragma once

#include <Service/Service.hpp>
#include <service-db/service-db/Settings.hpp>

namespace sys
{


@@ 12,7 13,9 @@ namespace sys

namespace battery_level_check
{
    void init(sys::Service *service);
    void init(sys::Service *service, std::shared_ptr<settings::Settings> &setts);

    void deinit();

    void checkBatteryLevelCritical();


M module-services/service-evtmgr/screen-light-control/ScreenLightControl.cpp => module-services/service-evtmgr/screen-light-control/ScreenLightControl.cpp +2 -2
@@ 33,8 33,8 @@ namespace screen_light_control
        }
    } // namespace

    ScreenLightControl::ScreenLightControl(sys::Service *parent)
        : settings(std::make_unique<settings::Settings>(parent))
    ScreenLightControl::ScreenLightControl(std::shared_ptr<settings::Settings> settings, sys::Service *parent)
        : settings(settings)
    {
        controlTimer = std::make_unique<sys::Timer>("LightControlTimer", parent, CONTROL_TIMER_MS);
        readoutTimer = std::make_unique<sys::Timer>("LightSensorReadoutTimer", parent, READOUT_TIMER_MS);

M module-services/service-evtmgr/screen-light-control/ScreenLightControl.hpp => module-services/service-evtmgr/screen-light-control/ScreenLightControl.hpp +2 -2
@@ 56,7 56,7 @@ namespace screen_light_control
    class ScreenLightControl
    {
      public:
        explicit ScreenLightControl(sys::Service *parent);
        explicit ScreenLightControl(std::shared_ptr<settings::Settings> settings, sys::Service *parent);
        ~ScreenLightControl();

        void processRequest(Action action, const Parameters &params);


@@ 98,7 98,7 @@ namespace screen_light_control
        screen_light_control::ScreenLightMode automaticMode        = ScreenLightMode::Manual;
        bsp::eink_frontlight::BrightnessPercentage brightnessValue = 0.0;

        std::unique_ptr<settings::Settings> settings;
        std::shared_ptr<settings::Settings> settings;
    };

} // namespace screen_light_control

M module-services/service-evtmgr/service-evtmgr/EventManager.hpp => module-services/service-evtmgr/service-evtmgr/EventManager.hpp +2 -0
@@ 31,6 31,8 @@ class EventManager : public sys::Service
    void GetNextAlarmTimestamp(time_t timestamp);
    bool processKeypadBacklightRequest(bsp::keypad_backlight::Action act);

    std::shared_ptr<settings::Settings> settings;

  protected:
    std::unique_ptr<WorkerEvent> EventWorker;
    // application where key events are sent. This is also only application that is allowed to change keyboard long

M module-services/service-evtmgr/service-evtmgr/WorkerEvent.hpp => module-services/service-evtmgr/service-evtmgr/WorkerEvent.hpp +2 -0
@@ 70,6 70,8 @@ class WorkerEvent : public sys::Worker
    virtual bool init(std::list<sys::WorkerQueueInfo> queuesList) override;
    virtual bool deinit() override;

    void init(std::list<sys::WorkerQueueInfo> queuesList, std::shared_ptr<settings::Settings> settings);

    /**
     * This method is called from thread when new message arrives in queue.
     * @param queueID Index of the queue in the queues vector.