mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-07-04 05:06:58 -04:00
132 lines
4.4 KiB
C++
132 lines
4.4 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;
|
|
}
|