mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-01-30 17:01:54 -05:00
Till now there was no clear way to register hanlder for message in Service, with this approach one can register function/lambda handler for Message which encurages handling messages in functions rather than in hudge switch cases. With aproach like this our Messages resembe something between Command and State pattern. In state pattern `Message` would be `Event` send, whereas Service would be `Context`.
59 lines
1.3 KiB
C++
59 lines
1.3 KiB
C++
/*
|
|
* @file PowerManager.cpp
|
|
* @author Mateusz Piesta (mateusz.piesta@mudita.com)
|
|
* @date 12.09.19
|
|
* @brief
|
|
* @copyright Copyright (C) 2019 mudita.com
|
|
* @details
|
|
*/
|
|
|
|
#include <log/log.hpp>
|
|
|
|
#include "PowerManager.hpp"
|
|
|
|
namespace sys
|
|
{
|
|
|
|
PowerManager::PowerManager()
|
|
{
|
|
lowPowerControl = bsp::LowPowerMode::Create().value_or(nullptr);
|
|
}
|
|
|
|
PowerManager::~PowerManager()
|
|
{}
|
|
|
|
int32_t PowerManager::Switch(const sys::PowerManager::Mode mode)
|
|
{
|
|
|
|
int32_t ret = 0;
|
|
switch (mode) {
|
|
case Mode::FullSpeed:
|
|
ret = lowPowerControl->Switch(bsp::LowPowerMode::Mode::FullSpeed);
|
|
break;
|
|
case Mode::LowPowerIdle:
|
|
case Mode::LowPowerRun:
|
|
case Mode::Suspend:
|
|
LOG_FATAL("LowPowerIdle temporary disabled!");
|
|
// Low power is temporary disabled it was breaking i.e. GSM
|
|
// ret = lowPowerControl->Switch(bsp::LowPowerMode::Mode::LowPowerIdle);
|
|
break;
|
|
}
|
|
|
|
if (ret == 0) {
|
|
currentPowerMode = mode;
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
int32_t PowerManager::PowerOff()
|
|
{
|
|
return lowPowerControl->PowerOff();
|
|
}
|
|
|
|
int32_t PowerManager::Reboot()
|
|
{
|
|
return lowPowerControl->Reboot();
|
|
}
|
|
|
|
} // namespace sys
|