From 70fe3a401e8ee9e04217d3a0820b6b2d3e0de2b4 Mon Sep 17 00:00:00 2001 From: Kuba Kleczkowski Date: Mon, 19 Dec 2022 15:54:32 +0100 Subject: [PATCH] [MOS-813] Emergency calling fixed User is now able to make emergency call with no sim card inserted. RF functionality in modem is still disabled until sim card is selected by user. --- module-cellular/modem/mux/CellularMux.cpp | 4 ++-- module-cellular/modem/mux/CellularMux.h | 2 +- module-services/service-cellular/RequestFactory.cpp | 4 ++-- module-services/service-cellular/ServiceCellular.cpp | 9 ++++++++- .../service-cellular/tests/unittest_request_factory.cpp | 9 +-------- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/module-cellular/modem/mux/CellularMux.cpp b/module-cellular/modem/mux/CellularMux.cpp index 8331751efb9fb84c1a6c7576bc543a32400292d8..cdd0f52de47951f64bfd49dcced060f24b3b5ea2 100644 --- a/module-cellular/modem/mux/CellularMux.cpp +++ b/module-cellular/modem/mux/CellularMux.cpp @@ -215,7 +215,7 @@ CellularMux::ConfState CellularMux::baudDetectProcedure(uint16_t timeout_s) return ConfState::Failure; } -CellularMux::ConfState CellularMux::confProcedure() +CellularMux::ConfState CellularMux::confProcedure(bool disableRF) { LOG_DEBUG("Configuring modem..."); @@ -269,7 +269,7 @@ CellularMux::ConfState CellularMux::confProcedure() } } - if (!parser->cmd(at::AT::CFUN_DISABLE_TRANSMITTING)) { + if (disableRF && !parser->cmd(at::AT::CFUN_DISABLE_TRANSMITTING)) { return ConfState::Failure; } diff --git a/module-cellular/modem/mux/CellularMux.h b/module-cellular/modem/mux/CellularMux.h index c7ef3f88fb2cd007ab6c953c18655ef4dcd924ae..82c124a26c1fa0959b14acdb21df0580fd0719ef 100644 --- a/module-cellular/modem/mux/CellularMux.h +++ b/module-cellular/modem/mux/CellularMux.h @@ -305,7 +305,7 @@ class CellularMux ConfState baudDetectOnce(); ConfState baudDetectProcedure(uint16_t timeout_s = 30); - ConfState confProcedure(); + ConfState confProcedure(bool disableRF); ConfState audioConfProcedure(); ConfState startMultiplexer(); diff --git a/module-services/service-cellular/RequestFactory.cpp b/module-services/service-cellular/RequestFactory.cpp index 7d9167364201c5f5f8c4830f7ede495a33d5e5b8..4419bdf6f234a58c6345dbf609ff9f1f4d2c12ca 100644 --- a/module-services/service-cellular/RequestFactory.cpp +++ b/module-services/service-cellular/RequestFactory.cpp @@ -81,8 +81,7 @@ namespace cellular std::unique_ptr RequestFactory::create() { - auto isRegisteredToNetwork = isConnectedToNetwork(); - if (auto req = emergencyCheck(); req && isRegisteredToNetwork) { + if (auto req = emergencyCheck(); req) { return req; } @@ -132,6 +131,7 @@ namespace cellular if (!simInserted) { return std::make_unique(RejectRequest::RejectReason::NoSim, request); } + auto isRegisteredToNetwork = isConnectedToNetwork(); if (!isRegisteredToNetwork) { return std::make_unique(RejectRequest::RejectReason::NoNetworkConnection, request); } diff --git a/module-services/service-cellular/ServiceCellular.cpp b/module-services/service-cellular/ServiceCellular.cpp index 089f0bdc9e41ad3efa301684ddc84d02fb1257d5..b5a7dff0fc0c26c85420c30b4dcbd26b522fc22f 100644 --- a/module-services/service-cellular/ServiceCellular.cpp +++ b/module-services/service-cellular/ServiceCellular.cpp @@ -842,8 +842,15 @@ bool ServiceCellular::handle_power_down() bool ServiceCellular::handle_start_conf_procedure() { + auto simSelected = settings->getValue(settings::SystemProperties::activeSim, settings::SettingsScope::Global); + auto disableRF = false; + if (simSelected.empty()) { + LOG_ERROR("No sim selected, disabling RF module."); + disableRF = true; + } + // Start configuration procedure, if it's first run modem will be restarted - auto confRet = cmux->confProcedure(); + auto confRet = cmux->confProcedure(disableRF); if (confRet == CellularMux::ConfState::Success) { priv->state->set(State::ST::AudioConfigurationProcedure); return true; diff --git a/module-services/service-cellular/tests/unittest_request_factory.cpp b/module-services/service-cellular/tests/unittest_request_factory.cpp index 977fc10a3214fe32c21a0a95057423661ce7432f..7fc00b75a7bd391afd27ba3a1c3e8c621d715e2c 100644 --- a/module-services/service-cellular/tests/unittest_request_factory.cpp +++ b/module-services/service-cellular/tests/unittest_request_factory.cpp @@ -51,14 +51,7 @@ TEST_CASE("Emergency handling") // no SIM and SIM emergency number / sim inserted {false, true, true, true, true, std::nullopt, typeid(CallRequest).name()}, // no SIM and SIM emergency number / sim inserted / no network connection - {false, - true, - true, - true, - false, - RejectRequest::RejectReason::NoNetworkConnection, - typeid(RejectRequest).name(), - ""}, + {true, true, true, true, false, std::nullopt, typeid(CallRequest).name()}, // no SIM emergency number / sim inserted {false, false, true, true, true, std::nullopt, typeid(CallRequest).name()}, // SIM emergency number / sim inserted