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(×tamp);
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 ¶ms);
@@ 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.