M module-cellular/modem/mux/CellularMux.cpp => module-cellular/modem/mux/CellularMux.cpp +4 -0
@@ 269,6 269,10 @@ CellularMux::ConfState CellularMux::confProcedure()
}
}
+ if (!parser->cmd(at::AT::CFUN_DISABLE_TRANSMITTING)) {
+ return ConfState::Failure;
+ }
+
return ConfState ::Success;
}
M module-services/service-cellular/ServiceCellular.cpp => module-services/service-cellular/ServiceCellular.cpp +0 -7
@@ 861,11 861,6 @@ bool ServiceCellular::handle_cellular_priv_init()
interval)) {
connectionManager->setInterval(std::chrono::minutes{interval});
}
- if (!connectionManager->onPhoneModeChange(phoneModeObserver->getCurrentPhoneMode())) {
- priv->state->set(State::ST::Failed);
- LOG_ERROR("Failed to handle phone mode");
- return false;
- }
priv->state->set(State::ST::APNConfProcedure);
return true;
}
@@ 1252,8 1247,6 @@ bool ServiceCellular::handle_URCReady()
auto channel = cmux->get(CellularMux::Channel::Commands);
bool ret = true;
- priv->requestNetworkTimeSettings();
-
ret = ret && channel->cmd(at::AT::ENABLE_NETWORK_REGISTRATION_URC);
bus.sendMulticast<cellular::msg::notification::ModemStateChanged>(cellular::api::ModemState::Ready);
M module-services/service-cellular/src/ServiceCellularPriv.cpp => module-services/service-cellular/src/ServiceCellularPriv.cpp +5 -0
@@ 58,6 58,10 @@ namespace cellular::internal
owner->bus.sendMulticast<notification::UnhandledCME>(code);
};
simCard->onSimNotPresent = [this]() { owner->bus.sendMulticast<notification::SimNotInserted>(); };
+ simCard->onSimSelected = [this]() {
+ owner->connectionManager->onPhoneModeChange(owner->phoneModeObserver->getCurrentPhoneMode());
+ requestNetworkTimeSettings();
+ };
}
void ServiceCellularPriv::connectSimCard()
@@ 70,6 74,7 @@ namespace cellular::internal
auto msg = static_cast<request::sim::SetActiveSim *>(request);
auto result = simCard->handleSetActiveSim(msg->sim);
owner->simTimer.start();
+ simCard->handleSimCardSelected();
return std::make_shared<request::sim::SetActiveSim::Response>(result);
});
owner->connect(typeid(request::sim::GetLockState), [&](sys::Message *) -> sys::MessagePointer {
M module-services/service-cellular/src/SimCard.cpp => module-services/service-cellular/src/SimCard.cpp +12 -0
@@ 352,5 352,17 @@ namespace cellular
}
}
}
+ void SimCard::handleSimCardSelected()
+ {
+ if (!isSimSelected) {
+ isSimSelected = true;
+ if (onSimSelected) {
+ onSimSelected();
+ }
+ else {
+ LOG_ERROR("onSimSelected callback is missing");
+ }
+ }
+ }
} // namespace service
} // namespace cellular
M module-services/service-cellular/src/SimCard.hpp => module-services/service-cellular/src/SimCard.hpp +6 -0
@@ 162,6 162,10 @@ namespace cellular::service
void handleSimInsertionNotification(at::SimInsertedStatus status);
/**
+ * Handles post sim selection actions
+ */
+ void handleSimCardSelected();
+ /**
* Notification events
*/
std::function<void()> onSimReady;
@@ 171,6 175,7 @@ namespace cellular::service
std::function<void()> onSimEvent;
std::function<void(unsigned int code)> onUnhandledCME;
std::function<void()> onSimNotPresent;
+ std::function<void()> onSimSelected;
private:
/** SIM card initialization sequence
@@ 242,6 247,7 @@ namespace cellular::service
std::optional<api::SimSlot> sim = std::nullopt;
std::optional<at::SimInsertedStatus> simInserted = std::nullopt;
bool simSelectInProgress = false;
+ bool isSimSelected = false;
};
} // namespace cellular::service