Files
MuditaOS/module-services/service-cellular/CellularRequestHandler.cpp
Hubert Chrzaniuk 253ff8685c [EGD-4403][EGD-4412] MMI support (#1021)
* cleaned up namespace and class naming in MMI framework
* extended MMI framework to support call forwarding and
  password change MMIs
* added support for requests that have different
  number of regex capture groups
* added MMI framework tests
2020-11-19 17:02:30 +01:00

81 lines
2.4 KiB
C++

// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "service-cellular/CellularRequestHandler.hpp"
#include "service-cellular/RequestFactory.hpp"
#include "service-cellular/ServiceCellular.hpp"
#include "Service/Bus.hpp"
#include "Service/Message.hpp"
#include "Service/Timer.hpp"
#include "service-cellular/requests/CallRequest.hpp"
#include "service-cellular/requests/SupplementaryServicesRequest.hpp"
#include "service-cellular/requests/PasswordRegistrationRequest.hpp"
#include "service-cellular/requests/PinChangeRequest.hpp"
#include "service-cellular/requests/ImeiRequest.hpp"
#include "service-cellular/requests/UssdRequest.hpp"
void CellularRequestHandler::handle(ImeiRequest &request, at::Result &result)
{
if (!request.checkModemResponse(result)) {
request.setHandled(false);
return;
}
request.setHandled(true);
}
void CellularRequestHandler::handle(UssdRequest &request, at::Result &result)
{
if (!request.checkModemResponse(result)) {
request.setHandled(false);
return;
}
cellular.ussdState = ussd::State::pullRequestSent;
cellular.setUSSDTimer();
request.setHandled(true);
}
void CellularRequestHandler::handle(CallRequest &request, at::Result &result)
{
if (!request.checkModemResponse(result)) {
request.setHandled(false);
return;
}
// activate call state timer
cellular.callStateTimer->reload();
// Propagate "Ringing" notification into system
sys::Bus::SendMulticast(
std::make_shared<CellularCallMessage>(CellularCallMessage::Type::Ringing, request.getNumber()),
sys::BusChannels::ServiceCellularNotifications,
&cellular);
request.setHandled(true);
}
void CellularRequestHandler::handle(SupplementaryServicesRequest &request, at::Result &result)
{
if (!request.checkModemResponse(result)) {
request.setHandled(false);
return;
}
request.setHandled(true);
}
void CellularRequestHandler::handle(PasswordRegistrationRequest &request, at::Result &result)
{
if (!request.checkModemResponse(result)) {
request.setHandled(false);
return;
}
request.setHandled(true);
}
void CellularRequestHandler::handle(PinChangeRequest &request, at::Result &result)
{
if (!request.checkModemResponse(result)) {
request.setHandled(false);
return;
}
request.setHandled(true);
}