Files
MuditaOS/module-sys/SystemManager/PowerManager.cpp
Adam Dobrowolski 2cee195e09 EGD-3056 subscribtion based execution (on typeid) added and works fine
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`.
2020-04-15 16:50:19 +02:00

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