Files
MuditaOS/module-services/service-cellular/api/CellularServiceAPI.cpp
Alek-Mudita e3296bb4e8 Egd 2946 add proper rejected call handling (#220)
* [EGD-2046] fixed rejected call status.
Hangup call as asnychronous call
Code clean up.

* [EGD-2964] code refactored

* [EGD-2946] missing rejexted call type name

* [EGD-2946] call app - time duration use RTC
fix #ifdef in AudioServiceApi
Minor gui fixec in call window
2020-03-12 10:46:22 +01:00

133 lines
4.3 KiB
C++

/*
* @file CellularServiceAPI.cpp
* @author Mateusz Piesta (mateusz.piesta@mudita.com)
* @date 09.07.19
* @brief
* @copyright Copyright (C) 2019 mudita.com
* @details
*/
#include "CellularServiceAPI.hpp"
#include "Service/Bus.hpp"
#include "../ServiceCellular.hpp"
#include "utf8/UTF8.hpp"
bool CellularServiceAPI::DialNumber(sys::Service* serv,const std::string& number) {
std::shared_ptr<CellularRequestMessage> msg = std::make_shared<CellularRequestMessage>(MessageType::CellularDialNumber);
msg->data = number;
auto ret = sys::Bus::SendUnicast(msg,ServiceCellular::serviceName,serv,5000);
CellularResponseMessage* response = reinterpret_cast<CellularResponseMessage*>(ret.second.get());
if((ret.first == sys::ReturnCodes::Success) && (response->retCode == true)){
return true;
}
else{
LOG_ERROR("Failed");
return false;
}
}
bool CellularServiceAPI::AnswerIncomingCall(sys::Service* serv) {
std::shared_ptr<CellularRequestMessage> msg = std::make_shared<CellularRequestMessage>(MessageType::CellularAnswerIncomingCall);
auto ret = sys::Bus::SendUnicast(msg,ServiceCellular::serviceName,serv,5000);
CellularResponseMessage* response = reinterpret_cast<CellularResponseMessage*>(ret.second.get());
if((ret.first == sys::ReturnCodes::Success) && (response->retCode == true)){
return true;
}
else{
LOG_ERROR("Failed");
return false;
}
}
void CellularServiceAPI::HangupCall(sys::Service *serv)
{
std::shared_ptr<CellularRequestMessage> msg = std::make_shared<CellularRequestMessage>(MessageType::CellularHangupCall);
sys::Bus::SendUnicast(msg, ServiceCellular::serviceName, serv);
}
std::string CellularServiceAPI::GetIMSI(sys::Service *serv, bool getFullIMSINumber)
{
std::shared_ptr<CellularRequestMessage> msg = std::make_shared<CellularRequestMessage>(MessageType::CellularGetIMSI);
auto ret = sys::Bus::SendUnicast(msg, ServiceCellular::serviceName, serv, 5000);
CellularResponseMessage *response = dynamic_cast<CellularResponseMessage *>(ret.second.get());
if (response == nullptr)
{
LOG_ERROR("CellularServiceAPI::GetIMSI failed");
return std::string();
}
if ((ret.first == sys::ReturnCodes::Success) && (response->retCode == true))
{
return response->data;
}
else
{
LOG_ERROR("CellularServiceAPI::GetIMSI failed");
return std::string();
}
}
std::string CellularServiceAPI::GetOwnNumber(sys::Service *serv)
{
std::shared_ptr<CellularRequestMessage> msg = std::make_shared<CellularRequestMessage>(MessageType::CellularGetOwnNumber);
auto ret = sys::Bus::SendUnicast(msg, ServiceCellular::serviceName, serv, 5000);
CellularResponseMessage *response = dynamic_cast<CellularResponseMessage *>(ret.second.get());
if (response == nullptr)
{
LOG_ERROR("CellularServiceAPI::GetOwnNumber failed");
return std::string();
}
if ((ret.first == sys::ReturnCodes::Success) && (response->retCode == true))
{
return response->data;
}
else
{
LOG_ERROR("CellularServiceAPI::GetOwnNumber failed");
return std::string();
}
}
void CellularServiceAPI::GetNetworkInfo(sys::Service *serv)
{
std::shared_ptr<CellularRequestMessage> msg = std::make_shared<CellularRequestMessage>(MessageType::CellularGetNetworkInfo);
sys::Bus::SendUnicast(msg, ServiceCellular::serviceName, serv);
}
void CellularServiceAPI::StartOperatorsScan(sys::Service *serv)
{
std::shared_ptr<CellularRequestMessage> msg = std::make_shared<CellularRequestMessage>(MessageType::CellularStartOperatorsScan);
sys::Bus::SendUnicast(msg, ServiceCellular::serviceName, serv);
}
bool CellularServiceAPI::SelectAntenna(sys::Service *serv, uint8_t antenna)
{
std::shared_ptr<CellularRequestMessage> msg = std::make_shared<CellularRequestMessage>(MessageType::CellularGetNetworkInfo);
msg->data = std::to_string(antenna);
auto ret = sys::Bus::SendUnicast(msg, ServiceCellular::serviceName, serv, 5000);
CellularResponseMessage *response = dynamic_cast<CellularResponseMessage *>(ret.second.get());
if (response != nullptr)
{
if ((ret.first == sys::ReturnCodes::Success) && (response->retCode == true))
{
return true;
}
}
return false;
}