// 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::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); }