~aleteoryx/muditaos

9e909e3f8e7530cb5274d90b748ddee670bc550a — Wojtek Rzepecki 5 years ago 24608a3
[EGD-4952] Added stetings for battery critical level
M module-bsp/board/linux/battery-charger/battery_charger.cpp => module-bsp/board/linux/battery-charger/battery_charger.cpp +0 -1
@@ 44,7 44,6 @@ namespace bsp
            return 1;
        }
        Store::Battery::modify().level = battLevel;

        return 0;
    }


M module-services/service-db/agents/settings/SystemSettings.hpp => module-services/service-db/agents/settings/SystemSettings.hpp +4 -0
@@ 22,5 22,9 @@ namespace settings
        constexpr inline auto deviceName       = "bt_device_name";
        constexpr inline auto bondedDevices    = "bt_bonded_devices";
    } // namespace Bluetooth
    namespace Battery
    {
        constexpr inline auto criticalLevel = "batt_critical_level";
    } // namespace Battery

}; // namespace settings

M module-services/service-evtmgr/WorkerEvent.cpp => module-services/service-evtmgr/WorkerEvent.cpp +4 -5
@@ 45,11 45,6 @@ extern "C"
#include <string>      // for string
#include <vector>      // for vector

WorkerEvent::WorkerEvent(sys::Service *service) : sys::Worker(service), service(service)
{
    battery_level_check::init(service);
}

bool WorkerEvent::handleMessage(uint32_t queueID)
{



@@ 205,6 200,8 @@ bool WorkerEvent::init(std::list<sys::WorkerQueueInfo> queuesList)
    bsp::rtc_GetCurrentTimestamp(&timestamp);
    bsp::rtc_SetMinuteAlarm(timestamp);

    battery_level_check::init(service);

    return true;
}



@@ 219,6 216,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 +24 -1
@@ 7,24 7,46 @@

#include <Service/Bus.hpp>
#include <common_data/EventStore.hpp>
#include <service-db/service-db/Settings.hpp>
#include <service-db/agents/settings/SystemSettings.hpp>
#include <module-utils/Utils.hpp>

namespace battery_level_check
{
    namespace
    {
        unsigned int batteryLevelCritical = 10;
        unsigned int batteryLevelCritical = 0;

        sys::Service *parentService = nullptr;

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

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

        void batteryLevelSettingsCallback(std::string setting)
        {
            if (!setting.empty()) {
                batteryLevelCritical = utils::getNumericValue<unsigned int>(setting);
            }
        }

    } // namespace

    void init(sys::Service *service)
    {
        parentService = service;
        settings      = std::make_unique<settings::Settings>(service);
        settings->registerValueChange(settings::Battery::criticalLevel,
                                      [&](std::string value) { batteryLevelSettingsCallback(value); });
    }

    void deinit()
    {
        settings->unregisterValueChange(settings::Battery::criticalLevel);
        settings.reset();
    }

    void checkBatteryLevelCritical()


@@ 40,6 62,7 @@ namespace battery_level_check
    void setBatteryCriticalLevel(unsigned int level)
    {
        batteryLevelCritical = level;
        settings->setValue(settings::Battery::criticalLevel, std::to_string(batteryLevelCritical));
        checkBatteryLevelCritical();
    }


M module-services/service-evtmgr/battery-level-check/BatteryLevelCheck.hpp => module-services/service-evtmgr/battery-level-check/BatteryLevelCheck.hpp +2 -0
@@ 14,6 14,8 @@ namespace battery_level_check
{
    void init(sys::Service *service);

    void deinit();

    void checkBatteryLevelCritical();

    void setBatteryCriticalLevel(unsigned int level);

M module-services/service-evtmgr/service-evtmgr/WorkerEvent.hpp => module-services/service-evtmgr/service-evtmgr/WorkerEvent.hpp +1 -1
@@ 61,7 61,7 @@ class WorkerEvent : public sys::Worker
    sys::Service *service     = nullptr;

  public:
    WorkerEvent(sys::Service *service);
    WorkerEvent(sys::Service *service) : sys::Worker(service), service(service);
    /**
     * This function is responsible for creating all queues provided in the constructor.
     * When all queues are created this method creates set of queues.